Zusammenfassung – Mitarbeiterhierarchie
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 42 von 110.
Aufgabe
EinfachLassen Sie uns ein vollständiges Mitarbeiter-Hierarchiesystem aufbauen, das alle Vererbungskonzepte aus diesem Kapitel zusammenführt. Sie werden eine Basisklasse für Mitarbeiter erstellen und diese um spezialisierte Rollen erweitern, von denen jede ihr eigenes, einzigartiges Verhalten besitzt.
Sie werden Ihren Code in zwei Dateien organisieren:
employee.dart: Definieren Sie hier Ihre Mitarbeiter-Hierarchie:- Eine
Employee-Basisklasse mit den EigenschaftenString name,double salaryundint id. Fügen Sie einen Konstruktor und eine MethodegetDetails()hinzu, die'[name] (ID: [id]) - Salary: $[salary]'zurückgibt. - Eine
Manager-Klasse, dieEmployeeerweitert und eine Eigenschaftint teamSizehinzufügt. Verwenden Sie Super-Parameter für die geerbten Felder. Überschreiben SiegetDetails(), um die Details der Elternklasse zurückzugeben, gefolgt von', Team: [teamSize] members'. - Eine
Developer-Klasse, dieEmployeeerweitert und eine EigenschaftString languagehinzufügt. Überschreiben SiegetDetails(), um die Details der Elternklasse zurückzugeben, gefolgt von', Specializes in [language]'. - Eine
TeamLead-Klasse, dieDevelopererweitert und eine Eigenschaftint projectCounthinzufügt. Überschreiben SiegetDetails(), um auf der Version vonDeveloperaufzubauen, indem Sie', Leading [projectCount] projects'anhängen.
- Eine
main.dart: Importieren Sie Ihre Mitarbeiter-Datei und erstellen Sie Instanzen jedes Mitarbeitertyps:- Erstellen Sie einen
Employeemit dem Namen'Alice', dem Gehalt50000.0und der ID101. - Erstellen Sie einen
Managermit dem Namen'Bob', dem Gehalt75000.0, der ID102und derteamSize8. - Erstellen Sie einen
Developermit dem Namen'Carol', dem Gehalt65000.0, der ID103und der Sprache'Dart'. - Erstellen Sie einen
TeamLeadmit dem Namen'David', dem Gehalt80000.0, der ID104, der Sprache'Python'und demprojectCount3. - Geben Sie das Ergebnis des Aufrufs von
getDetails()für jeden Mitarbeiter aus, eine pro Zeile.
- Erstellen Sie einen
Beachten Sie, wie TeamLead mehrstufige Vererbung demonstriert – sie erweitert Developer, welche wiederum Employee erweitert. Jede Ebene fügt ihre eigenen Details hinzu, während die Informationen der Elternklassen mithilfe von super erhalten bleiben.
Erwartete Ausgabe:
Alice (ID: 101) - Salary: $50000.0
Bob (ID: 102) - Salary: $75000.0, Team: 8 members
Carol (ID: 103) - Salary: $65000.0, Specializes in Dart
David (ID: 104) - Salary: $80000.0, Specializes in Python, Leading 3 projectsProbier es selbst
import 'employee.dart';
void main() {
// TODO: Erstelle einen Employee mit name 'Alice', salary 50000.0 und id 101
// TODO: Erstelle einen Manager mit name 'Bob', salary 75000.0, id 102 und teamSize 8
// TODO: Erstelle einen Developer mit name 'Carol', salary 65000.0, id 103 und language 'Dart'
// TODO: Erstelle einen TeamLead mit name 'David', salary 80000.0, id 104, language 'Python' und projectCount 3
// TODO: Gib getDetails() für jeden Mitarbeiter aus, eine pro Zeile
}
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