Rückblick – Mitarbeiter-Hierarchie
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 desDeveloperaufzubauen, indem Sie', Leading [projectCount] projects'anhängen.
- Eine
main.dart: Importieren Sie Ihre Mitarbeiter-Datei und erstellen Sie Instanzen von jedem Mitarbeitertyp:- Erstellen Sie einen
Employeemit dem Namen'Alice', dem Gehalt50000.0und der ID101. - Erstellen Sie einen
Managermit dem Namen'Bob', dem Gehalt75000.0, der ID102und der teamSize8. - 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 dem projectCount3. - Geben Sie das Ergebnis des Aufrufs von
getDetails()für jeden Mitarbeiter aus, eine pro Zeile.
- Erstellen Sie einen
Beachten Sie, wie TeamLead eine 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, Team: 8 members
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: Erstellen Sie einen Employee mit dem Namen 'Alice', Gehalt 50000.0 und ID 101
// TODO: Erstellen Sie einen Manager mit dem Namen 'Bob', Gehalt 75000.0, ID 102 und teamSize 8
// TODO: Erstellen Sie einen Developer mit dem Namen 'Carol', Gehalt 65000.0, ID 103 und language 'Dart'
// TODO: Erstellen Sie einen TeamLead mit dem Namen 'David', Gehalt 80000.0, ID 104, language 'Python' und projectCount 3
// TODO: Geben Sie 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 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