Menu
Coddy logo textTech

Wiederholung – Mitarbeiterhierarchie

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

challenge icon

Aufgabe

Einfach

Erstellen wir ein Hierarchiesystem für Mitarbeiter, das alle Vererbungskonzepte aus diesem Kapitel zusammenführt. Du erstellst eine Unternehmensstruktur, in der verschiedene Mitarbeitertypen gemeinsame Attribute haben, ihre Boni jedoch unterschiedlich berechnen.

Du organisierst deinen Code über vier Dateien:

  • Employee.cs: Definiere die Basisklasse Employee im Namespace Company. Jeder Mitarbeiter hat einen Name (string) und ein Salary (decimal). Erstelle einen Konstruktor, der beide Werte akzeptiert. Füge eine virtual-Methode namens CalculateBonus() hinzu, die standardmäßig 10 % des Gehalts zurückgibt. Überschreibe ToString(), sodass "{Name} - ${Salary}" zurückgegeben wird.
  • Manager.cs: Definiere 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 übergeordnete Element zu initialisieren. Überschreibe CalculateBonus(), sodass 15 % des Gehalts plus 50 $ für jedes Teammitglied zurückgegeben werden. Überschreibe ToString(), sodass "{Name} - ${Salary} (Manager, Team: {TeamSize})" zurückgegeben wird.
  • Developer.cs: Definiere eine Klasse Developer im Namespace Company, die von Employee erbt. Entwickler haben eine Eigenschaft ProgrammingLanguage (string). Der Konstruktor akzeptiert Name, Gehalt und Programmiersprache. Überschreibe CalculateBonus(), sodass 12 % des Gehalts zurückgegeben werden. Überschreibe ToString(), sodass "{Name} - ${Salary} (Developer, {ProgrammingLanguage})" zurückgegeben wird.
  • Program.cs: Erstelle in deiner Hauptdatei jeweils einen Mitarbeiter jedes Typs unter Verwendung von Eingabewerten. Speichere alle drei in einem Array aus Employee-Referenzen, um Polymorphie zu demonstrieren. Durchlaufe das Array und gib für jeden Mitarbeiter das Ergebnis von ToString(), gefolgt von seinem Bonus, aus.

Du erhältst sechs Eingaben:

  • Name des Basismitarbeiters
  • Gehalt des Basismitarbeiters
  • Name des Managers
  • Gehalt des Managers
  • Teamgröße des Managers
  • Name des Entwicklers
  • Gehalt des Entwicklers
  • Programmiersprache des Entwicklers

Gib 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# lauten, sollte die Ausgabe wie folgt aussehen:

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

Beachte, wie jeder Mitarbeitertyp Boni unterschiedlich berechnet, du aber alle über ein einziges Employee-Array verarbeiten kannst. Das ist die Stärke der Kombination von Vererbung und 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

Übe selbstständig: Online-C#-Compiler