Riepilogo - Gerarchia dei dipendenti
Fa parte della sezione Programmazione orientata agli oggetti del percorso Python di Coddy. Lezione 22 di 64.
Sfida
DifficileIn questa sfida implementerai un sistema di gerarchia dei dipendenti.
Dovrai completare i seguenti file:
person.py: implementa la classe basePersoncon nome, età e un metodo di presentazioneemployee.py: crea la classeEmployeeche eredita daPerson, con employee_id e stipendiomanager.py: implementa la classeManagerche estendeEmployee, con gestione del repartoengineer.py: crea la classeEngineerche estendeEmployee, con competenze di programmazionetechnical_manager.py: creaTechnicalManagerusando l'ereditarietà multiplahierarchy_utils.py: implementa una funzione di utilità per visualizzare le gerarchie delle classi
Ogni file contiene commenti TODO dettagliati che ti guideranno nell'implementazione.
Provalo tu
from person import Person
from employee import Employee
from manager import Manager
from engineer import Engineer
from technical_manager import TechnicalManager
from hierarchy_utils import show_hierarchy
# Metti alla prova la tua implementazione - NON MODIFICARE QUESTO CODICE DI TEST
# Crea le istanze
person = Person("John Smith", 30)
employee = Employee("Alice Johnson", 35, "E12345", 60000)
manager = Manager("Bob Williams", 45, "M54321", 85000, "Marketing")
engineer = Engineer("Carol Davis", 28, "E98765", 75000, "Python")
tech_mgr = TechnicalManager("Dave Wilson", 40, "TM24680", 90000, "R&D", "Java")
# Verifica i metodi di base
print(person.introduce())
print(employee.introduce())
print(f"Monthly pay: ${employee.calculate_paycheck():.2f}")
print(manager.manage_team())
print(engineer.code())
# Verifica le gerarchie di ereditarietà
print("\nHierarchy demonstrations:")
show_hierarchy(TechnicalManager)
# Verifica la risoluzione dei metodi nell'ereditarietà multipla
print("\nTechnical Manager tests:")
print(tech_mgr.introduce())
print(f"Monthly pay: ${tech_mgr.calculate_paycheck():.2f}")
print(tech_mgr.manage_team())
print(tech_mgr.code())Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti di OOP
File esterniIntroduzione a OOPClassi vs. oggettiIl parametro selfMetodiAttributiMetodo costruttore (__init__)Riepilogo - Calcolatrice semplice4Ereditarietà
Ereditarietà di baseLa funzione super()Sovrascrittura dei metodiEreditarietà multiplaOrdine di risoluzione dei metodiRiepilogo - Gerarchia dei dipendenti7Metodi speciali
Introduzione ai metodi magiciSovraccarico degli operatoriMetodi magici dei contenitoriRiepilogo - Lista personalizzata10Modelli di progettazione Parte 1
Introduzione ai modelli di progettazioneModello SingletonModello FactoryModello ObserverModello Strategy2Decoratori
Introduzione ai decoratoriDecoratore di proprietàDecoratore di metodo staticoDecoratore di metodo di classe5Polimorfismo
Ripasso dell'override dei metodiDuck typingClassi e metodi astrattiProgettazione delle interfacceRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàMixinMetodi statici e di classeDecorator di classeContext manager11Pattern di progettazione - Parte 2
Pattern dei comandiPattern adattatorePattern decoratorePattern metodo templatePattern statoPattern composito3Proprietà delle classi
Variabili di istanza e di classeDecorator delle proprietàAttributi privatiRiepilogo - Gestore di conti bancari6Incapsulamento
Membri pubblici, protetti e privatiModificatori di accessoOccultamento delle informazioniDecorator delle proprietà: avanzatiRipasso - Sistema di registri degli studenti12Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e UtenteSistema di prestitoFunzionalità di ricercaInterfaccia amministratoreTest e integrazioneEsercitati da solo: Compilatore Python online