Vous êtes sur la page 1sur 3

École préparatoire aux sciences et techniques, Annaba

Année universitaire 2012/2013


Module : Informatique 2

Série de TD n˚11 : Classes et objets


Solution
Rappel sur les classes et les objets
1. Encapsulation
1. Le concept d’encapsulation consiste à regrouper dans la même entité les données
et les traitements.
2. À la différence des structures, les classes peuvent aussi contenir des fonctions.
3. Les fonctions qui figurent à l’intérieur d’une classe sont appelées des méthodes.
4. Les données et les méthodes d’une classes sont appelés les membres.
5. Les trois niveau d’accès (ou de permission) qu’un membre d’une classe peut avoir
sont : public, protected et private.
6. Quel niveau d’accès est le plus restrictif ? private
7. Quel niveau d’accès est le moins restrictif ? public
8. Les membres d’une classe qui n’ont pas de niveau d’accès ont par défaut le niveau
d’accès private.
9. Une variable est une instance d’un type. Un objet est une instance d’une classe.
10. Un constructeur ressemble à une fonction mais n’a pas de type de retour. Il doit
avoir le même nom que la classe dans laquelle il est défini. Il est appelée à chaque
fois qu’un objet d’une classe est créé ou instancié.
11. Une classe peut-t-elle avoir plusieurs constructeurs ? oui
12. Si on déclare plusieurs constructeurs dans une classe, ils doivent respecter les mêmes
règles qui régissent la surcharge d’une fonction. C’est à dire que leurs paramètres
doivent différer en nombre et/ou en type.
13. Si une classe ne possède pas de constructeur. Un constructeur par défaut est créé
automatiquement.
14. Un destructeur ressemble à une fonction mais n’a pas de type de retour ni de
paramètres. Il doit avoir le même nom que la classe, précédé du caractère ˜ (ou
tilde). Il est appelée automatiquement à chaque fois qu’un objet d’une classe est
hors de portée.
15. Une classe peut-t-elle avoir plusieurs destructeurs ? non

1
2. Héritage
16. L’héritage est un mécanisme permettant de dériver une nouvelle classe à partir
d’une classe existante.
17. Remplir le tableau suivant :

Accessible à l’interieur de la classe Accessible aux classes filles Accessible n’importe où


Membre private oui non non
Membre protected oui oui non
Membre Public oui oui oui

18. La classe dérivée peut définir de nouveaux membres en plus de ceux hérités à
partir de la classe mère.
19. Étant donnée la classe B définie par : class B : public A {...}
– Les membres public de la classe A deviennent public dans la classe B.
– Les membres protected de la classe A deviennent protected dans la classe B.
– Les membres private de la classe A deviennent inaccessibles dans la classe B.
20. Étant donné la classe B définie par : class B : protected A {...}
– Les membres public de la classe A deviennent protected dans la classe B.
– Les membres protected de la classe A deviennent protected dans la classe B.
– Les membres private de la classe A deviennent inaccessibles dans la classe B.

3. Polymorphisme
21. Étant donnée deux classes B et C dérivées d’une classe A et le tableau tab déclarée
comme suit : A tab[10];. Choisir la bonne proposition :
(a) le tableau tab peut contenir des objets de type B et C.
(b) le tableau tab peut contenir des objets de type A, B et C.X
(c) le tableau tab peut seulement contenir des objets de type A.
22. Une classe B dérivée d’une classe A peut modifier le comportement des méthodes
hérités de la classe A en utilisant la redéfinition de fonctions. Pour cela, le nom,
le type et le nombre de paramètres de la méthode héritée doivent être identiques
à celle de la classe mère.

Problème
Dans le cadre du développement d’un jeu de course automobile. Les programmeurs
ont voulu implémenter les voitures de course en suivant une méthodologie orientée objets.
Chaque voiture possède une vitesse actuelle. Une voiture peut accélerer et freiner.
L’accélération incrémente la vitesse tandis que le freinage décremente la vitesse si elle est
supérieur à 0. Lors de sa création, une voiture a une vitesse égale à 0. Certaines voitures
possèdent des caractèristiques spécifiques : La Ferrari possède une commande turbo qui

2
permet d’augmenter la vitesse de 30 unités ; La BMW possède une frein ABS qui permet
de diminuer la vitesse de 10 unités.
Ecrire en c++ la déclaration des classes Voiture, Ferrari et BMW.

class voiture {
protected :
int vitesse;
public :
voiture() {
vitesse = 0;
}

void accelerer() {
vitesse++;
}

void freiner() {
if (vitesse>0) {
vitess--;
}
}
}

class ferrari : public voiture {


public:
void turbo() {
vitesse = vitesse + 30;
}
}

class bmw : public voiture {


public :
void freiner() {
vitesse = vitesse - 10;
}
}