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 d'employés qui rassemble tous les concepts d'héritage de ce chapitre. Vous allez créer une structure d'entreprise où 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é a unName(string) et unSalary(decimal). Créez un constructeur qui accepte les deux valeurs. Ajoutez une méthodevirtualappeléeCalculateBonus()qui retourne par défaut 10 % du salaire. SurchargezToString()pour retourner"{Name} - ${Salary}".Manager.cs: Définissez une classeManagerdans l'espace de nomsCompanyqui hérite deEmployee. Les managers ont une propriété supplémentaireTeamSize(int). Le constructeur doit accepter le nom, le salaire et la taille de l'équipe, en utilisantbasepour initialiser le parent. SurchargezCalculateBonus()pour retourner 15 % du salaire plus $50 pour chaque membre de l'équipe. SurchargezToString()pour retourner"{Name} - ${Salary} (Manager, Team: {TeamSize})".Developer.cs: Définissez une classeDeveloperdans l'espace de nomsCompanyqui hérite deEmployee. Les développeurs ont une propriétéProgrammingLanguage(string). Le constructeur accepte le nom, le salaire et le langage de programmation. SurchargezCalculateBonus()pour retourner 12 % du salaire. SurchargezToString()pour retourner"{Name} - ${Salary} (Developer, {ProgrammingLanguage})".Program.cs: Dans votre fichier principal, créez un exemplaire de chaque type d'employé en utilisant les valeurs d'entrée. Stockez les trois dans un tableau de référencesEmployeepour démontrer le polymorphisme. Parcourez le tableau et affichez le résultat duToString()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 manager
- Salaire du manager
- Taille de l'équipe du manager
- Nom du développeur
- Salaire du développeur
- Langage de programmation du développeur
Affichez les informations et la prime de chaque employé dans ce format :
{ToString result}
Bonus: ${CalculateBonus result}Par exemple, si les entrées sont John, 50000, Sarah, 80000, 5, Mike, 70000, et C#, la sortie devrait être :
John - $50000
Bonus: $5000
Sarah - $80000 (Manager, Team: 5)
Bonus: $12250
Mike - $70000 (Developer, C#)
Bonus: $8400Remarquez comment chaque type d'employé calcule les primes différemment, tout en pouvant les traiter tous via 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 Utilisateur