3.2.8 La classe Langouste

Nous allons créer une autre classe héritant de Crustace, la classe Langouste. Cette classe aura une particularité en plus de parler allemand, elle aura un age (on fait ce qu'on peut).

Voici le fichier langouste.h :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef LANGOUSTE_H
#define LANGOUSTE_H

#include "crustace.h"

//on est pas obligé de mettre #include <iostream> car il est dans crustace.h

class Langouste : public Crustace{
	public:
		Langouste(const std::string & nom = "langouste", int age = 0);
		Langouste(const Langouste & langouste);
		virtual ~Langouste(); //destructeur
		
		void parler();
		//définition de l'opérateur =
		Langouste & operator = (const Langouste & langouste);
		
	private:
		void initLangouste(int age);
		int p_age;
};

#endif

Voici le fichier langouste.cpp :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "langouste.h"

using namespace std;

Langouste::Langouste(const std::string & nom, int age)
	:Crustace(nom)
{
	cout << "constructeur de Langouste" << endl;
	initLangouste(age);
}

Langouste::Langouste(const Langouste & langouste)
	:Crustace(langouste)
{
	cout << "constructeur de copie de Langouste" << endl;
	initLangouste(langouste.p_age);
}

Langouste::~Langouste(){
	cout << "destructeur de Langouste" << endl;
}

void Langouste::parler(){
	cout << "ich Aufruf " << p_nom << " haben Sie " << p_age << " Jahre." << endl;
	//si la traduction est pourrit c'est la faute de babelfish
}

Langouste & Langouste::operator = (const Langouste & langouste){
	initCustace(langouste.p_nom);
	initLangouste(langouste.p_age);
	return *this;
}

void Langouste::initLangouste(int age){
	p_age = age;
}

Et voilà la classe Langouste.