Buch- und Benutzerklassen
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 102 von 110.
Aufgabe
EinfachIn der vorherigen Lektion hast du eine Book-Klasse mit grundlegenden Eigenschaften und einer toString()-Methode erstellt. Jetzt ist es an der Zeit, dein Bibliothekssystem zu erweitern, indem du eine User-Klasse hinzufügst, die Bibliotheksmitglieder repräsentiert, die Bücher ausleihen können.
Du musst eine neue Datei erstellen und deine vorhandenen Dateien aktualisieren:
book.dart: Erweitere deine vorhandeneBook-Klasse, indem du eineisAvailable-Eigenschaft (boolesch) hinzufügst, die standardmäßig auftruegesetzt wird. Damit wird verfolgt, ob ein Buch ausgeliehen werden kann.user.dart: Erstelle eine neueUser-Klasse, die Bibliotheksmitglieder repräsentiert. Jeder Benutzer sollte eineid(String), einenname(String) und eineborrowedBooks-Liste haben, dieBook-Objekte enthält. Füge einen Konstruktor hinzu, der die ID und den Namen initialisiert und eine leere Liste für ausgeliehene Bücher verwendet. ÜberschreibetoString(), sodass das FormatUser [id]: name (X books borrowed)zurückgegeben wird, wobei X die Anzahl der ausgeliehenen Bücher ist.main.dart: Importiere sowohl deine Buch- als auch deine Benuterdatei. Erstelle ein Buch mit der ISBN978-0-13-468599-1, dem TitelThe Pragmatic Programmerund dem AutorDavid Thomas. Erstelle einen Benutzer mit der IDU001und dem NamenAlice Johnson. Gib das Buch aus und anschließend, ob es verfügbar ist, und zwar im FormatAvailable: trueoderAvailable: false. Gib den Benutzer aus. Füge dann das Buch zur Liste der ausgeliehenen Bücher des Benutzers hinzu, setzeisAvailabledes Buches auffalseund gib den Benutzer erneut aus, um die aktualisierte Anzahl der Bücher anzuzeigen.
Damit wird die Beziehung zwischen Büchern und Benutzern hergestellt, auf der du in der nächsten Lektion beim Implementieren des vollständigen Ausleihsystems aufbauen wirst!
Erwartete Ausgabe:
[978-0-13-468599-1] The Pragmatic Programmer by David Thomas
Available: true
User U001: Alice Johnson (0 books borrowed)
User U001: Alice Johnson (1 books borrowed)Probier es selbst
import 'book.dart';
// TODO: Importiere user.dart
void main() {
// TODO: Erstelle ein Buch mit der ISBN '978-0-13-468599-1', dem Titel 'The Pragmatic Programmer' und dem Autor 'David Thomas'
// TODO: Erstelle einen Benutzer mit der id 'U001' und dem Namen 'Alice Johnson'
// TODO: Gib das Buch aus
// TODO: Gib aus, ob das Buch verfügbar ist, verwende das Format: Available: true/false
// TODO: Gib den Benutzer aus
// TODO: Füge das Buch zur Liste borrowedBooks des Benutzers hinzu
// TODO: Setze isAvailable des Buches auf false
// TODO: Gib den Benutzer erneut aus, um die aktualisierte Anzahl der Bücher anzuzeigen
}
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienBibliotheken & ImportsEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort thisMethodenInstanzvariablenGrundlagen von KonstruktorenRückblick – Einfacher Taschenrechner4Null-Sicherheit
Einführung in die Null-SicherheitNullable vs. Non-NullableDie Operatoren ? und !Late-Schlüsselwort und Null-SicherheitNull-bewusste OperatorenNull-Sicherheit in KlassenRückblick – Benutzers профilsystem7Abstrakte Klassen & Interfaces
Abstrakte KlassenAbstrakte MethodenInterfaces in DartImplizite InterfacesImplementieren vs. ErweiternMehrere InterfacesZusammenfassung – Formrechner10Collections & Generics
Übersicht über List, Set und MapTypsichere CollectionsGenerische KlassenGenerische MethodenGenerische EinschränkungenIterable & IteratorRückblick – Generischer Speicher13Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungErweiterungsmethodenAufrufbare KlassenVersiegelte Klassen (Dart 3)Records (Dart 3)Muster & Matching (3.0)Enums mit Methoden16Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen2Konstruktoren in Dart
StandardkonstruktorBenannte KonstruktorenInitialisierungslistenKonstantenkonstruktorenFactory-KonstruktorenWeiterleitende KonstruktorenRückblick – Shape Builder5Kapselung
Öffentliche vs. private MemberDie _-Präfix-KonventionBibliotheksweite SichtbarkeitTiefergehende Getter & SetterInformationsverbergungRückblick – Studierendendaten8Mixins
Einführung in MixinsMixins erstellenMehrere Mixins verwendenDas Schlüsselwort „on“ in MixinsMixin vs. VererbungMixin vs. SchnittstelleRückblick – Tiersystem11Spezielle Methoden
toString()-ÜberschreibunghashCode- & ==-ÜberschreibungComparable-Schnittstellecall()-MethodenoSuchMethod-ÜberschreibungWiederholung – Benutzerdefinierte Collection14Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFabrikmusterBeobachtermusterStrategiemuster17Abschließende Herausforderungen
E-Learning-PlattformBankingsystemSpielcharaktersystemFahrzeugvermietung3Klassen-Eigenschaften
Instanz- vs. statische MemberFinal- und Const-FelderLate-VariablenStatische Methoden und FelderGetter und SetterRückblick – Bankkontoverwaltung6Vererbung
Grundlegende VererbungDas Schlüsselwort superMethodenüberschreibungDie Annotation @overrideDas Schlüsselwort final für KlassenKonstruktoren und VererbungZusammenfassung – Mitarbeiterhierarchie9Polymorphismus
Grundlagen des PolymorphismusPolymorphismus über InterfacesLaufzeit-TypüberprüfungDie Operatoren is & asCovariant-SchlüsselwortZusammenfassung – ZahlungsprozessorÜbe selbstständig: Online-Dart-Compiler