Vous êtes sur la page 1sur 3
Exercice 1 Programmation Orientée Objet Test d'évaluation 1. Déclarer une classe Animal à 2 champs

Exercice 1

Programmation Orientée Objet Test d'évaluation

1 Programmation Orientée Objet Test d'évaluation 1. Déclarer une classe Animal à 2 champs : un

1. Déclarer une classe Animal à 2 champs : un entier age et une chaine de caractères nom_du_cri. Veiller à déclarer les champs protected.

class Animal

{

protected:

int age; string nom_du_cri;

};

2. Ajouter un constructeur par défaut, un constructeur à 2 paramètres et un destructeur.

3. Définir (implémenter) les méthodes déclarées précédemment.

class Animal

{

protected:

int age; string nom_du_cri; public:

Animal() { age = 3; nom_du_cri = "miolement"; } Animal(int a, string ncri) { age = a; nom_du_cri = ncri; } ~Animal(){ }

};

4. Déclarer et définir une méthode vieillir qui augmente d'une unité l'âge du chien et le retourne.

// déclaration dans class Animal class Animal{

//

public :

int vieillir() ; };

// Implémentation int Animal ::vieillir() { age++ ; return age; }

5. Déclarer et définir une méthode presenter qui affiche l'age et le type de cri de l'animal :

aboiement, henissement, roucoulement, … sous cette forme :

« L'animal a age ans et son cri s'appelle nom_du_cri »

// Déclaration dans class Animal class Animal{

// public :

void presenter() ; };

// Définition void Animal ::presenter() { cout << "L'animal a " << age << " ans et son cri s'appelle " << nom_du_cri << endl; }

Exercice 2

Définir maintenant une classe fille Chien qui hérite publiquement de la classe mère déclarer dans le 1er exercice. On suppose ici que l'aboiement du chien dégage différentes sonorités : « waaf », « woof » ou « grrrh », …

1. Ajouter à la classe fille un champ cri, un constructeur paramétrique, un constructeur par défaut et un destructeur. Le champ nom_du_cri est initialisé à « aboie » dans la liste du constructeur paramétrique.

class Chien: public Animal

{

protected:

string cri; public:

Chien(int a, string cr, string ncri="aboie"):Animal(a, ncri){ cri = cr; } Chien():Animal(6, "aboie"){ cri = "waaf"; } ~Chien(){ }

};

2. Redéfinir dans cette classe fille la méthode presenter. Elle présentera l'animal différemment suivant son âge :

S'il est jeune (moins de 6 ans) : «Le chien a age ans et aboie : cri cri cri » Sinon « Le chien a age et aboie cri »

//Déclaration dans class Chien class Chien : public Animal{

// public :

void presenter() ;

};

//Implémentation

void Chien::presenter()

{

if ( age<6 ) cout << "L'animal a " << age << " ans et aboie " << cri <<" "<<cri<<" "<<cri<< endl; else cout << "L'animal a " << age << " ans et aboie " << cri << endl;

}

3. Dans votre main, définir un objet de la classe Chien et lui appliquer la méthode presenter. Constater quelle méthode est appelée.

Chien boby(5, "grrrh", "aboie"); // ou bien Chien boby ; boby.presenter();

// la méthode appelée est celle de la classe fille Chien. On obtient comme résultat à l'écran :

L'animal a 5 ans et aboie grrrh grrrh grrrh

4. Essayer ensuite avec Animal::presenter.

boby.Animal::presenter();

// La méthode appelée est celle de la classe Mère Animal. On obtient à l'écran L'animal a 5 ans et son cri s'appelle aboie

5. Définir de manière dynamique un objet animal chouchou et un objet chien rex.

Chien *rex; rex = new Chien(7, "woof"); // ou rex = new Chien ; ou encore rex = new Chien(7, "woof", "aboie") ;

Animal *chouchou ; chouchou = new Animal; // ou bien chouchou = new Animal(8, "henissement") ;

6. Appeler la fonction vieillir à partir des objets chouchou et rex.

int age_rex, age_chouchou ;

age_rex = rex->vieillir();

age_chouchou = chouchou->vieillir();