EVALUATION EN C++ TEST  07/ XX   

EXAMEN C++ , EXAMEN CORRIGE C++

Question de Cours  & code 5 pts

  1. Ennoncer comment se déroule la résolution des champs.

  2. Ennoncer comment se déroule la résolution des méthodes.

  3. Donner la signification du mot polymorphisme en illustrant sur un exemple simple.

  4. Définir: Objet composite, Polymorphisme .

  5. Quelle est la différence fondamentale entre instance d'üne classe et une classe.

  6. Donner la signification du mot clé this dans un constructeur, dans une méthode d'instance?

  7. Quel est le rôle du constructeur par défaut.

  8. Qu'est ce qu'une classe abstraite? Quel est l'intérêt d'une classe abstraite.

  9. On sait que le langage C est totalement compilés. On sait que le langage shell est totalement interprété. On sait que le langage java est partiellement compilé et interprété. Qu'en est il du langage C++?

  10. Quel est le mécanisme du codage en line? (inline)

Problème  10 pts ELEVES

Un élève est décrit par un matricule, nom, une note en mathématique, une note d'informatique et une note de physique. Chaque élève possède un matricule généré automatiquement qu'on ne peut pas changer et que deux élèves possèdent des matricules distincts. Pour cela on introduit une variable de classe appelée nbreCreation initialisée à 0 qui contiendra à chaque instant le nombre d'élève déjà crées. Dans chaque constructeur, la valeur de nbreCreation est affectée comme matricule de l'objet Eleve en cours de création puis incrémentée de 1. On rappelle que les concepts de variable de classe et de méthode de classe sont décrites à la page 43 du support de cours. Ne nom de l'étudiant ne peut changer. De mémé le matricule de l'étudiant ne peut changer.

En C++ il existe deux manières de gérer les chaînes de caractères : Un tableau de caractères comme en c: char ch[50];

Un objet: string st; (#include <string>)

Il faudrait déclarer le champ nom comme un string.

A) Expliquer pourquoi on ne faut pas prévoir d'accesseur en modification sur le nom et ni sur le matricule.

B) Définir le contenu du fichier d'entête eleve.h en affectant la visibilité public à toutes les méthodes et la visibilité private à toutes les variables d'instance sachant que les spécifications sont:

1) Un constructeur à un argument qui prend en entrée le nom de l'élève (un objet string) et un autre à cinq arguments (qui prend en entrée le nom et les notes des trois matières).

2) Les accesseurs en consultation et en modification par matières. Un accesseur en consultation

sur le nom et un accesseur en consultation sur le matricule. 3) Une méthode d'instance void affichage() qui invite l'objet Elève récepteur du message à afficher sa description. Par exemple Eleve[mathématiques 15, informatique 18, physique 15].

4) Une méthode d'instance float moyenne() qui invite l'objet Elève récepteur du message à calculer et retourner retourne sa moyenne.

7) La méthode d'instance public int operator==(Eleve &e) invite l'objet récepteur du message à calculer et à retourner TRUE s'il est égal à l'objet porté par le message et FALSE sinon. Deux

élèves sont égaux s'ils ont le même matricule.

8) Une méthode de classe static Eleve lire() qui lit le nom d'un élève au clavier, crée un objet Elève et retourne cet objet. On rappelle que en C++, cin désigne le flux d'entrée et cout désigne le flux de sortie.

Eleve *pt_eleve;

string name;

cout << "Entrer le nom de l'élève";

cin >> name;

pt_eleve new Eleve(name); // Page 15 du support de cours return *pt_eleve;

B) Définir le contenu du fichier d'implémentation eleve.cxx.

C) Proposer une méthode principale qui teste toutes les méthodes implémentées.

 

Contact WhatsApp : +237 652027193 | Réalisé par Joël_Yk

Correction :

Question de Cours  & code 5 pts

0) Objet composite : En programmation orientée objet, un objet composite est un objet qui contient d'autres objets. Il s'agit d'un modèle de conception où les objets sont organisés en une structure arborescente pour représenter une hiérarchie tout en permettant de traiter les objets individuels et les compositions d'objets de manière uniforme.

1) La différence fondamentale entre une instance d'une classe et une classe est que la classe est un modèle ou un plan à partir duquel des objets peuvent être créés, tandis qu'une instance est un objet spécifique créé à partir de ce modèle.

2) Dans un constructeur ou une méthode d'instance, le mot clé "this" fait référence à l'instance actuelle de la classe. Il est utilisé pour différencier les variables d'instance des paramètres ou des variables locales portant le même nom.

