Menu
Coddy logo textTech

Zusammenfassung – Mitarbeiter-Hierarchie

Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy — Lektion 24 von 70.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein Mitarbeiter-Hierarchiesystem aufbauen, das alle Vererbungskonzepte aus diesem Kapitel zusammenführt. Sie werden eine Unternehmensstruktur erstellen, in der verschiedene Mitarbeitertypen gemeinsame Attribute teilen, aber ihre Boni unterschiedlich berechnen.

Sie werden Ihren Code über vier Dateien organisieren:

  • Employee.cs: Definieren Sie die Basisklasse Employee im Namespace Company. Jeder Mitarbeiter hat einen Name (string) und ein Salary (decimal). Erstellen Sie einen Konstruktor, der beide Werte akzeptiert. Fügen Sie eine virtual Methode namens CalculateBonus() hinzu, die standardmäßig 10 % des Gehalts zurückgibt. Überschreiben Sie ToString(), um "{Name} - ${Salary}" zurückzugeben.
  • Manager.cs: Definieren Sie eine Klasse Manager im Namespace Company, die von Employee erbt. Manager haben eine zusätzliche Eigenschaft TeamSize (int). Der Konstruktor sollte Name, Gehalt und Teamgröße akzeptieren und base verwenden, um das Elternobjekt zu initialisieren. Überschreiben Sie CalculateBonus(), um 15 % des Gehalts plus $50 für jedes Teammitglied zurückzugeben. Überschreiben Sie ToString(), um "{Name} - ${Salary} (Manager, Team: {TeamSize})" zurückzugeben.
  • Developer.cs: Definieren Sie eine Klasse Developer im Namespace Company, die von Employee erbt. Entwickler haben eine Eigenschaft ProgrammingLanguage (string). Der Konstruktor akzeptiert Name, Gehalt und Programmiersprache. Überschreiben Sie CalculateBonus(), um 12 % des Gehalts zurückzugeben. Überschreiben Sie ToString(), um "{Name} - ${Salary} (Developer, {ProgrammingLanguage})" zurückzugeben.
  • Program.cs: Erstellen Sie in Ihrer Hauptdatei von jedem Mitarbeitertyp ein Objekt unter Verwendung von Eingabewerten. Speichern Sie alle drei in einem Array von Employee-Referenzen, um Polymorphie zu demonstrieren. Durchlaufen Sie das Array in einer Schleife und geben Sie das ToString()-Ergebnis jedes Mitarbeiters gefolgt von seinem Bonus aus.

Sie erhalten sechs Eingaben:

  • Name des Basis-Mitarbeiters
  • Gehalt des Basis-Mitarbeiters
  • Name des Managers
  • Gehalt des Managers
  • Teamgröße des Managers
  • Name des Entwicklers
  • Gehalt des Entwicklers
  • Programmiersprache des Entwicklers

Geben Sie die Informationen und den Bonus jedes Mitarbeiters in diesem Format aus:

{ToString result}
Bonus: ${CalculateBonus result}

Wenn die Eingaben beispielsweise John, 50000, Sarah, 80000, 5, Mike, 70000 und C# sind, sollte die Ausgabe wie folgt aussehen:

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

Beachten Sie, wie jeder Mitarbeitertyp Boni unterschiedlich berechnet, Sie sie aber dennoch alle über ein einziges Employee-Array verarbeiten können. Dies ist die Stärke der Kombination von Vererbung mit Polymorphie!

Probier es selbst

using System;
using Company;

class Program
{
    public static void Main(string[] args)
    {
        // Eingaben für Basis-Mitarbeiter lesen
        string empName = Console.ReadLine();
        decimal empSalary = Convert.ToDecimal(Console.ReadLine());
        
        // Manager-Eingaben lesen
        string mgrName = Console.ReadLine();
        decimal mgrSalary = Convert.ToDecimal(Console.ReadLine());
        int teamSize = Convert.ToInt32(Console.ReadLine());
        
        // Entwickler-Eingaben lesen
        string devName = Console.ReadLine();
        decimal devSalary = Convert.ToDecimal(Console.ReadLine());
        string progLang = Console.ReadLine();
        
        // TODO: Erstelle einen Employee, einen Manager und einen Developer
        
        // TODO: Speichere alle drei in einem Employee-Array, um Polymorphismus zu demonstrieren
        
        // TODO: Durchlaufe das Array und gib für jeden Mitarbeiter ToString() und den Bonus aus
        // Format:
        // {ToString Ergebnis}
        // Bonus: ${CalculateBonus Ergebnis}
    }
}

Alle Lektionen in Objektorientierte Programmierung