Menu
Coddy logo textTech

Powtórzenie – hierarchia pracowników

Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 42 z 110.

challenge icon

Wyzwanie

Łatwy

Stwórzmy kompletny system hierarchii pracowników, który łączy wszystkie koncepcje dziedziczenia z tego rozdziału. Utworzysz bazową klasę pracownika i rozszerzysz ją o wyspecjalizowane role, z których każda będzie miała własne, unikalne zachowania.

Podzielisz kod na dwa pliki:

  • employee.dart: Zdefiniuj tutaj hierarchię pracowników:
    • Bazowa klasa Employee z właściwościami String name, double salary i int id. Dodaj konstruktor oraz metodę getDetails(), która zwraca '[name] (ID: [id]) - Salary: $[salary]'
    • Klasa Manager, która rozszerza Employee i dodaje właściwość int teamSize. Użyj parametrów super dla dziedziczonych pól. Nadpisz getDetails(), aby zwracała szczegóły klasy nadrzędnej, a następnie ', Team: [teamSize] members'
    • Klasa Developer, która rozszerza Employee i dodaje właściwość String language. Nadpisz getDetails(), aby zwracała szczegóły klasy nadrzędnej, a następnie ', Specializes in [language]'
    • Klasa TeamLead, która rozszerza Developer i dodaje właściwość int projectCount. Nadpisz getDetails(), aby rozbudować wersję z klasy Developer przez dodanie ', Leading [projectCount] projects'
  • main.dart: Zaimportuj plik z pracownikami i utwórz instancje każdego typu pracownika:
    • Utwórz obiekt Employee o nazwie 'Alice', wynagrodzeniu 50000.0 i identyfikatorze 101
    • Utwórz obiekt Manager o nazwie 'Bob', wynagrodzeniu 75000.0, identyfikatorze 102 i wartości teamSize 8
    • Utwórz obiekt Developer o nazwie 'Carol', wynagrodzeniu 65000.0, identyfikatorze 103 i języku 'Dart'
    • Utwórz obiekt TeamLead o nazwie 'David', wynagrodzeniu 80000.0, identyfikatorze 104, języku 'Python' i wartości projectCount 3
    • Wypisz wynik wywołania getDetails() dla każdego pracownika, po jednym wierszu

Zwróć uwagę, jak TeamLead pokazuje dziedziczenie wielopoziomowe — rozszerza klasę Developer, która rozszerza klasę Employee. Każdy poziom dodaje własne szczegóły, zachowując jednocześnie informacje z klas nadrzędnych za pomocą super.

Oczekiwany wynik:

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 projects

Spróbuj swoich sił

import 'employee.dart';

void main() {
  // TODO: Utwórz obiekt Employee z imieniem 'Alice', pensją 50000.0 i id 101

  // TODO: Utwórz obiekt Manager z imieniem 'Bob', pensją 75000.0, id 102 i teamSize 8

  // TODO: Utwórz obiekt Developer z imieniem 'Carol', pensją 65000.0, id 103 i językiem 'Dart'

  // TODO: Utwórz obiekt TeamLead z imieniem 'David', pensją 80000.0, id 104, językiem 'Python' i projectCount 3

  // TODO: Wypisz getDetails() dla każdego pracownika, po jednym wierszu na pracownika
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Dart online