3) Le rôle du constructeur par défaut est d'initialiser les variables d'instance d'une classe avec des valeurs par défaut si aucun autre constructeur n'est explicitement défini. Il est automatiquement appelé lors de la création d'une instance de classe sans paramètres.

4) Une classe abstraite est une classe qui ne peut pas être instanciée directement et qui peut contenir des méthodes abstraites, c'est-à-dire des méthodes déclarées mais non implémentées. L'intérêt d'une classe abstraite est de fournir un modèle commun pour des classes dérivées, en spécifiant des méthodes que les classes dérivées doivent implémenter tout en permettant une certaine implémentation par défaut.

5) Le langage C++ est un langage de programmation totalement compilé, tout comme le langage C. Cela signifie que le code source est traduit en langage machine par un compilateur avant d'être exécuté. Il n'est pas interprété.

6) Le mécanisme du codage en ligne (inline) en C++ est une directive pour le compilateur indiquant que le code d'une fonction doit être incorporé directement à l'endroit où la fonction est appelée, plutôt que d'être appelé de manière conventionnelle. Cela peut améliorer les performances en évitant les coûts de l'appel de fonction, mais peut également augmenter la taille du code.

Problème  15 pts

A)------------

#ifndef ELEVE_H
#define ELEVE_H

#include <string>

class Eleve {
private:
    static int nbreCreation;
    int matricule;
    std::string nom;
    int noteMath;
    int noteInfo;
    int notePhysique;

public:
    Eleve(std::string nom);
    Eleve(std::string nom, int noteMath, int noteInfo, int notePhysique);

    std::string getNom() const;
    int getMatricule() const;
    int getNoteMath() const;
    int getNoteInfo() const;
    int getNotePhysique() const;

    void setNoteMath(int noteMath);
    void setNoteInfo(int noteInfo);
    void setNotePhysique(int notePhysique);

    void affichage() const;
    float moyenne() const;
    bool operator==(const Eleve& e) const;
    static Eleve lire();
};

#endif // ELEVE_H

B)---------------

#include "eleve.h"
#include <iostream>
using namespace std;

int Eleve::nbreCreation = 0;

Eleve::Eleve(string nom) {
    this->nom = nom;
    this->matricule = ++nbreCreation;
}

Eleve::Eleve(string nom, int noteMath, int noteInfo, int notePhysique) {
    this->nom = nom;
    this->matricule = ++nbreCreation;
    this->noteMath = noteMath;
    this->noteInfo = noteInfo;
    this->notePhysique = notePhysique;
}

string Eleve::getNom() const {
    return nom;
}

int Eleve::getMatricule() const {
    return matricule;
}

int Eleve::getNoteMath() const {
    return noteMath;
}

int Eleve::getNoteInfo() const {
    return noteInfo;
}

int Eleve::getNotePhysique() const {
    return notePhysique;
}

void Eleve::setNoteMath(int noteMath) {
    this->noteMath = noteMath;
}

void Eleve::setNoteInfo(int noteInfo) {
    this->noteInfo = noteInfo;
}

void Eleve::setNotePhysique(int notePhysique) {
    this->notePhysique = notePhysique;
}

void Eleve::affichage() const {
    cout << "Eleve [" << "Matricule " << matricule << ", Nom " << nom << ", Mathématiques " << noteMath << ", Informatique " << noteInfo << ", Physique " << notePhysique << "]." << endl;
}

float Eleve::moyenne() const {
    return (noteMath + noteInfo + notePhysique) / 3.0;
}

bool Eleve::operator==(const Eleve& e) const {
    return matricule == e.matricule;
}

Eleve Eleve::lire() {
    string nom;
    int noteMath, noteInfo, notePhysique;

    cout << "Entrer le nom de l'élève : ";
    cin >> nom;
    cout << "Entrer la note en Mathématiques : ";
    cin >> noteMath;
    cout << "Entrer la note en Informatique : ";
    cin >> noteInfo;
    cout << "Entrer la note en Physique : ";
    cin >> notePhysique;

   Eleve *pt = new Eleve(nom, noteMath, noteInfo, notePhysique);

return *pt;
}

C)-----------

#include "eleve.h"

int main() {
    Eleve eleve1("Alice");
    eleve1.affichage();

    Eleve eleve2("Bob", 15, 18, 12);
    eleve2.affichage();

    cout << "La moyenne de l'élève 2 est : " << eleve2.moyenne() << endl;

    if (eleve1 == eleve2) {
        cout << "Les deux élèves ont le même matricule." << endl;
    } else {
        cout << "Les deux élèves n'ont pas le même matricule." << endl;
    }

    Eleve eleve3 = Eleve::lire();
    eleve3.affichage();

    return 0;
}

 

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

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

Ajouter un commentaire

Anti-spam