Riepilogo - Gerarchia dei dipendenti
Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 42 di 110.
Sfida
FacileCostruiamo un sistema completo di gerarchia dei dipendenti che riunisca tutti i concetti di ereditarietà di questo capitolo. Creerai una classe base per i dipendenti e la estenderai con ruoli specializzati, ognuno con comportamenti unici.
Organizzerai il codice in due file:
employee.dart: definisci qui la gerarchia dei dipendenti:- Una classe base
Employeecon le proprietàString name,double salaryeint id. Includi un costruttore e un metodogetDetails()che restituisce'[name] (ID: [id]) - Salary: $[salary]' - Una classe
Managerche estendeEmployeee aggiunge la proprietàint teamSize. Usa i parametri super per i campi ereditati. Esegui l'override digetDetails()in modo che restituisca i dettagli della classe genitore seguiti da', Team: [teamSize] members' - Una classe
Developerche estendeEmployeee aggiunge la proprietàString language. Esegui l'override digetDetails()in modo che restituisca i dettagli della classe genitore seguiti da', Specializes in [language]' - Una classe
TeamLeadche estendeDevelopere aggiunge la proprietàint projectCount. Esegui l'override digetDetails()per basarti sulla versione diDeveloper, aggiungendo', Leading [projectCount] projects'
- Una classe base
main.dart: importa il file dei dipendenti e crea istanze di ciascun tipo di dipendente:- Crea un
Employeecon nome'Alice', stipendio50000.0e ID101 - Crea un
Managercon nome'Bob', stipendio75000.0, ID102e teamSize8 - Crea un
Developercon nome'Carol', stipendio65000.0, ID103e language'Dart' - Crea un
TeamLeadcon nome'David', stipendio80000.0, ID104, language'Python'e projectCount3 - Stampa il risultato della chiamata a
getDetails()su ciascun dipendente, uno per riga
- Crea un
Nota come TeamLead dimostri l'ereditarietà multilivello: estende Developer, che a sua volta estende Employee. Ogni livello aggiunge i propri dettagli preservando le informazioni delle classi genitore usando super.
Output previsto:
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 projectsProvalo tu
import 'employee.dart';
void main() {
// TODO: Crea un Employee con name 'Alice', salary 50000.0 e id 101
// TODO: Crea un Manager con name 'Bob', salary 75000.0, id 102 e teamSize 8
// TODO: Crea un Developer con name 'Carol', salary 65000.0, id 103 e language 'Dart'
// TODO: Crea un TeamLead con name 'David', salary 80000.0, id 104, language 'Python' e projectCount 3
// TODO: Stampa getDetails() per ogni dipendente, uno per riga
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniLibrerie e importazioniIntroduzione alla programmazione orientata agli oggettiClassi e oggettiLa parola chiave thisMetodiVariabili di istanzaFondamenti dei costruttoriRiepilogo - Calcolatrice semplice4Sicurezza dei valori null
Introduzione alla sicurezza dei valori nullNullable e non nullableGli operatori ? e !La keyword late e la sicurezza dei valori nullOperatori null-awareSicurezza dei valori null nelle classiRiepilogo - Sistema di profili utente7Classi astratte e interfacce
Classi astratteMetodi astrattiInterfacce in DartInterfacce impliciteImplementare vs estendereInterfacce multipleRiepilogo - Calcolatore di forme10Collezioni e generici
Panoramica di List, Set e MapCollezioni sicure rispetto ai tipiClassi genericheMetodi genericiVincoli sui genericiIterable e IteratorRiepilogo - Archiviazione generica13Concetti avanzati di OOP
Composizione vs ereditarietàMetodi di estensioneClassi chiamabiliClassi sealed (Dart 3)Record (Dart 3)Pattern e matching (3.0)Enum con metodi16Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e Utente2I costruttori in Dart
Costruttore predefinitoCostruttori con nomeListe di inizializzazioneCostruttori costantiCostruttori factoryCostruttori di reindirizzamentoRiepilogo - Crea forme5Incapsulamento
Membri pubblici e privatiConvenzione del prefisso _Visibilità a livello di libreriaApprofondimento su getter e setterNascondimento delle informazioniRiepilogo - Registri degli studenti8Mixin
Introduzione ai MixinCreare MixinUsare più MixinParola chiave on nei MixinMixin vs ereditarietàMixin vs interfacciaRiepilogo - Sistema animale11Metodi speciali
Sovrascrittura di toString()Sovrascrittura di hashCode e ==Interfaccia ComparableMetodo call()Sovrascrittura di noSuchMethodRiepilogo - Collezione personalizzata14Modelli di progettazione Parte 1
Introduzione ai modelli di progettazioneSingletonFactoryObserverStrategy3Proprietà delle classi
Membri di istanza e staticiCampi final e constVariabili lateMetodi e campi staticiGetter e setterRiepilogo - Gestore di conti bancari6Ereditarietà
Ereditarietà di baseLa parola chiave superOverride dei metodiL’annotazione @overrideLa parola chiave final per le classiCostruttori ed ereditarietàRiepilogo - Gerarchia dei dipendenti9Polimorfismo
Fondamenti di polimorfismoPolimorfismo tramite interfacceControllo del tipo a runtimeGli operatori is e asParola chiave covariantRiepilogo - Elaboratore di pagamenti12OOP asincrona
Future e async/awaitNozioni di base sugli streamController degli streamCostruttori asincroniAsync nei metodi di classeRiepilogo - Recupero dei dati15Pattern di progettazione Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern RepositoryEsercitati da solo: Compilatore Dart online