Menu
Coddy logo textTech

Descripción general y estructura del proyecto

Parte de la sección Programación Orientada a Objetos del Journey de GO de Coddy — lección 98 de 107.

challenge icon

Desafío

Fácil

¡Comencemos el proyecto del Sistema de Gestión de Biblioteca configurando la estructura fundamental! En este primer paso, crearás el andamiaje básico que soportará todas las funcionalidades que construiremos en las próximas lecciones.

Organizarás tu código en tres archivos para establecer una separación limpia de responsabilidades:

  • book.go: Define un struct Book que represente un libro de la biblioteca. Cada libro debe tener un ID, Title, Author, y un estado Available (booleano). Crea una función constructora NewBook que tome el ID, title, y author como parámetros y devuelva un puntero a un nuevo Book con Available establecido en true por defecto. También añade un método String() que devuelva la información del libro en el formato: [ID] Title by Author
  • user.go: Define un struct User que represente a un miembro de la biblioteca con los campos ID, Name, y Email. Crea una función constructora NewUser que tome los tres valores y devuelva un puntero a un nuevo User. Añade un método String() que devuelva: User: Name (Email)
  • main.go: Une todo leyendo la entrada para crear libros y usuarios, y luego muestra su información.

    Lee el número de libros a crear. Para cada libro, lee su ID, title, y author en líneas separadas. Luego lee el número de usuarios, y para cada usuario lee su ID, name, y email en líneas separadas.

    Después de crear todos los elementos, imprime la representación en cadena de cada libro en su propia línea, seguida de la representación en cadena de cada usuario en su propia línea.

Se proporcionarán las siguientes entradas:

  • Número de libros
  • Para cada libro: ID, title, y author (cada uno en líneas separadas)
  • Número de usuarios
  • Para cada usuario: ID, name, y email (cada uno en líneas separadas)

Por ejemplo, dado:

2
B001
The Go Programming Language
Alan Donovan
B002
Clean Code
Robert Martin
1
U001
Alice Smith
alice@library.com

Tu salida debería ser:

[B001] The Go Programming Language by Alan Donovan
[B002] Clean Code by Robert Martin
User: Alice Smith (alice@library.com)

Y dado:

1
B100
Design Patterns
Gang of Four
2
U001
Bob Jones
bob@email.com
U002
Carol White
carol@email.com

Tu salida debería ser:

[B100] Design Patterns by Gang of Four
User: Bob Jones (bob@email.com)
User: Carol White (carol@email.com)

Esta base establece los modelos de datos principales que ampliarás a lo largo del proyecto. ¡En la próxima lección, mejorarás estos structs y añadirás la funcionalidad de préstamo!

Pruébalo tú mismo

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	reader := bufio.NewReader(os.Stdin)

	// Leer el número de libros
	numBooksStr, _ := reader.ReadString('\n')
	numBooks, _ := strconv.Atoi(strings.TrimSpace(numBooksStr))

	// TODO: Crear un slice para almacenar libros

	// TODO: Leer la información de cada libro (ID, título, autor en líneas separadas)
	// y crear objetos Book usando NewBook
	for i := 0; i < numBooks; i++ {
		id, _ := reader.ReadString('\n')
		id = strings.TrimSpace(id)
		title, _ := reader.ReadString('\n')
		title = strings.TrimSpace(title)
		author, _ := reader.ReadString('\n')
		author = strings.TrimSpace(author)

		// TODO: Crear un nuevo libro y añadirlo a tu slice
	}

	// Leer el número de usuarios
	numUsersStr, _ := reader.ReadString('\n')
	numUsers, _ := strconv.Atoi(strings.TrimSpace(numUsersStr))

	// TODO: Crear un slice para almacenar usuarios

	// TODO: Leer la información de cada usuario (ID, nombre, email en líneas separadas)
	// y crear objetos User usando NewUser
	for i := 0; i < numUsers; i++ {
		id, _ := reader.ReadString('\n')
		id = strings.TrimSpace(id)
		name, _ := reader.ReadString('\n')
		name = strings.TrimSpace(name)
		email, _ := reader.ReadString('\n')
		email = strings.TrimSpace(email)

		// TODO: Crear un nuevo usuario y añadirlo a tu slice
	}

	// TODO: Imprimir la representación en cadena de cada libro

	// TODO: Imprimir la representación en cadena de cada usuario
	fmt.Println("TODO: Print output here")
}

Todas las lecciones de Programación Orientada a Objetos