Menu
Coddy logo textTech

Panoramica e struttura del progetto

Fa parte della sezione Programmazione orientata agli oggetti del percorso GO di Coddy. Lezione 98 di 107.

challenge icon

Sfida

Facile

Iniziamo il progetto del Sistema di gestione della biblioteca impostando la struttura fondamentale! In questo primo passaggio, creerai l'impalcatura di base che supporterà tutte le funzionalità che svilupperemo nelle prossime lezioni.

Organizzerai il codice in tre file per garantire una chiara separazione delle responsabilità:

  • book.go: Definisci una struct Book che rappresenta un libro della biblioteca. Ogni libro deve avere un ID, un Title, un Author e uno stato Available (booleano). Crea una funzione costruttrice NewBook che accetta ID, titolo e autore come parametri e restituisce un puntatore a un nuovo Book con Available impostato su true per impostazione predefinita. Aggiungi anche un metodo String() che restituisce le informazioni del libro nel formato: [ID] Title by Author
  • user.go: Definisci una struct User che rappresenta un membro della biblioteca con i campi ID, Name ed Email. Crea una funzione costruttrice NewUser che accetta tutti e tre i valori e restituisce un puntatore a un nuovo User. Aggiungi un metodo String() che restituisce: User: Name (Email)
  • main.go: Metti insieme tutti gli elementi leggendo i dati di input per creare libri e utenti, quindi visualizzane le informazioni.

    Leggi il numero di libri da creare. Per ogni libro, leggi l'ID, il titolo e l'autore su righe separate. Poi leggi il numero di utenti e, per ogni utente, leggi l'ID, il nome e l'email su righe separate.

    Dopo aver creato tutti gli elementi, stampa la rappresentazione in stringa di ogni libro su una riga a sé, seguita dalla rappresentazione in stringa di ogni utente, anch'essa su una riga a sé.

Verranno forniti i seguenti input:

  • Numero di libri
  • Per ogni libro: ID, titolo e autore (ciascuno su una riga separata)
  • Numero di utenti
  • Per ogni utente: ID, nome ed email (ciascuno su una riga separata)

Per esempio, dato:

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

Il tuo output dovrebbe essere:

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

E dato:

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

Il tuo output dovrebbe essere:

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

Queste basi stabiliscono i modelli di dati fondamentali che amplierai nel corso del progetto. Nella prossima lezione, migliorerai queste struct e aggiungerai la funzionalità di prestito!

Provalo tu

package main

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

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

	// Leggi il numero di libri
	numBooksStr, _ := reader.ReadString('\n')
	numBooks, _ := strconv.Atoi(strings.TrimSpace(numBooksStr))

	// TODO: Crea una slice per memorizzare i libri

	// TODO: Leggi le informazioni di ogni libro (ID, titolo, autore su righe separate)
	// e crea oggetti 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: Crea un nuovo libro e aggiungilo alla tua slice
	}

	// Leggi il numero di utenti
	numUsersStr, _ := reader.ReadString('\n')
	numUsers, _ := strconv.Atoi(strings.TrimSpace(numUsersStr))

	// TODO: Crea una slice per memorizzare gli utenti

	// TODO: Leggi le informazioni di ogni utente (ID, nome, email su righe separate)
	// e crea oggetti 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: Crea un nuovo utente e aggiungilo alla tua slice
	}

	// TODO: Stampa la rappresentazione come stringa di ogni libro

	// TODO: Stampa la rappresentazione come stringa di ogni utente
	fmt.Println("TODO: Print output here")
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Go online