Wiederholung – Mitarbeiterhierarchie
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy. Lektion 24 von 70.
Aufgabe
EinfachErstellen 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 BasisklasseEmployeeim NamespaceCompany. Jeder Mitarbeiter hat einenName(string) und einSalary(decimal). Erstelle einen Konstruktor, der beide Werte akzeptiert. Füge einevirtual-Methode namensCalculateBonus()hinzu, die standardmäßig 10 % des Gehalts zurückgibt. ÜberschreibeToString(), sodass"{Name} - ${Salary}"zurückgegeben wird.Manager.cs: Definiere eine KlasseManagerim NamespaceCompany, die vonEmployeeerbt. Manager haben eine zusätzliche EigenschaftTeamSize(int). Der Konstruktor sollte Name, Gehalt und Teamgröße akzeptieren undbaseverwenden, um das übergeordnete Element zu initialisieren. ÜberschreibeCalculateBonus(), sodass 15 % des Gehalts plus 50 $ für jedes Teammitglied zurückgegeben werden. ÜberschreibeToString(), sodass"{Name} - ${Salary} (Manager, Team: {TeamSize})"zurückgegeben wird.Developer.cs: Definiere eine KlasseDeveloperim NamespaceCompany, die vonEmployeeerbt. Entwickler haben eine EigenschaftProgrammingLanguage(string). Der Konstruktor akzeptiert Name, Gehalt und Programmiersprache. ÜberschreibeCalculateBonus(), sodass 12 % des Gehalts zurückgegeben werden. ÜberschreibeToString(), 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 ausEmployee-Referenzen, um Polymorphie zu demonstrieren. Durchlaufe das Array und gib für jeden Mitarbeiter das Ergebnis vonToString(), 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: $8400Beachte, 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
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjektinitialisiererWiederholung – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbungs-(:)-SyntaxDas „base“-Schlüsselwort„virtual“- und „override“-SchlüsselwörterVersiegelte KlassenDie „object“-BasisklasseWiederholung – Mitarbeiterhierarchie7Erweiterte Funktionen
Überladen von OperatorenIndexer (this[])ToString()-ÜberschreibungErweiterungsmethodenRückblick – Benutzerdefinierte Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterThread-sicheres SingletonFactory-MusterObserver-Muster (Events)Strategy-Muster13Abschließende Herausforderungen
E-Learning-PlattformKomponente für SpielfigurenFahrzeugvermietungsdienst2Eigenschaften & statische Member
Automatisch implementierte EigenschaftenNur lesbare/schreibbare EigenschaftenStatische Felder & MethodenStatische KlassenMember mit Ausdruckskörpern5Polymorphie & Interfaces
Compile- vs. Laufzeit-PolymorphieInterface vs. abstrakte KlasseMehrere InterfacesExplizite InterfacesUpcasting & DowncastingWiederholung – Formenrechner3Klassenarchitektur
Instanz- vs. statische DatenSchlüsselwörter 'readonly' & 'const'Backing FieldsRückblick – Bankkontenverwaltung6Kapselung
ZugriffsmodifikatorenEigenschaften zur KapselungImplementierung der DatenkapselungMuster für UnveränderlichkeitRückblick – SchülerdatenÜbe selbstständig: Online-C#-Compiler