Menu
Coddy logo textTech

Récapitulatif - Hiérarchie des employés

Fait partie de la section Programmation Orientée Objet du Journey C++ de Coddy — leçon 55 sur 104.

challenge icon

Défi

Facile

Construisons un système complet de hiérarchie d'employés qui rassemble tous les concepts d'héritage que vous avez appris dans ce chapitre. Vous allez créer une structure d'entreprise avec différents types d'employés qui partagent des attributs communs mais ont des comportements spécialisés.

Vous organiserez votre code sur quatre fichiers :

  • Employee.h : Définissez la classe de base Employee dont tous les types d'employés hériteront. Chaque employé a un nom, un identifiant (ID) et un salaire de base. Incluez :
    • Des membres protégés pour le nom (std::string), l'id (int) et le baseSalary (double)
    • Un constructeur qui initialise ces trois valeurs
    • Une méthode virtuelle displayInfo() qui affiche : Employee: <name> (ID: <id>)
    • Une méthode virtuelle calculateSalary() qui retourne le salaire de base
    • Un destructeur virtuel
  • Manager.h : Définissez une classe Manager qui hérite publiquement de Employee. Les managers reçoivent un bonus basé sur la taille de leur équipe :
    • Un membre privé int teamSize
    • Un constructeur qui prend le nom, l'id, le salaire de base et la taille de l'équipe — chaînez-le au constructeur de base de manière appropriée
    • Surchargez displayInfo() pour afficher : Manager: <name> (ID: <id>) - Team of <teamSize>
    • Surchargez calculateSalary() pour retourner le salaire de base plus 500 pour chaque membre de l'équipe
  • Developer.h : Définissez une classe Developer qui hérite publiquement de Employee. Les développeurs ont un langage de spécialité et reçoivent un bonus de compétence :
    • Un membre privé std::string language
    • Un constructeur qui prend le nom, l'id, le salaire de base et le langage de programmation
    • Surchargez displayInfo() pour afficher : Developer: <name> (ID: <id>) - <language>
    • Surchargez calculateSalary() pour retourner le salaire de base plus un bonus de compétence de 1000
  • main.cpp : Lisez six entrées (chacune sur une ligne séparée) :
    1. Nom du manager
    2. ID du manager
    3. Salaire de base du manager
    4. Nom du développeur
    5. ID du développeur
    6. Salaire de base du développeur

    Créez un Manager avec une taille d'équipe de 4 et un Developer spécialisé en "C++". Stockez les pointeurs vers les deux dans un tableau de pointeurs Employee*. Parcourez le tableau pour appeler displayInfo() et affichez le salaire calculé pour chaque employé dans ce format :

    <displayInfo output>
    Salary: <displayInfo output>
    Salary: $<calculated salary>lt;calculated salary>

    Affichez une ligne vide entre les employés. Après avoir affiché tous les employés, supprimez correctement les objets alloués dynamiquement.

Par exemple, avec les entrées Sarah, 101, 5000, Mike, 102, et 4500 :

Manager: Sarah (ID: 101) - Team of 4
Salary: $7000

Developer: Mike (ID: 102) - C++
Salary: $5500

Ce défi démontre le polymorphisme en action — l'appel de méthodes virtuelles via des pointeurs de classe de base invoque les implémentations correctes des classes dérivées. N'oubliez pas d'utiliser le mot-clé override et d'inclure un destructeur virtuel dans votre classe de base pour un nettoyage approprié.

Essayez vous-même

#include <iostream>
#include <string>
#include "Employee.h"
#include "Manager.h"
#include "Developer.h"

using namespace std;

int main() {
    // Lire les entrées pour Manager
    string managerName;
    int managerId;
    double managerSalary;
    
    getline(cin, managerName);
    cin >> managerId;
    cin >> managerSalary;
    cin.ignore();
    
    // Lire les entrées pour Developer
    string developerName;
    int developerId;
    double developerSalary;
    
    getline(cin, developerName);
    cin >> developerId;
    cin >> developerSalary;
    
    // TODO: Créer un Manager avec une taille d'équipe de 4
    // TODO: Créer un Developer spécialisé en "C++"
    
    // TODO: Créer un tableau de pointeurs Employee* pour stocker les deux employés
    
    // TODO: Parcourir le tableau et pour chaque employé :
    //   - Appeler displayInfo()
    //   - Afficher : Salary: $<calculated salary>
    //   - Afficher une ligne vide entre les employés (pas après le dernier)
    
    // TODO: Supprimer les objets alloués dynamiquement
    
    return 0;
}

Toutes les leçons de Programmation Orientée Objet