Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
941 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Ai-je compris les bases de l'OO ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ai-je compris les bases de l'OO ?

n°1713530
in_your_ph​ion
Posté le 07-04-2008 à 00:21:33  profilanswer
 

Bonjour,
je suis débutant et essaye de voir comment marche la notion d'héritage en c++. J'ai essayé d'écrire les classes correspondant à cet exemple :

 

http://www.commentcamarche.net/poo/images/animaux2.gif

 

j'ai écrites une instance de herbivore qui est elephant, une instance de classe pour carnivore qui est lion et deux instances de classes pour omnivore qui sont humain, et enfant qui hérite de humain car je fais l'hypothèse qu'un enfant peut apprendre et pas un adulte (hypothèse très simple c'est juste pour l''exemple). Pour chaque type d'instance j'ai crée un compteur juste pour pouvoir compter le nombre d'animaux.

 

Pourriez vous me dire ce que vous pensez de mon code ? Est ce qu'il manque des choses ? Y'a t-il des choses que j'ai faites qui sont à proscrire ..ou que j'ai oubliées ...? Bref, est ce que c'est comme çà qu'il faut faire ou y'a des problèmes ?

 

voici mon code :

 
Code :
  1. class Animal {
  2. /* abstract */
  3. public:
  4.  ~Animal() { cout << "destruction d'un animal" << endl; } //car cette classe sera forcément dérivée
  5.  //Animal * creer  ();
  6.  //Animal * cloner (Animal & a);
  7.  virtual void marcher() = 0;
  8.  virtual void manger()  = 0;
  9. protected:
  10.  int position[2]; //variables internes bidon
  11.  int vitesse[2];
  12. };
  13. //==================================================================
  14. class Herbivore : virtual public Animal {
  15. /* abstract */
  16. public:
  17.                 ~Herbivore() {cout << "destruction d'un herbivore" << endl; }
  18.  virtual void manger() { cout << "je mange de l'herbe" << endl ; }
  19. };
  20. class Carnivore : virtual public Animal {
  21. public:
  22.                 ~Carnivore() {cout << "destruction d'un carnivore" << endl; }
  23.  virtual void manger() { cout << "je mange de la viande" << endl ; }
  24. };
  25. class Omnivore : public Herbivore, public Carnivore  {
  26. public:
  27.                 ~Omnivore() {cout << "destruction d'un omnivore" << endl; }
  28.  void manger() { cout << "je mange de tout" << endl; }
  29. };
  30. //================== implémentations de Carnivore ==============================
  31. class Lion : public Carnivore {
  32. public:
  33.  Lion() { cout << "construction d'un lion" << endl; nb++; }
  34.  ~Lion() { cout << "destruction d'un lion" << endl ; }
  35.  void marcher () { cout << "je marche sur mes quatres pattes" << endl; }
  36.   static int nombre() { cout << "il y a" << nb << "lions" << endl; }
  37. private:
  38.  static int nb;
  39. };
  40. int Lion::nb=0;
  41. //================== implémentations d'Herbivore ==============================
  42. class Elephant : public Herbivore {
  43. public:
  44.  Elephant() { cout << "construction d'un élephant" << endl; nb++; }
  45.  ~Elephant()  { cout << "destruction d'un éléphant" << endl; }
  46.  void marcher () { cout << "je marche sur mes quatres pattes" << endl; }
  47.  static int nombre() { cout << "il y a" << nb << "elephants" << endl; }
  48. private:
  49.  static int nb;
  50. };
  51. int Elephant::nb=0;
  52. //================== implémentations d'Omnivore ==============================
  53. class Humain : public Omnivore {
  54. public :
  55.  Humain () {cout << "construction d'un humain" << endl; nb++; }
  56.  virtual ~Humain() { cout << "destruction d'un humain" << endl; } //destructeur virtuel car cette classe instanciable sera dérivée
  57.  virtual void marcher () { cout << "je marche sur mes deux jambes" << endl; }
  58.  static int nombre () { cout << "il y a" << nb << "humains" << endl;  }
  59. private:
  60.  static int nb;
  61. };
  62. int Humain::nb=0;
  63. class Enfant : public Humain {
  64. public:
  65.  Enfant() { cout << "Construction d'un enfant" << endl; nb++;}
  66.  ~Enfant() { cout << "Destruction d'un enfant" << endl; }
  67.  void marcher () { cout << "je marche sur mes deux jambes et mes deux mains" << endl; }
  68.  //le truc en plus qui fait que c'est une spécialisation d'Humain ...
  69.  void apprendre () { cout << "je suis un enfant et je peux apprendre" << endl; }
  70.  static int nombre () { cout << "il y a" << nb << "enfants" << endl; }
  71. private:
  72.  static int nb;
  73. };
  74. int Enfant::nb=0;
 

