EVALUATION EN C++ TEST  04/ XX   

EXAMEN C++ , EXAMEN CORRIGE C++

Question de Cours  05pts

1) Quelle est la différence entre la notion de classe et la notion d’objet ?

2) Définir les expressions suivantes : (a) variable de classe, (b) variable d’instance, (c) méthode de classe, (d) méthode d’instance, (e) constructeur, (f) accesseur en modification, (g) accesseur en consultation, (h) instance d'une classe.

3) Donner la signification de la visibilité public quand elle est affectée à une méthode.

4) Même question qu’en 3) avec la visibilité private.

5) Donner la signification de la visibilité public sur une variable d’instance ou de classe.

Problème  15 pts

Il est demandé aux étudiants de la GeniusClassrooms de créer une classe C++ pour gérer les informations d'un docteur travaillant dans un hôpital en Dschang. Chaque docteur a les attributs suivants : matricule (auto-incrémenté), nomDocteur (nom du docteur), spécialité (domaine de spécialisation), expérience (nombre d'années d'expérience) et nombreDePatients (le nombre de patients que le docteur a traités).

  1. Définir un constructeur d'initialisation, un constructeur avec argument et un constructeur de recopie, Docteur(const Docteur&).
  2. Définir un destructeur ~Docteur().
  3. Définir des getters et setters pour tous les attributs de la classe.
  4. Définir la méthode void saisie() permettant la saisie des informations du docteur.
  5. Définir la méthode void affichage() permettant d'afficher les informations d'un docteur.
  6. Définir la méthode double salaire() qui retourne le salaire mensuel du docteur en fonction de son expérience et de sa spécialité. Le salaire de base est de 2500 FCFA par mois. Pour chaque année d'expérience, le salaire augmente de 100 FCFA. Pour chaque spécialité, il y a une prime de 500 FCFA par mois.
  7. Écrire la méthode bool compare() qui compare deux docteurs et retourne comme résultat la valeur true si deux docteurs ont le même salaire et la valeur false sinon.

 

 

Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk

 

 

Correction :

Questions de Cours :

  1. La notion de classe et la notion d'objet sont deux concepts fondamentaux en programmation orientée objet. Une classe est une description générale d'un objet, qui définit ses caractéristiques et ses comportements. Un objet, quant à lui, est une instance concrète d'une classe. En d'autres termes, une classe est une abstraction de l'objet, tandis qu'un objet est une instance concrète de cette abstraction.
  2. (a) Une variable de classe est une variable qui est partagée par toutes les instances d'une classe. (b) Une variable d'instance est une variable qui est propre à chaque instance d'une classe. (c) Une méthode de classe est une méthode qui agit sur les variables de classe et n'a pas accès aux variables d'instance. (d) Une méthode d'instance est une méthode qui agit sur les variables d'instance. (e) Un constructeur est une méthode spéciale qui est appelée lors de la création d'une nouvelle instance d'une classe. (f) Un accesseur en modification (ou mutateur) est une méthode qui permet de modifier la valeur d'une variable d'instance. (g) Un accesseur en consultation (ou accesseur) est une méthode qui permet de consulter la valeur d'une variable d'instance. (h) Une instance d'une classe est un objet créé à partir de cette classe.
  3. Lorsqu'une méthode est déclarée publique, cela signifie qu'elle est accessible à partir de n'importe quelle autre classe. En d'autres termes, la méthode peut être appelée à partir de n'importe où dans le programme, y compris à partir d'autres classes.
  4. Lorsqu'une méthode est déclarée privée, cela signifie qu'elle n'est accessible qu'à partir de la classe dans laquelle elle est définie. En d'autres termes, la méthode ne peut pas être appelée à partir d'autres classes.
  5. Lorsqu'une variable d'instance ou de classe est déclarée publique, cela signifie qu'elle est accessible à partir de n'importe quelle autre classe. En d'autres termes, la variable peut être lue ou modifiée à partir de n'importe où dans le programme, y compris à partir d'autres classes. Cependant, il est considéré comme une bonne pratique de ne pas rendre les variables publiques, mais plutôt d'utiliser des accesseurs en consultation et en modification pour contrôler l'accès à ces variables.

Probleme : 

#include <iostream>
#include <string>
using namespace std;

class Docteur {
private:
    int matricule;
    string nomDocteur;
    string specialite;
    int experience;
    int nombreDePatients;

public:
    // Constructeurs
    Docteur() : matricule(0), nomDocteur(""), specialite(""), experience(0), nombreDePatients(0) {}
    Docteur(int m, string nom, string spe, int exp, int nb) : matricule(m), nomDocteur(nom), specialite(spe), experience(exp), nombreDePatients(nb) {}
    Docteur(const Docteur& doc) : matricule(doc.matricule), nomDocteur(doc.nomDocteur), specialite(doc.specialite), experience(doc.experience), nombreDePatients(doc.nombreDePatients) {}

    // Destructeur
    ~Docteur() {}

    // Getters et Setters
    int getMatricule() const { return matricule; }
    string getNomDocteur() const { return nomDocteur; }
    string getSpecialite() const { return specialite; }
    int getExperience() const { return experience; }
    int getNombreDePatients() const { return nombreDePatients; }

    void setMatricule(int m) { matricule = m; }
    void setNomDocteur(string nom) { nomDocteur = nom; }
    void setSpecialite(string spe) { specialite = spe; }
    void setExperience(int exp) { experience = exp; }
    void setNombreDePatients(int nb) { nombreDePatients = nb; }

    // Méthodes
    void saisie() {
        cout << "Entrez les informations du docteur : " << endl;
        cout << "Matricule : "; cin >> matricule;
        cout << "Nom : "; cin >> nomDocteur;
        cout << "Spécialité : "; cin >> specialite;
        cout << "Expérience : "; cin >> experience;
        cout << "Nombre de patients traités : "; cin >> nombreDePatients;
    }

    void affichage() {
        cout << "Informations du docteur : " << endl;
        cout << "Matricule : " << matricule << endl;
        cout << "Nom : " << nomDocteur << endl;
        cout << "Spécialité : " << specialite << endl;
        cout << "Expérience : " << experience << " an(s)" << endl;
        cout << "Nombre de patients traités : " << nombreDePatients << endl;
        cout << "Salaire mensuel : " << salaire() << " euros" << endl;
    }

    double salaire() {
        double salaireMensuel = 2500.0;
        salaireMensuel += experience * 100.0;
        salaireMensuel += specialite == "chirurgie" ? 500.0 : 0.0;
        salaireMensuel += specialite == "cardiologie" ? 500.0 : 0.0;
        salaireMensuel += specialite == "neurologie" ? 500.0 : 0.0;
        return salaireMensuel;
    }

    bool compare(const Docteur& doc) {
        return salaire() == doc.salaire();
    }
};

int main() {
    Docteur doc1, doc2;

    doc1.affichage(); // affiche les informations par défaut de doc1 (valeurs initialisées par défaut)

    doc2.affichage(); // affiche les informations par défaut de doc2 (valeurs initialisées par défaut)

doc1.saisie(); // saisie les informations du docteur 1
doc2.saisie(); // saisie les informations du docteur 2

doc1.affichage(); // affiche les informations du docteur 1
doc2.affichage(); // affiche les informations du docteur 2

if (doc1.compare(doc2)) {
    cout << "Les deux docteurs ont le meme salaire." << endl;
} else {
    cout << "Les deux docteurs n'ont pas le meme salaire." << endl;
}

return 0;

Télécharger L'exercice Sous Forme de PDF

 
  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam