Vous êtes sur la page 1sur 4

Examen P.O.O.

et langage C++

Niveau : INDP1 Date : 14/04/2021


Nombre de pages : 4 Durée : 2h
Support de cours autorisés

Remarque : Lire tout l’énoncé de chaque Exercice avant de commencer.

Exercice 1 :

Soit les classes suivantes :

#include <iostream>
using namespace std;

class Toto{
public :
virtual void XX(){
cout << "XX de Toto" << endl;
YY();
}
virtual void YY(){
cout << "YY de Toto" << endl;
}
};

class Bobo : public Toto


{
public:
void YY(){
cout << "YY de Bobo" << endl;
}

};

class Coco : public Bobo


{
public:

void YY(){
cout << "YY de Coco" << endl;
}

};

1
class Composition{
protected:
Toto& T1; Toto T2; Bobo& T3; Coco T4;

public:

Composition (Toto x, Toto& y, Bobo& z, Coco w):


T1 (x), T2(y), T3(z), T4(w){}

void XX()
{
cout << "appel de XX" << endl;
T1.XX();
cout << "appel de XX" << endl;
T2.XX();
cout << "appel de XX" << endl;
T3.XX();
cout << "appel de XX" << endl;
T4.XX();
}

};

int main()
{
Toto A;
Bobo B;
Bobo BB;
Coco C;
Composition CMP1(A,B,BB,C);
CMP1.XX();
Composition CMP2(A,BB,C,C);
CMP2.XX();
return 0;
}

1. Déterminer le résultat de l’exécution de ce programme. 4pts


2. Si on supprime le mot « virtual » de la méthode XX() dans la classe Toto, dire est ce
que le résultat de l’exécution change ou non ? Argumenter votre réponse. 2pts

Exercice 2 :

Le directeur d'une entreprise de produits chimiques souhaite gérer les salaires et les primes de
ses employés.

2
Un employé est caractérisé par son nom, son prénom et sa date d'entrée (les 3 de type
string) en service dans l'entreprise. Définissez une classe Employe dotée des attributs
nécessaires et respectant les contraintes suivantes : (1 pts)
 Un constructeur prenant en paramètres les attributs nécessaires.
 Une méthode getInfo qui renvoie une chaine de caractères obtenue en concaténant
le nom, prénom et date (séparés par un espace).
 Une méthode virtuelle pure salaire qui renvoie le salaire mensuel de l'employé.

Le salaire mensuel dépend de la catégorie de l'employé. On distingue ceux affectés à :


 La Vente. Le salaire mensuel est 20% du chiffre d'affaires qu'ils réalisent
mensuellement, plus 400 DT. (la classe est Vendeur) (1.5)
 La Représentation. Le salaire mensuel est également 20% du chiffre d'affaires qu'ils
réalisent mensuellement, plus 800 DT. (la classe est Rempresentant) (1.5)
 La Production. Le salaire vaut le nombre d'unités produites mensuellement
multipliées par 5. (la classe est Technicien) (1.5)
 La Manutention. Le salaire vaut leur nombre d'heures de travail mensuel multipliées
par 65DT. (la classe est Manutentionnaire) (1.5)

Le chiffre d’affaire que réalise un employé de la catégorie « Commercial » et une donnée


propre à chaque employé de ce service. (1pts)

Certains employés des secteurs Production et Manutention sont appelés à fabriquer et


manipuler des produits dangereux. Après plusieurs négociations syndicales, ces derniers
parviennent à obtenir une prime de risque mensuelle. Cette prime a pour valeur 150DT pour
tous les employés de la catégorie « EmployeARisque ». (4 pts)

Réalisez une hiérarchie de classes pour les employés en respectant les conditions suivantes :
 La superclasse de la hiérarchie doit être la classe Employe.
 N'hésitez pas à introduire des classes intermédiaires pour éviter au maximum les
redondances d'attributs et de méthodes dans les sous-classes.
 Les classes doivent contenir les attributs qui leur sont spécifiques ainsi que le codage
approprie des méthodes salaire et getInfo en précisant la catégorie
correspondante.

3
 Chaque sous-classe est dotée d'un constructeur prenant en paramètre les attributs
nécessaires.

Ecrivez le code des différentes classes demandées. (On peut se limiter à un fichier « .cpp »
par classe). (2 pts)

Vous aimerez peut-être aussi