Buch- und Benutzerklassen
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy — Lektion 102 von 110.
Aufgabe
EinfachIn der vorherigen Lektion haben Sie eine Book-Klasse mit grundlegenden Eigenschaften und einer toString()-Methode erstellt. Jetzt ist es an der Zeit, Ihr Bibliothekssystem zu erweitern, indem Sie eine User-Klasse hinzufügen, um Bibliotheksmitglieder zu repräsentieren, die Bücher ausleihen können.
Sie müssen eine neue Datei erstellen und Ihre bestehenden Dateien aktualisieren:
book.dart: Erweitern Sie Ihre bestehendeBook-Klasse, indem Sie eineisAvailable-Eigenschaft (boolean) hinzufügen, die standardmäßig auftruegesetzt ist. Dies wird verfolgen, ob ein Buch ausgeliehen werden kann.user.dart: Erstellen Sie eine neueUser-Klasse, um Bibliotheksmitglieder zu repräsentieren. Jeder Benutzer sollte eineid(String), einenname(String) und eineborrowedBooks-Liste haben, dieBook-Objekte enthält. Fügen Sie einen Konstruktor hinzu, der die id und den Namen initialisiert, mit einer leeren Liste für ausgeliehene Bücher. Überschreiben SietoString(), um das FormatUser [id]: name (X books borrowed)zurückzugeben, wobei X die Anzahl der ausgeliehenen Bücher ist.main.dart: Importieren Sie sowohl Ihre Buch- als auch Ihre Benutzerdateien. Erstellen Sie ein Buch mit der ISBN978-0-13-468599-1, dem TitelThe Pragmatic Programmerund dem AutorDavid Thomas. Erstellen Sie einen Benutzer mit der idU001und dem NamenAlice Johnson. Drucken Sie das Buch aus und geben Sie dann aus, ob es verfügbar ist, unter Verwendung des FormatsAvailable: trueoderAvailable: false. Drucken Sie den Benutzer aus. Fügen Sie dann das Buch der Liste der ausgeliehenen Bücher des Benutzers hinzu, setzen SieisAvailabledes Buches auffalseund drucken Sie den Benutzer erneut aus, um die aktualisierte Anzahl der Bücher anzuzeigen.
Dies stellt die Beziehung zwischen Büchern und Benutzern her, auf der Sie aufbauen werden, wenn Sie in der nächsten Lektion das vollständige Ausleihsystem implementieren!
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 this-SchlüsselwortMethodenInstanzvariablenKonstruktor-GrundlagenWiederholung – Einfacher Taschenrechner4Null-Sicherheit
Einführung in Null-SicherheitNullable vs. Non-NullableDie ? und ! OperatorenLate-Schlüsselwort & Null-SicherheitNull-aware OperatorenNull-Sicherheit in KlassenZusammenfassung – Benutzerprofil-System7Abstrakte Klassen & Interfaces
Abstrakte KlassenAbstrakte MethodenInterfaces in DartImplizite InterfacesImplementieren vs. ErweiternMehrfache InterfacesRückblick – Shape Calculator10Collections & Generics
Überblick über List, Set und MapTypsichere CollectionsGenerische KlassenGenerische MethodenGenerische ConstraintsIterable & IteratorZusammenfassung – Generische Speicherung13Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungExtension MethodsCallable ClassesSealed Classes (Dart 3)Records (Dart 3)Patterns & Matching (3.0)Enums mit Methoden16Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen2Konstruktoren in Dart
Standard-KonstruktorBenannte KonstruktorenInitialisierungslistenKonstante KonstruktorenFactory-KonstruktorenWeiterleitende KonstruktorenZusammenfassung – Shape Builder5Kapselung
Öffentliche vs. private MemberDie _ Präfix-KonventionSichtbarkeit auf Library-EbeneGetter & Setter im DetailInformation HidingRückblick – Schülerdatensätze8Mixins
Einführung in MixinsMixins erstellenMehrere Mixins verwendenDas on-Schlüsselwort in MixinsMixin vs. VererbungMixin vs. InterfaceZusammenfassung - Tiersystem11Spezielle Methoden
toString() überschreibenhashCode & == überschreibenComparable-Interfacecall()-MethodenoSuchMethod überschreibenZusammenfassung – Eigene Collection14Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterObserver-MusterStrategy-Muster3Klasseneigenschaften
Instanz- vs. statische MemberFinal & Const FelderLate-VariablenStatische Methoden & FelderGetter und SetterZusammenfassung – Bankkonto-Manager6Vererbung
Grundlagen der VererbungDas super-SchlüsselwortMethoden überschreibenDie @override-AnnotationDas final-Klassen-SchlüsselwortKonstruktoren & VererbungRückblick – Mitarbeiter-Hierarchie9Polymorphismus
Polymorphismus-GrundlagenPolymorphismus über InterfacesTypprüfung zur LaufzeitDie is & as OperatorenDas covariant SchlüsselwortZusammenfassung – Payment Processor