Menu
Coddy logo textTech

Powtórzenie – hierarchia pracowników

Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 24 z 70.

challenge icon

Wyzwanie

Łatwy

Stwórzmy system hierarchii pracowników, który łączy wszystkie zagadnienia związane z dziedziczeniem z tego rozdziału. Utworzysz strukturę firmy, w której różne typy pracowników mają wspólne atrybuty, ale inaczej obliczają swoje premie.

Rozmieścisz kod w czterech plikach:

  • Employee.cs: Zdefiniuj klasę bazową Employee w przestrzeni nazw Company. Każdy pracownik ma Name (string) i Salary (decimal). Utwórz konstruktor, który przyjmuje obie te wartości. Dodaj metodę virtual o nazwie CalculateBonus(), która domyślnie zwraca 10% wynagrodzenia. Przesłoń ToString(), aby zwracała "{Name} - ${Salary}".
  • Manager.cs: Zdefiniuj klasę Manager w przestrzeni nazw Company, która dziedziczy po Employee. Menedżerowie mają dodatkową właściwość TeamSize (int). Konstruktor powinien przyjmować imię, wynagrodzenie i liczebność zespołu oraz używać base do inicjalizacji klasy nadrzędnej. Przesłoń CalculateBonus(), aby zwracała 15% wynagrodzenia plus 50 USD za każdego członka zespołu. Przesłoń ToString(), aby zwracała "{Name} - ${Salary} (Manager, Team: {TeamSize})".
  • Developer.cs: Zdefiniuj klasę Developer w przestrzeni nazw Company, która dziedziczy po Employee. Deweloperzy mają właściwość ProgrammingLanguage (string). Konstruktor przyjmuje imię, wynagrodzenie i język programowania. Przesłoń CalculateBonus(), aby zwracała 12% wynagrodzenia. Przesłoń ToString(), aby zwracała "{Name} - ${Salary} (Developer, {ProgrammingLanguage})".
  • Program.cs: W pliku głównym utwórz po jednym obiekcie każdego typu pracownika, używając wartości wejściowych. Umieść wszystkie trzy obiekty w tablicy referencji typu Employee, aby zademonstrować polimorfizm. Przejdź pętlą przez tablicę i wypisz wynik ToString() każdego pracownika, a następnie jego premię.

Otrzymasz osiem danych wejściowych:

  • Imię pracownika bazowego
  • Wynagrodzenie pracownika bazowego
  • Imię menedżera
  • Wynagrodzenie menedżera
  • Liczebność zespołu menedżera
  • Imię dewelopera
  • Wynagrodzenie dewelopera
  • Język programowania dewelopera

Wypisz informacje o każdym pracowniku i jego premii w tym formacie:

{ToString result}
Bonus: ${CalculateBonus result}

Na przykład, jeśli dane wejściowe to John, 50000, Sarah, 80000, 5, Mike, 70000 i C#, wynikiem powinno być:

John - $50000
Bonus: $5000
Sarah - $80000 (Manager, Team: 5)
Bonus: $12250
Mike - $70000 (Developer, C#)
Bonus: $8400

Zauważ, że każdy typ pracownika oblicza premie inaczej, a mimo to możesz obsługiwać je wszystkie za pomocą jednej tablicy Employee. Na tym polega siła połączenia dziedziczenia z polimorfizmem!

Spróbuj swoich sił

using System;
using Company;

class Program
{
    public static void Main(string[] args)
    {
        // Wczytaj dane podstawowego pracownika
        string empName = Console.ReadLine();
        decimal empSalary = Convert.ToDecimal(Console.ReadLine());
        
        // Wczytaj dane menedżera
        string mgrName = Console.ReadLine();
        decimal mgrSalary = Convert.ToDecimal(Console.ReadLine());
        int teamSize = Convert.ToInt32(Console.ReadLine());
        
        // Wczytaj dane programisty
        string devName = Console.ReadLine();
        decimal devSalary = Convert.ToDecimal(Console.ReadLine());
        string progLang = Console.ReadLine();
        
        // TODO: Utwórz po jednym obiekcie Employee, Manager i Developer
        
        // TODO: Umieść wszystkie trzy obiekty w tablicy Employee, aby zademonstrować polimorfizm
        
        // TODO: Przejdź przez tablicę i wypisz wynik ToString() oraz premię każdego pracownika
        // Format:
        // {wynik ToString}
        // Premia: ${wynik CalculateBonus}
    }
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C# online