Podsumowanie – hierarchia pracowników
Część sekcji Programowanie obiektowe ścieżki Python w Coddy. Lekcja 22 z 64.
Wyzwanie
TrudnyW tym wyzwaniu zaimplementujesz system hierarchii pracowników.
Musisz uzupełnić następujące pliki:
person.py: Zaimplementuj bazową klasęPersonz imieniem, wiekiem i metodą przedstawiania sięemployee.py: Utwórz klasęEmployeedziedziczącą poPerson, zawierającą employee_id i wynagrodzeniemanager.py: Zaimplementuj klasęManagerrozszerzającąEmployeeo zarządzanie działemengineer.py: Utwórz klasęEngineerrozszerzającąEmployeeo umiejętności programistycznetechnical_manager.py: Utwórz klasęTechnicalManagerz wykorzystaniem wielokrotnego dziedziczeniahierarchy_utils.py: Zaimplementuj funkcję pomocniczą wyświetlającą hierarchie klas
Każdy plik zawiera szczegółowe komentarze TODO, które poprowadzą Cię przez implementację.
Spróbuj swoich sił
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
# Przetestuj swoją implementację - NIE MODYFIKUJ TEGO KODU TESTOWEGO
# Utwórz instancje
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")
# Przetestuj podstawowe metody
print(person.introduce())
print(employee.introduce())
print(f"Monthly pay: ${employee.calculate_paycheck():.2f}")
print(manager.manage_team())
print(engineer.code())
# Przetestuj hierarchie dziedziczenia
print("\nHierarchy demonstrations:")
show_hierarchy(TechnicalManager)
# Przetestuj kolejność rozstrzygania metod przy dziedziczeniu wielokrotnym
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())Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneWprowadzenie do programowania obiektowegoKlasy a obiektyParametr selfMetodyAtrybutyMetoda konstruktora (__init__)Powtórzenie – prosty kalkulator4Dziedziczenie
Podstawy dziedziczeniaFunkcja super()Nadpisywanie metodDziedziczenie wielokrotneKolejność rozwiązywania metodPodsumowanie – hierarchia pracowników7Metody specjalne
Wprowadzenie do metod magicznychPrzeciążanie operatorówMagiczne metody kontenerówPowtórka – własna lista10Wzorce projektowe, część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec Strategy2Dekoratory
Wprowadzenie do dekoratorówDekorator propertyDekorator metody statycznejDekorator metody klasowej5Polimorfizm
Ponowne omówienie nadpisywania metodTypowanie kaczeKlasy i metody abstrakcyjneProjektowanie interfejsówPodsumowanie — kalkulator kształtów8Zaawansowane koncepcje programowania obiektowego
Kompozycja a dziedziczenieMiksyMetody statyczne i klasoweDekoratory klasMenedżery kontekstu11Wzorce projektowe, część 2
Wzorzec PolecenieWzorzec AdapterWzorzec DekoratorWzorzec Metoda szablonowaWzorzec StanWzorzec Kompozyt3Właściwości klas
Zmienne instancji a zmienne klasoweDekoratory właściwościAtrybuty prywatnePowtórzenie — menedżer kont bankowych6Hermetyzacja
Public, Protected, Private — pamięćModyfikatory dostępuUkrywanie informacjiDekoratory właściwości — zaawansowanePodsumowanie — system ewidencji uczniów12Projekt: System zarządzania biblioteką
Przegląd projektuKlasy Book i UserSystem wypożyczeńFunkcja wyszukiwaniaInterfejs administratoraTestowanie i integracjaPoćwicz samodzielnie: Kompilator Python online