Projektübersicht
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 101 von 110.
Aufgabe
EinfachIn diesem Kapitel erstellst du ein Bibliotheksverwaltungssystem, das Klassen, Kapselung und Entwurfsmuster zu einer funktionierenden Anwendung verbindet.
Beginnen wir mit der Einrichtung der Projektstruktur anhand einer einfachen Book-Klasse – der Grundlage, auf der alle zukünftigen Lektionen aufbauen werden.
Du wirst zwei Dateien erstellen:
book.dart: Definiere eineBook-Klasse mit drei Eigenschaften:isbn(String),title(String) undauthor(String). Füge einen Konstruktor hinzu, der alle drei Eigenschaften initialisiert, und überschreibe dietoString()-Methode, sodass sie die Informationen zum Buch im Format[isbn] title by authorzurückgibt.main.dart: Importiere deine Buchdatei und erstelle zwei Bücher, um zu überprüfen, ob deine Klasse korrekt funktioniert. Erstelle ein Buch mit der ISBN978-0-13-468599-1, dem TitelThe Pragmatic Programmerund dem AutorDavid Thomas. Erstelle ein zweites Buch mit der ISBN978-0-596-51774-8, dem TitelJavaScript: The Good Partsund dem AutorDouglas Crockford. Gib beide Bücher aus (dabei wird deinetoString()-Methode verwendet).
Diese einfache Struktur legt das Dateiorganisationsmuster fest, dem du im gesamten Projekt folgen wirst. In den kommenden Lektionen wirst du dies um Benutzerklassen, die Ausleihlogik und mehr erweitern!
Erwartete Ausgabe:
[978-0-13-468599-1] The Pragmatic Programmer by David Thomas
[978-0-596-51774-8] JavaScript: The Good Parts by Douglas CrockfordProbier es selbst
import 'book.dart';
void main() {
// TODO: Erstelle ein Buch mit ISBN '978-0-13-468599-1', Titel 'The Pragmatic Programmer' und Autor 'David Thomas'
// TODO: Erstelle ein zweites Buch mit ISBN '978-0-596-51774-8', Titel 'JavaScript: The Good Parts' und Autor 'Douglas Crockford'
// TODO: Gib beide Bücher aus (dies wird die toString() Methode verwenden)
}
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