Zusammenfassung – Mitarbeiter-Hierarchie
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy — Lektion 24 von 70.
Aufgabe
EinfachLassen 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 BasisklasseEmployeeim NamespaceCompany. Jeder Mitarbeiter hat einenName(string) und einSalary(decimal). Erstellen Sie einen Konstruktor, der beide Werte akzeptiert. Fügen Sie einevirtualMethode namensCalculateBonus()hinzu, die standardmäßig 10 % des Gehalts zurückgibt. Überschreiben SieToString(), um"{Name} - ${Salary}"zurückzugeben.Manager.cs: Definieren Sie eine KlasseManagerim NamespaceCompany, die vonEmployeeerbt. Manager haben eine zusätzliche EigenschaftTeamSize(int). Der Konstruktor sollte Name, Gehalt und Teamgröße akzeptieren undbaseverwenden, um das Elternobjekt zu initialisieren. Überschreiben SieCalculateBonus(), um 15 % des Gehalts plus $50 für jedes Teammitglied zurückzugeben. Überschreiben SieToString(), um"{Name} - ${Salary} (Manager, Team: {TeamSize})"zurückzugeben.Developer.cs: Definieren Sie eine KlasseDeveloperim NamespaceCompany, die vonEmployeeerbt. Entwickler haben eine EigenschaftProgrammingLanguage(string). Der Konstruktor akzeptiert Name, Gehalt und Programmiersprache. Überschreiben SieCalculateBonus(), um 12 % des Gehalts zurückzugeben. Überschreiben SieToString(), 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 vonEmployee-Referenzen, um Polymorphie zu demonstrieren. Durchlaufen Sie das Array in einer Schleife und geben Sie dasToString()-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: $8400Beachten 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
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjekt-InitialisiererZusammenfassung - Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (:) SyntaxDas 'base'-SchlüsselwortVirtual & Override SchlüsselwörterVersiegelte KlassenDie 'object'-BasisklasseZusammenfassung – Mitarbeiter-Hierarchie7Fortgeschrittene Funktionen
OperatorüberladungIndexer (this[])ToString() überschreibenErweiterungsmethodenZusammenfassung - Benutzerdefinierte Liste2Eigenschaften & Statische Member
Automatisch implementierte EigenschaftenRead-Only- & Write-Only-EigenschaftenStatische Felder & MethodenStatische KlassenExpression-Bodied Member5Polymorphismus & Interfaces
Compile- vs. Runtime-PolymorphismusInterface vs. abstrakte KlasseMehrfache InterfacesExplizite InterfacesUpcasting & DowncastingRecap – Shape Calculator3Klassenarchitektur
Instanz- vs. statische Daten'readonly' & 'const' SchlüsselwörterBacking FieldsZusammenfassung - Bankkonto-Manager6Kapselung
ZugriffsmodifikatorenProperties zur KapselungImplementierung von Data HidingImmutability-MusterRückblick – Studierendendaten