Récapitulatif - Hiérarchie des employés
Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy. Leçon 24 sur 70.
Défi
FacileConstruisons un système de hiérarchie des employés qui rassemble tous les concepts d’héritage de ce chapitre. Vous allez créer une structure d’entreprise dans laquelle différents types d’employés partagent des attributs communs, mais calculent leurs primes différemment.
Vous organiserez votre code sur quatre fichiers :
Employee.cs: définissez la classe de baseEmployeedans l’espace de nomsCompany. Chaque employé possède unName(string) et unSalary(decimal). Créez un constructeur qui accepte ces deux valeurs. Ajoutez une méthodevirtualappeléeCalculateBonus()qui renvoie par défaut 10 % du salaire. RedéfinissezToString()pour qu’elle renvoie"{Name} - ${Salary}".Manager.cs: définissez une classeManagerdans l’espace de nomsCompanyqui hérite deEmployee. Les responsables possèdent une propriété supplémentaireTeamSize(int). Le constructeur doit accepter le nom, le salaire et la taille de l’équipe, en utilisantbasepour initialiser la classe parente. RedéfinissezCalculateBonus()pour qu’elle renvoie 15 % du salaire plus 50 $ pour chaque membre de l’équipe. RedéfinissezToString()pour qu’elle renvoie"{Name} - ${Salary} (Manager, Team: {TeamSize})".Developer.cs: définissez une classeDeveloperdans l’espace de nomsCompanyqui hérite deEmployee. Les développeurs possèdent une propriétéProgrammingLanguage(string). Le constructeur accepte le nom, le salaire et le langage de programmation. RedéfinissezCalculateBonus()pour qu’elle renvoie 12 % du salaire. RedéfinissezToString()pour qu’elle renvoie"{Name} - ${Salary} (Developer, {ProgrammingLanguage})".Program.cs: dans votre fichier principal, créez un employé de chaque type à partir de valeurs saisies. Stockez les trois employés dans un tableau de référencesEmployeeafin de démontrer le polymorphisme. Parcourez le tableau et affichez le résultat deToString()de chaque employé, suivi de sa prime.
Vous recevrez six entrées :
- Nom de l’employé de base
- Salaire de l’employé de base
- Nom du responsable
- Salaire du responsable
- Taille de l’équipe du responsable
- Nom du développeur
- Salaire du développeur
- Langage de programmation du développeur
Affichez les informations et la prime de chaque employé au format suivant :
{ToString result}
Bonus: ${CalculateBonus result}Par exemple, si les entrées sont John, 50000, Sarah, 80000, 5, Mike, 70000 et C#, la sortie doit être :
John - $50000
Bonus: $5000
Sarah - $80000 (Manager, Team: 5)
Bonus: $12250
Mike - $70000 (Developer, C#)
Bonus: $8400Remarquez que chaque type d’employé calcule les primes différemment, mais que vous pouvez tous les traiter au moyen d’un seul tableau Employee. C’est toute la puissance de la combinaison de l’héritage et du polymorphisme !
Essayez vous-même
using System;
using Company;
class Program
{
public static void Main(string[] args)
{
// Lire les entrées de base de l'employé
string empName = Console.ReadLine();
decimal empSalary = Convert.ToDecimal(Console.ReadLine());
// Lire les entrées du manager
string mgrName = Console.ReadLine();
decimal mgrSalary = Convert.ToDecimal(Console.ReadLine());
int teamSize = Convert.ToInt32(Console.ReadLine());
// Lire les entrées du développeur
string devName = Console.ReadLine();
decimal devSalary = Convert.ToDecimal(Console.ReadLine());
string progLang = Console.ReadLine();
// TODO: Créer un Employee, un Manager et un Developer
// TODO: Stocker les trois dans un tableau de type Employee pour démontrer le polymorphisme
// TODO: Parcourir le tableau et afficher le `ToString()` et le bonus de chaque employé
// Format :
// {résultat de ToString}
// Bonus: ${résultat de CalculateBonus}
}
}
Toutes les leçons de Programmation Orientée Objet
1Fondamentaux de la POO
Fichiers externesEspaces de noms et directivesIntro aux classes et objetsLe mot-clé 'this'Méthodes et paramètresChamps vs PropriétésConstructeursInitialiseurs d'objetsRécapitulatif - Calculatrice simple4Héritage
Syntaxe de base de l'héritage (:)Le mot-clé 'base'Mots-clés Virtual & OverrideClasses scelléesLa classe de base 'object'Récapitulatif - Hiérarchie des employés7Fonctionnalités avancées
Surcharge d'opérateursIndexeurs (this[])Redéfinition de ToString()Méthodes d'extensionRécapitulatif - Liste personnalisée10Patrons de conception - Partie 1
Introduction aux patrons de conceptionSingleton Thread-SafePatron FabriquePatron Observateur (Événements)Patron Stratégie2Propriétés et membres statiques
Propriétés auto-implémentéesPropriétés en lecture/écriture seuleChamps et méthodes statiquesClasses statiquesMembres à corps d'expression5Polymorphisme & Interfaces
Polymorphisme : Compilation vs ExécutionInterface vs Classe AbstraiteInterfaces MultiplesInterfaces ExplicitesUpcasting & DowncastingRécapitulatif - Calculateur de Formes8Concepts avancés de la POO
Composition plutôt qu'héritageGénériques (Classes et Méthodes)Délégués et ÉvénementsAttributs et RéflexionIDisposable et l'instruction usingBases de l'Injection de Dépendances11Patrons de conception, Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode TemplatePatron ÉtatPatron Composite3Architecture des classes
Données d'instance vs statiquesMots-clés 'readonly' & 'const'Champs de supportRécapitulatif - Gestionnaire de compte bancaire6Encapsulation
Modificateurs d'accèsPropriétés pour l'encapsulationImplémentation du masquage de donnéesPatterns d'immuabilitéRécapitulatif - Dossiers d'étudiants12Projet : Système de gestion de bibliothèque
Structure du projetModèles Livre et UtilisateurLogique du système d'empruntLINQ pour la rechercheInterface Console / Interface d'administrationTests unitaires (NUnit/xUnit)Entraînez-vous par vous-même : Compilateur C# en ligne