Orienté object : dérivation ou pas ?
Bonjour,
J'ai comme énoncé ceci :
- Faites une classe EtatCivil qui possède une nationalité et une date de naissance
- Faites une classe Personne qui possède un nom et un etat civil.
Première sol :
Code:
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
| class EtatCivil
{
public:
EtatCivil(string nationalite, string date_naissance)
{
this->nationalite = nationalite;
this->date_naissance = date_naissance;
}
private:
string nationalite, date_naissance;
};
class Personne
{
public:
Personne(string name, string nationalite, string date_naissance)
{
this->name = name;
ec = new EtatCivil(nationalite, date_naissance);
}
~Personne()
{
delete ec;
}
private:
string name;
EtatCivil * ec;
}; |
Deuxième solution:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class EtatCivil
{
public:
EtatCivil(string nationalite, string date_naissance)
{
this->nationalite = nationalite;
this->date_naissance = date_naissance;
}
private:
string nationalite, date_naissance;
};
class Personne : public EtatCivil
{
public:
Personne(string name, string nationalite, string date_naissance) : EtatCivil(nationalite, date_naissance)
{
this->name = name;
}
private:
string name;
}; |
Ma prof me dit que que la deuxième solution n'est pas bonne parce que l'on ne peut pas dire "une personne est un etat civil".
Et moi je trouve la deuxième solution plus belle et elle fonctionne aussi bien !
Qui est raison et surtout pourquoi ? Merci