Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : les classes derivees [ Divers / Débutant(e) ] (Adeon)

samedi 4 août 2007 à 19:18:53 | les classes derivees

Adeon

Je pense avoir tout compris sur les classes sauf un petit point. le voici :

Considerons ces 3 classes :
class Vehicule
{
      float VitesseMoyenne;
      bool 1Avion0Voiture; //=true si c'est un avion, =false si c'est une voiture
      void SetInfo(Vehicule* VehiculeToSet);
};

class Avion : public Vehicule
{
      float altitude;
};

classe Voiture : public Vehicule
{
      int NbVitesse;
};

Bon c'est très shématique mais c'est plus facil a comprendre !
Tout le monde a une vitesseMoyenne.
l'information altitude est spécifique a l'avion.
l'information NbVitesse est spécifique a la voiture.

Maintenant imaginons la fonction SetInfo(Vehicule* VehiculeToSet) qui doit, pour une raison quelconque, quand elle est appelée, regler l'altitude a 10000 si son argument est un avion ou regler le nombre de vitesse a 5 si c'est une voiture.

Je la fabriquerai comme cela :
void Vehicule::SetInfo(Vehicule* VehiculeToSet)
{
      if ( VehiculeToSet->1Avion0Voiture ) { ((Avion*)VehiculeToSet)->altitude = 10000; }
      else { ((Voiture*)VehiculeToSet)->NbVitesse = 5;  }
}

Je me dit que l'argument est du type Vehicule et que par conséquant toucher a autre chose que les variables de vehicule est prohibé. Pourtant, pas d'erreur dans la compilation, a priori, ca marche Mais est-ce juste ? Si non comment corriger la fonction ?

Merci de votre aide

______________________
Adeon
[ Lien ]


samedi 4 août 2007 à 20:05:48 | Re : les classes derivees

dletozeun

Salut,

Je connais pas parfaitement le c++, mais ce que tu as ecris ne me choque pas vu que dasn ta fonction SetInfo tu castes VehiculeToSet vers un type de classe dérivé de la classe Vehicule. Or Avion ou Voiture n'est q'une classe Vehicule avec des choses en plus....donc je vois pas de difficulté a convertir un objet de type Vehicule en un objet de type Avion ou Voiture, aucune donnée n'est perdue. Par contre il me semble que C++ interdit l'inverse.

Sinon ta fonction SetInfo sert à rien si tu la rend pas public.

dimanche 5 août 2007 à 02:35:30 | Re : les classes derivees

caiman125

SALUT  
tu peut declarer setinfo comme virtuel et puit tu la declare dans chaque classe fille sant acceder au variable de la classe pour savoire le type de vehicule

dimanche 5 août 2007 à 14:02:02 | Re : les classes derivees

dletozeun

caiman125, oui ca semble etre la meilleure solution...
Adeon, ne prends pas en compte ce que je viens de dire plus haut, je crois que c'est faux, prends comme moi un bon cours de C++ pour comprendre ça ^^

dimanche 5 août 2007 à 18:17:15 | Re : les classes derivees

juju12

Cast de mère vers fille à éviter comme la peste.
Au fait un truc : les variables pour identifier le type de classe, c'est un peu maladroit et contraire aux principes de la POO. Dans ton cas, c'est un exemple type de l'utilisation de l'héritage (virtuel).


dimanche 5 août 2007 à 18:52:49 | Re : les classes derivees

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
Evidemment il ne faut pas faire de cast ici, mais définir la méthode SetInfo en virtuelle afin de la définir différemment dans chaque sous classe:

class Vehicule
{
  float VitesseMoyenne;
public:
  //bool 1Avion0Voiture;
  virtual void SetInfo() = 0;
};

class Avion : public Vehicule
{
  float altitude;
public:
  virtual void SetInfo();
};

class Voiture : public Vehicule
{
  int NbVitesse;
public:
  virtual void SetInfo();
};

void Avion::SetInfo()
{
  altitude = 10000;
}

void Voiture::SetInfo()
{
  NbVitesse = 5;
}

int main()
{
  Avion a;
  Voiture v;
  a.SetInfo();
  v.SetInfo();
}


_____________________________________
Un éditeur de ressources gratuit pour Windows


lundi 6 août 2007 à 19:20:17 | Re : les classes derivees

Adeon

Merci a tous pour votre aide! je vais de ce pas corriger quelques petits bouts de mon code ^^.

______________________
Adeon
[ Lien ]


mercredi 8 août 2007 à 19:48:33 | Re : les classes derivees

Adeon

Au cas ou, je rajoute ce lien qui me semble interressant :
[ Lien ]

______________________
Adeon, programmeur de jeux sur directX 9 ( [ Lien ]) a votre service !


mercredi 20 août 2008 à 23:03:17 | Re : les classes derivees

bissss



location des voitures en UML



Cette discussion est classé dans : classes, voiture, vehicule, avion, vehiculetoset


Répondre à ce message

Sujets en rapport avec ce message

Programme qui permet de choisir une voiture. [ par mc.solaar3 ] Je m'appelle Pierre j'ai 15 ans et je voudrais créer un programme qui permet de sélectionner une voiture qui correspond le mieux aux préférence que vo liste contenant un objet d'une de mes classes [ par Eric ] Salut,Je voudrais créer une liste contenant comme objet une de mes classes..par exemplelist ma_Liste_de_ma_Classe;mais je ne sais pas comment m'y pre classes ou juste fonctions ? [ par madVinz ] Salut!Comment choisir entre faire des classes ou juste des fonctions ???merci, @+ dll chargée implicitement [ par pakrette ] bonsoir, j'essaye de charger une dll implicitement grâce à un ".lib" et un ".h". Le ".lib" est bien reconnu, quand je change une lettre, il apparaît u INSTANCIER UNE CLASSE D'UNE DLL [ par KL ] Bonjour,J'ai un enorme problème !J'ai créé une DLL avec des classes dedansMaintenant je veux pouvoir importer ces classes dans un prog Win32 et pouvoi [ URGENT ] Problème d'inclusion récursifs pour classes interdépendantes ( Fils<->Pere ) [ par beepmaster ] J'ai un petit problème d'include en C++, j'espère que vous pourrez m'éclairer. J'ai passé pas mal de temps dans le VB et le JAVA où ces problèmes d'in Problème "général" avec Direct3D, HELP ! [ par ProGamer ] J'ai commencé une application Direct3D. Elle était constituée d'une classe principale qui contenait l'objet LPDIRECT3D8. Tout marchait bien. Ensuite, Pb : insertion de classes [ par tweet ] Bonjour,voila, j'ai créé un programme en c++ sur lequel je voudrais posé une interface graphique. Le problème est qu'en réalisant un projet MFC applic Classes - pls help ! [ par zeratul67 ] Salut !C assez simple: je comprend rien au classes.Est-ce que qq1 aurait une explication simple, un lien vers une explication ou qqch comme ca ?Y a-t- Registre [ par thebigbang ] bonjour,sur ce site, et sur d'autres, j'ai trouvé des classes en C++ permettant d'accéder à la base de registre...mon problème vient du fait que je n'


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.