Menu
Coddy logo textTech

Vue d’ensemble et structure du projet

Fait partie de la section Programmation Orientée Objet du Journey GO de Coddy. Leçon 98 sur 107.

challenge icon

Défi

Facile

Commençons le projet de système de gestion de bibliothèque en mettant en place la structure fondamentale ! Dans cette première étape, tu vas créer l'ossature de base qui prendra en charge toutes les fonctionnalités que nous construirons dans les prochaines leçons.

Tu organiseras ton code dans trois fichiers afin d'établir une séparation claire des responsabilités :

  • book.go : définis une structure Book qui représente un livre de bibliothèque. Chaque livre doit avoir un ID, un Title, un Author et un statut Available (booléen). Crée une fonction constructeur NewBook qui prend l'identifiant, le titre et l'auteur comme paramètres et renvoie un pointeur vers un nouveau Book avec Available défini sur true par défaut. Ajoute également une méthode String() qui renvoie les informations du livre au format suivant : [ID] Title by Author
  • user.go : définis une structure User représentant un membre de la bibliothèque avec les champs ID, Name et Email. Crée une fonction constructeur NewUser qui prend les trois valeurs et renvoie un pointeur vers un nouvel User. Ajoute une méthode String() qui renvoie : User: Name (Email)
  • main.go : rassemble tout en lisant les entrées pour créer des livres et des utilisateurs, puis affiche leurs informations.

    Lis le nombre de livres à créer. Pour chaque livre, lis son identifiant, son titre et son auteur sur des lignes séparées. Lis ensuite le nombre d'utilisateurs et, pour chaque utilisateur, lis son identifiant, son nom et son adresse e-mail sur des lignes séparées.

    Après avoir créé tous les éléments, affiche la représentation sous forme de chaîne de chaque livre sur sa propre ligne, suivie de la représentation sous forme de chaîne de chaque utilisateur sur sa propre ligne.

Les entrées suivantes seront fournies :

  • Nombre de livres
  • Pour chaque livre : ID, titre et auteur (chacun sur une ligne séparée)
  • Nombre d'utilisateurs
  • Pour chaque utilisateur : ID, nom et adresse e-mail (chacun sur une ligne séparée)

Par exemple, étant donné :

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

Ta sortie doit être :

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

Et étant donné :

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

Ta sortie doit être :

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

Cette base établit les modèles de données fondamentaux que tu développeras tout au long du projet. Dans la prochaine leçon, tu amélioreras ces structures et ajouteras la fonctionnalité d'emprunt !

Essayez vous-même

package main

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

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

	// Lire le nombre de livres
	numBooksStr, _ := reader.ReadString('\n')
	numBooks, _ := strconv.Atoi(strings.TrimSpace(numBooksStr))

	// TODO: Créer un slice pour stocker les livres

	// TODO: Lire les informations de chaque livre (ID, titre, auteur sur des lignes séparées)
	// et créer des objets Book en utilisant 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: Créer un nouveau livre et l'ajouter à votre slice
	}

	// Lire le nombre d'utilisateurs
	numUsersStr, _ := reader.ReadString('\n')
	numUsers, _ := strconv.Atoi(strings.TrimSpace(numUsersStr))

	// TODO: Créer un slice pour stocker les utilisateurs

	// TODO: Lire les informations de chaque utilisateur (ID, nom, email sur des lignes séparées)
	// et créer des objets User en utilisant 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: Créer un nouvel utilisateur et l'ajouter à votre slice
	}

	// TODO: Afficher la représentation sous forme de chaîne de chaque livre

	// TODO: Afficher la représentation sous forme de chaîne de chaque utilisateur
	fmt.Println("TODO: Print output here")
}

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur Go en ligne