Riepilogo - Gerarchia dei dipendenti
Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 24 di 70.
Sfida
FacileCreiamo un sistema gerarchico di dipendenti che riunisce tutti i concetti di ereditarietà di questo capitolo. Creerai una struttura aziendale in cui diversi tipi di dipendenti condividono attributi comuni, ma calcolano i bonus in modo diverso.
Organizzerai il codice in quattro file:
Employee.cs: Definisci la classe baseEmployeenello spazio dei nomiCompany. Ogni dipendente ha unName(string) e unoSalary(decimal). Crea un costruttore che accetti entrambi i valori. Aggiungi un metodovirtualchiamatoCalculateBonus()che restituisca per impostazione predefinita il 10% dello stipendio. Esegui l'override diToString()affinché restituisca"{Name} - ${Salary}".Manager.cs: Definisci una classeManagernello spazio dei nomiCompanyche eredita daEmployee. I manager hanno una proprietà aggiuntivaTeamSize(int). Il costruttore dovrebbe accettare nome, stipendio e dimensione del team, usandobaseper inizializzare la classe padre. Esegui l'override diCalculateBonus()affinché restituisca il 15% dello stipendio più $50 per ogni membro del team. Esegui l'override diToString()affinché restituisca"{Name} - ${Salary} (Manager, Team: {TeamSize})".Developer.cs: Definisci una classeDevelopernello spazio dei nomiCompanyche eredita daEmployee. Gli sviluppatori hanno una proprietàProgrammingLanguage(string). Il costruttore accetta nome, stipendio e linguaggio di programmazione. Esegui l'override diCalculateBonus()affinché restituisca il 12% dello stipendio. Esegui l'override diToString()affinché restituisca"{Name} - ${Salary} (Developer, {ProgrammingLanguage})".Program.cs: Nel tuo file principale, crea un dipendente di ogni tipo usando i valori inseriti. Memorizza tutti e tre in un array di riferimenti aEmployeeper dimostrare il polimorfismo. Scorri l'array e stampa il risultato diToString()di ogni dipendente, seguito dal relativo bonus.
Riceverai otto input:
- Nome del dipendente base
- Stipendio del dipendente base
- Nome del manager
- Stipendio del manager
- Dimensione del team del manager
- Nome dello sviluppatore
- Stipendio dello sviluppatore
- Linguaggio di programmazione dello sviluppatore
Stampa le informazioni e il bonus di ogni dipendente in questo formato:
{ToString result}
Bonus: ${CalculateBonus result}Per esempio, se gli input sono John, 50000, Sarah, 80000, 5, Mike, 70000 e C#, l'output dovrebbe essere:
John - $50000
Bonus: $5000
Sarah - $80000 (Manager, Team: 5)
Bonus: $12250
Mike - $70000 (Developer, C#)
Bonus: $8400Nota come ogni tipo di dipendente calcoli i bonus in modo diverso, eppure puoi elaborarli tutti tramite un unico array Employee. Questo è il potere di combinare l'ereditarietà con il polimorfismo!
Provalo tu
using System;
using Company;
class Program
{
public static void Main(string[] args)
{
// Leggi i dati di input del dipendente di base
string empName = Console.ReadLine();
decimal empSalary = Convert.ToDecimal(Console.ReadLine());
// Leggi i dati di input del manager
string mgrName = Console.ReadLine();
decimal mgrSalary = Convert.ToDecimal(Console.ReadLine());
int teamSize = Convert.ToInt32(Console.ReadLine());
// Leggi i dati di input dello sviluppatore
string devName = Console.ReadLine();
decimal devSalary = Convert.ToDecimal(Console.ReadLine());
string progLang = Console.ReadLine();
// TODO: Crea un Employee, un Manager e un Developer
// TODO: Memorizza tutti e tre in un array di Employee per dimostrare il polimorfismo
// TODO: Scorri l'array e stampa il risultato di ToString() e il bonus di ogni dipendente
// Formato:
// {ToString result}
// Bonus: ${CalculateBonus result}
}
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniNamespace e direttiveIntroduzione a classi e oggettiLa parola chiave "this"Metodi e parametriCampi e proprietàCostruttoriInizializzatori di oggettiRiepilogo - Calcolatrice semplice4Ereditarietà
Sintassi di base dell'ereditarietà (:)La parola chiave 'base'Parole chiave virtual e overrideClassi sealedLa classe base 'object'Riepilogo - Gerarchia dei dipendenti7Funzionalità avanzate
Sovraccarico degli operatoriIndicizzatori (this[])Override di ToString()Metodi di estensioneRiepilogo - Lista personalizzata10Pattern di progettazione Parte 1
Introduzione ai pattern di progettazioneSingleton thread-safePattern FactoryPattern Observer (eventi)Pattern Strategy2Proprietà e membri statici
Proprietà implementate automaticamenteProprietà di sola lettura e di sola scritturaCampi e metodi staticiClassi staticheMembri con corpo di espressione5Polimorfismo e interfacce
Polimorfismo a compile time e runtimeInterfaccia o classe astrattaInterfacce multipleInterfacce espliciteUpcasting e downcastingRipasso: calcolatore di forme8Concetti avanzati di programmazione a oggetti
Composizione invece dell'ereditarietàTipi generici (classi e metodi)Delegati ed eventiAttributi e reflectionIDisposable e istruzione usingNozioni di base sull'iniezione delle dipendenze11Pattern di progettazione, parte 2
Pattern del ComandoPattern dell’AdattatorePattern del DecoratorePattern Template MethodPattern dello StatoPattern Composito3Architettura delle classi
Dati di istanza vs staticiParole chiave 'readonly' e 'const'Campi di supportoRiepilogo - Gestore di conti bancari6Incapsulamento
Modificatori di accessoProprietà per l'incapsulamentoImplementazione dell'occultamento dei datiModelli di immutabilitàRiepilogo - Registri degli studentiEsercitati da solo: Compilatore C# online