Projektübersicht
Teil des Abschnitts Objektorientierte Programmierung der GDScript-Journey von Coddy. Lektion 56 von 65.
Aufgabe
MittelIn diesem Projekt erstellst du in sechs Schritten ein Bibliotheksverwaltungssystem: eine Bibliothek, Bücher und Benutzer, Ausleihe, Suche, Statistiken und Rückgaben. Jeder Schritt beginnt mit deinen Dateien aus dem vorherigen Schritt.
In diesem Schritt erstellst du die Klasse Library in library.gd. Der Startercode deklariert bereits ihre drei Eigenschaften:
library_name: der Name der Bibliothekbooksundusers: zweiArray[String], die zunächst leer sind. Vorerst enthalten sie Titel und Benutzernamen.
Vervollständige die beiden Methoden:
- Der Konstruktor
_init(library_name)speichert den Namen in der Eigenschaftlibrary_name. _to_string()gibtNAME Library (books: N, users: M)zurück, wobeiNundMdie Größen der beiden Arrays sind.
Der bereitgestellte Code liest den Bibliotheksnamen aus der ersten Zeile und danach einen Befehl pro Zeile ein: book TITLE und user NAME fügen Einträge zu den Arrays hinzu, info gibt die drei Eigenschaften aus und show gibt die Bibliothek aus. Für diese Eingabe:
Community
info
book Dune
user Ada
showlautet die Ausgabe:
Name: Community
Books: 0
Users: 0
Community Library (books: 1, users: 1)Dein Code gehört in library.gd. main.gd enthält den bereitgestellten Ein-/Ausgabecode und kann nicht bearbeitet werden.
Probier es selbst
extends Node
func _ready():
# Vorgegebener Ein-/Ausgabecode: unverändert lassen
var library := Library.new(OS.read_string_from_stdin())
var line := OS.read_string_from_stdin()
while line != "":
var parts := line.split(" ", true, 1)
match parts[0]:
"book":
library.books.append(parts[1])
"user":
library.users.append(parts[1])
"info":
print("Name: ", library.library_name)
print("Books: ", library.books.size())
print("Users: ", library.users.size())
"show":
print(library)
line = OS.read_string_from_stdin()
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort selfMethodenEigenschaftenKonstruktor (_init)Wiederholung – Einfacher Taschenrechner4Polymorphie
Methodenüberschreibung erneut betrachtetDuck-TypisierungAbstrakte Klassen und MethodenSchnittstellendesignRückblick – Formrechner2Klassenattribute
Instanz- vs. statische VariablenStatische FunktionenProperty-SetterProperty-GetterPrivat nach KonventionWiederholung – Bankkontenverwaltung5Kapselung
Öffentliche und private MemberValidierung mit SetternInformationsverbergenSchreibgeschützte EigenschaftenRückblick – System zur Schülerverwaltung8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungInnere KlassenNodes als KomponentenRefCounted vs. NodeEnums in Klassen11Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen3Vererbung
Grundlegende VererbungDas Schlüsselwort superMethodenüberschreibungVererbungskettenTypprüfungen mit isWiederholung – Mitarbeiterhierarchie6Spezielle Methoden
Einführung in virtuelle MethodenDie _to_string-MethodeBenutzerdefinierte IteratorenRückblick – Benutzerdefinierte Liste9Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBeobachter-MusterStrategie-Muster12Abschließende Herausforderungen
E-Learning-PlattformBankensystemEntwicklung von SpielfigurenFahrzeugvermietungÜbe selbstständig: Online-GDScript-Compiler