Interface d’administration
Fait partie de la section Programmation orientée objet du Journey GDScript de Coddy. Leçon 60 sur 65.
Défi
MoyenFournis au bibliothécaire un rapport statistique. Garde tout ce que tu as écrit lors des étapes précédentes ; seul library.gd change.
Écris get_statistics() -> Dictionary dans Library. Cette fonction renvoie un dictionnaire contenant cinq valeurs int :
"total_books": le nombre de livres"available_books": les livres dontavailablevauttrue"borrowed_books": les livres qui sont empruntés"total_users": le nombre d’utilisateurs"users_with_books": les utilisateurs qui ont emprunté au moins un livre
Le code fourni ajoute la commande stats, qui affiche les cinq valeurs. Pour cette entrée :
Community
book The Great Gatsby|F. Scott Fitzgerald|123456
book To Kill a Mockingbird|Harper Lee|789012
book 1984|George Orwell|345678
user U001|Alice
user U002|Bob
user U003|Charlie
borrow 123456|U001
borrow 789012|U001
borrow 345678|U002
statsla sortie est :
Book borrowed successfully
Book borrowed successfully
Book borrowed successfully
Total Books: 3
Available Books: 0
Borrowed Books: 3
Total Users: 3
Users with Books: 2Ton code va dans book.gd, user.gd et library.gd. main.gd contient le code fourni pour les entrées et sorties et ne peut pas être modifié.
Essayez vous-même
extends Node
func _ready():
# Code d’entrée/sortie fourni : conservez-le tel quel
var library := Library.new(OS.read_string_from_stdin())
var line := OS.read_string_from_stdin()
while line != "":
var parts := line.split(" ", true, 1)
var fields: PackedStringArray = parts[1].split("|") if parts.size() > 1 else PackedStringArray()
match parts[0]:
"book":
library.add_book(Book.new(fields[0], fields[1], fields[2]))
"user":
library.add_user(User.new(fields[0], fields[1]))
"borrow":
print(library.borrow_book(fields[0], fields[1]))
"search":
var term: String = parts[1] if parts.size() > 1 else ""
var found: Array = library.search_by_title(term)
print("Results for '%s': %d" % [term, found.size()])
for book in found:
print("- ", book.title, " by ", book.author)
"stats":
var stats: Dictionary = library.get_statistics()
print("Total Books: ", stats["total_books"])
print("Available Books: ", stats["available_books"])
print("Borrowed Books: ", stats["borrowed_books"])
print("Total Users: ", stats["total_users"])
print("Users with Books: ", stats["users_with_books"])
"loans":
var reader: User = library.find_user(fields[0])
print(reader.user_name, " has borrowed:")
for isbn in reader.borrowed_isbns:
print("- ", library.find_book(isbn).title)
"holder":
var book: Book = library.find_book(fields[0])
if book.available:
print(book.title, " is on the shelf")
else:
print(book.title, " is borrowed by ", library.find_user(book.borrower_id).user_name)
"books":
for book in library.books:
print(book)
"users":
for user in library.users:
print(user)
"show":
print(library)
line = OS.read_string_from_stdin()
Toutes les leçons de Programmation orientée objet
1Fondamentaux de la POO
Fichiers externesIntroduction à la POOClasses et objetsLe mot-clé selfMéthodesPropriétésConstructeur (_init)Récapitulatif - Calculatrice simple4Polymorphisme
Retour sur la redéfinition des méthodesTypage canardClasses et méthodes abstraitesConception d’interfacesRécapitulatif – Calculateur de formes7Signaux
Qu’est-ce qu’un signal ?Déclarer et émettreSe connecter aux signauxSignaux avec argumentsRécapitulatif - système de santé10Patrons de conception, partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode modèlePatron ÉtatPatron Composite2Propriétés de classe
Variables d’instance et variables statiquesFonctions statiquesSetters de propriétésGetters de propriétésPrivé par conventionRécapitulatif - Gestionnaire de comptes bancaires5Encapsulation
Membres publics et privésValidation avec les méthodes setterMasquage de l’informationPropriétés en lecture seuleRécapitulatif - Système de dossiers étudiants8Concepts avancés de la POO
Composition ou héritageClasses internesLes nœuds comme composantsRefCounted ou NodeEnums dans les classes11Projet : Gestion de bibliothèque
Présentation du projetClasses Livre et Utilisateur3Héritage
Héritage de baseLe mot-clé superRedéfinition de méthodesChaînes d’héritageVérifier les types avec isRécapitulatif – Hiérarchie des employés6Méthodes spéciales
Introduction aux méthodes virtuellesLa méthode _to_stringItérateurs personnalisésRécapitulatif – Liste personnalisée9Patrons de conception, partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FactoryPatron ObserverPatron StrategyEntraînez-vous par vous-même : Compilateur GDScript en ligne