merci par avance pour vos commentaires !
 :wahoo:


Message édité par in_your_phion le 07-04-2008 à 13:32:26
mood
Publicité
Posté le 07-04-2008 à 00:21:33  profilanswer
 

n°1713733
in_your_ph​ion
Posté le 07-04-2008 à 13:32:39  profilanswer
 

up

n°1713993
in_your_ph​ion
Posté le 07-04-2008 à 19:26:23  profilanswer
 

up ?  :sweat:

n°1714050
in_your_ph​ion
Posté le 07-04-2008 à 22:38:06  profilanswer
 

personne peut me dire un mot sur ce que j'ai fait ?? ...
 
plz ....  :cry:

n°1714179
Ace17
Posté le 08-04-2008 à 11:13:43  profilanswer
 

Un decoupage en classes n'est pas universel. Il depend du probleme a modeliser. Difficile de savoir si tu as compris les bases de l'OO avec du code qui ne modelise aucun probleme.

n°1714306
in_your_ph​ion
Posté le 08-04-2008 à 13:18:39  profilanswer
 

Ace17 a écrit :

Un decoupage en classes n'est pas universel. Il depend du probleme a modeliser. Difficile de savoir si tu as compris les bases de l'OO avec du code qui ne modelise aucun probleme.


 
salut!
ok, merci pour ta réponse.... mais quand meme, les classes sont censées modéliser le problème avec l'image, non ? bon c'est vrai que y'a aucune méthode d'implémentée ... mais en fait c'est surtout au niveau des virtual ou je ne suis pas sur

n°1714523
ElDesdicha​do
Posté le 08-04-2008 à 17:01:54  profilanswer
 

Ouais enfin faire de l'héritage multiple avec des schémas en losange et donc de l'héritage virtuel c'est tout de même assez éloigné des bases de l'OO et ça pose pas mal de problèmes c'est un peu comme poser la question:
"Est-ce que j'ai compris les bases de l'analyse?" et de partir dans les recoins de la théorie de la mesure. Si tu veux vraiment faire du design objet à la base tu devrais éviter de commencer par ça...

n°1714537
in_your_ph​ion
Posté le 08-04-2008 à 17:13:06  profilanswer
 

ElDesdichado a écrit :

Ouais enfin faire de l'héritage multiple avec des schémas en losange et donc de l'héritage virtuel c'est tout de même assez éloigné des bases de l'OO et ça pose pas mal de problèmes c'est un peu comme poser la question:
"Est-ce que j'ai compris les bases de l'analyse?" et de partir dans les recoins de la théorie de la mesure. Si tu veux vraiment faire du design objet à la base tu devrais éviter de commencer par ça...


 
ok ... en fait c'est parce que ça me semble être le plus compliqué donc si je pige ça c'est toujours un plus. Sinon par quoi je devrais commencer ?

n°1714543
ElDesdicha​do
Posté le 08-04-2008 à 17:20:59  profilanswer
 

Attend d'avoir des messages du compilo genre inheritance via dominance ;)
 
Pour ce qui est de commencer, ben héritage simple avec les mécanismes de polymorphismes, forme du coplien chère à JoelF, etc... Y a plein de sites dans le Bibliolink et tu pourras toujours de faire plaisir plus tard avec de l'héritage multiple.

n°1714556
in_your_ph​ion
Posté le 08-04-2008 à 17:38:54  profilanswer
 

ElDesdichado a écrit :

Attend d'avoir des messages du compilo genre inheritance via dominance ;)
 
Pour ce qui est de commencer, ben héritage simple avec les mécanismes de polymorphismes, forme du coplien chère à JoelF, etc... Y a plein de sites dans le Bibliolink et tu pourras toujours de faire plaisir plus tard avec de l'héritage multiple.


 
ok, merci. je vais jeter un œil à tout ça ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Ai-je compris les bases de l'OO ?

 

Sujets relatifs
[Access]Blocage d'ouverture à cause de mdp vers bases liéesJe cherche des bug tracker basés sur JEE
[Resolu] Php + plusieurs bases AccessTirage aléatoire de 7 nombres compris entre 1 et 49
Tester la connexion à X bases MySQLSynchroniser tables de deux bases de données en VB.NET
Synchro de bases access sous accessApplication de réplication entre 2 bases différentes
agument par default ( c'ets normal??) EDITSyncrhoniser deux bases mysql
Plus de sujets relatifs à : Ai-je compris les bases de l'OO ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR