IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[fonctions virtuelles] appel de fonctions de la classe mere


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut [fonctions virtuelles] appel de fonctions de la classe mere
    (re) bonjour � tous!
    Suite � la discussion lanc�e par moi-m�me : http://www.developpez.net/forums/sho...64&postcount=1
    J'aimerai avoir votre avis sur le type de comportement � mettre dans ce cas un peu particulier d'h�ritage:


    J'ai la classe C qui d�rive de la classe B, qui elle m�me d�rive de A (abstraite)

    La fonction membre A::test() ne convenant pas dans C, il faut la r�impl�menter : B::test().
    Par contre, pour ma classe C, l'impl�mentation de la classe m�re A est correcte.

    Y a t-il un choix judicieux � faire? i.e. d�clarer test() comme virtuelle, virtuelle pure, ou bien ne rien d�clarer du tout? La fonction test() utilis�e dans la classe C pourrait elle naturellement appeler la fonction membre d�clarer dans la classe m�re abstraite A???

    Encore merci pour vos r�ponses !

  2. #2
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    La fonction test() utilis�e dans la classe C pourrait elle naturellement appeler la fonction membre d�clarer dans la classe m�re abstraite A???
    Oui. Mais bon �a para�t bizarre comme situation. Tu peux expliquer un peu pourquoi le comportement par d�faut n'est pas bon dans B mais l'est dans C ?

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Oui bien s�r...
    Une bonne partie de l'explication est sur http://www.developpez.net/forums/sho...d.php?t=287988

    J'ai deux classes qui d�rivent de A en fait, comme sur le diagramme des classes joint au post ci dessus...
    En gros, la classe C est une partie de la classe B... Tout est pareil, sauf que la classe n'est consitu�e que d'une seule image infrarouge, alors que B de deux images infrarouges.... (cf post ci pr�cedemment cit�)

    Cette mod�lisation est m�rement r�f�chie, et je pense correcte!

  4. #4
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    C'est louche. Tu parles de contenance et pourtant tu h�rites.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Citation Envoy� par Luc Hermitte
    C'est louche. Tu parles de contenance et pourtant tu h�rites.
    J'ai parl� de contenance? Tu dois surement avoir raison, mais je vois pas ce quoi tu parles...

    Sinon, mon probl�me pourrait se r�sumer ainsi :
    Soit trois classes A B, et C(classe m�re). B est une classe extrement voisine de la classe A. Tous les traitements valables pour A sont valables pour B, exept� setImageReferenceIR() qui est diff�nte dans B.
    Deux choix s'offrent � nous:
    *Mettre les classes A et B sur le m�me plan, toutes les deux h�ritant de C. Ils faudra impl�menter toutes les m�thodes dans chaqune de ces classes.
    *Faire h�riter B de A, et r��crire la m�thode setImageReferenceIR() uniquement.


    J'esp�re avoir �t� clair ,

  6. #6
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Pourquoi n'avez-vous pas opt� pour un design de type "template method" ?

  7. #7
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Citation Envoy� par poukill
    Tout est pareil, sauf que la classe n'est consitu�e que d'une seule image infrarouge, alors que B de deux images infrarouges....
    Pour moi, c'est l� que tu parles de contenance. Je peux me tromper.
    Je ne vois pas comment un truc qui d�rive peut avoir moins que ce dont il d�rive. Cela me parait gu�re substituable, donc sujet � d�rivation (publique).

    Si tu ne vois pas ce � quoi je fais allusion, sur object mentor tu as des articles sur le LSP et sur comme quoi les carr�s ne sont pas des rectangles.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  8. #8
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Citation Envoy� par Luc Hermitte
    Pour moi, c'est l� que tu parles de contenance. Je peux me tromper.
    Je ne vois pas comment un truc qui d�rive peut avoir moins que ce dont il d�rive. Cela me parait gu�re substituable, donc sujet � d�rivation (publique).

    Si tu ne vois pas ce � quoi je fais allusion, sur object mentor tu as des articles sur le LSP et sur comme quoi les carr�s ne sont pas des rectangles.
    Je suis emb�t� Luc, tu est en train de me montrer que j'ai tort

    Plus s�rieusement, B poss�de deux images infrarouges, alors que A une seule. C'est ce que j'ai dit...
    Maintenant, la r�alit� est la suivante :
    L'objet A est vu par une cam�ra infrarouge � deux CCD (2 secteurs de 30�)
    L'objet B est vu par une cam�ra infrarouge � deux CCD aussi (1 secteur de 30� en haute r�solution)
    Donc en fait l'objet B est la moiti� de l'objet A (on ne voit qu'un secteur, mais "zoom�" )

    C'est bien un m�canisme d'h�ritage pour moi � mettre en oeuvre, car B est une partie de A! Juste qu'ici, tout va bien. Le probl�me c'est que les physiciens font l'analyse d'un seul secteur � la fois : je ne dois prendre en compte dans mes calculs qu'un seul des 2 secteurs pour l'objet A.

    Mis � part cette fonction membre � impl�menter diff�remment, les objets A et B sont les m�mes, une fois que j'ai pris la "moiti� de l'objet A".
    Mais B est bien une cons�quence de A...

    Ton avis m'int�resse beaucoup Luc,

    Merci � tous pour votre aide !

  9. #9
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par poukill
    Je suis emb�t� Luc, tu est en train de me montrer que j'ai tort
    Et je crains qu'il n'ait raison.

    C'est bien un m�canisme d'h�ritage pour moi � mettre en oeuvre, car B est une partie de A!
    Si B est une partie de A, A doit contenir un B, pas B heriter de A.

    Juste qu'ici, tout va bien. Le probl�me c'est que les physiciens font l'analyse d'un seul secteur � la fois : je ne dois prendre en compte dans mes calculs qu'un seul des 2 secteurs pour l'objet A.
    Introduire une classe secteur?

  10. #10
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Citation Envoy� par Luc Hermitte
    Pour moi, c'est l� que tu parles de contenance. Je peux me tromper.
    Je ne vois pas comment un truc qui d�rive peut avoir moins que ce dont il d�rive. Cela me parait gu�re substituable, donc sujet � d�rivation (publique).
    Hum... Tu as raison Luc.
    L'inverse serait bien entendu beaucoup plus logique...

    Le truc, c'est qu'au d�but de mon projet, je n'avais que deux classes (Antenne et LPT), toutes les deux d�rivant de ma classe m�re abstraite.
    Depuis, une nouvelle cam�ra haute r�solution est install�, alors j'ai rajout� cette classe LPT_HR (que j'ai juste appel� HR ) HR = Haute R�solution

    Dans ce cas l�, que faut-il faire? Remodifier la conception pour faire h�riter LPT de HR? Ma conception �tait mauvaise, car pas assez "robuste"?
    Ca m'emb�te d'admettre que ma conception est pourrie, car j'y ai pass� du temps, beaucoup de temps...

    Alors, dites moi... Je vous �coute. Je suis pr�t � recoder s'il le faut ! ^^


    Merci � vous en tous cas pour votre aide !

  11. #11
    Expert confirm�

    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    4 253
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par d�faut
    Il n'y a qu'une grande r�gle � l'h�ritage: B h�rite de A si et seulement si tout objet B EST UN A.

    Donc si HR h�rite de LPT, ca veut dire que tout HR est un LPT....

    Pour se ramener au code, imagines le code utilisateur de tes objets... Un bout de code qui prend un LPT en entr�e doit toujours fonctionner avec un HR, puisque LPT en h�rite ! Donc tout HR est un LPT.

  12. #12
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Ok merci � vous deux...
    J'ai command� pour l'instant :

    1)Herb Sutter/ Andrei Alexandrescu - Standard de programmation en C++
    2)B. Meyer - Conception et Programmation Orient� Objet
    3)Design Patterns T�te la premi�re

    Ca, c'est fait.
    Citation Envoy� par Luc Hermitte
    1) Herb Sutter/ Andrei Alexandrescu - Standard de programmation en C++
    -> Tr�s bien. Mais il y a peut �tre d'autres choses � connaitre avant -- genre AC++. Je ne sais pas s'il est imm�diatement pertinent.
    Je ne suis pas s�r de comprendre ce que tu veux dire. Quelle choses � conna�tre avant?
    Le commentaire de bigboomshakala n'en fait pas vraiment mention :http://c.developpez.com/livres/#L2744071447
    Donc si tu pouvais t'expliquer un peu plus, ce serait sympa.

    Merci !

  13. #13
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Le genre de choses � connaitre avant ?
    Le C++

    Le truc est que je ne sais pas s'il convient � des nouveaux arriv�s. Ceci dit, il explique des choses importantes que tu ne trouveras dans aucun cours.
    Donc, je ne sais pas.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  14. #14
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par Luc Hermitte
    Le genre de choses � connaitre avant ?
    Le C++
    Le C++ efficace est � mon avis � lire avant.

    Le truc est que je ne sais pas s'il convient � des nouveaux arriv�s. Ceci dit, il explique des choses importantes que tu ne trouveras dans aucun cours.
    Donc, je ne sais pas.
    C'est un livre bizarre que je n'ai pas appr�ci� beaucoup. Le titre est d'une part de nature � induire en erreur, d'autre part, il m�lange des conseils de plusieurs natures sans pr�ciser justement la nature, ce qui fait que certaines choses peuvent �tre ais�ment mal comprises. Il faudrait que je le reprenne
    pour pouvoir �tre explicite (mais comme je ne l'ai pas achet�, il faudrait que je m'assure qu'il est toujours au boulot... la derni�re fois que je l'ai vu il �tait sur le bureau d'un coll�gue qui a chang� de site, il n'est pas impossible qu'il l'ai emport�)

  15. #15
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Citation Envoy� par Luc Hermitte
    Le genre de choses � connaitre avant ?
    Le C++
    J'ai d�j� quelques bases en C++ quand m�me

    S'il n'y a que �a, je peux commander aussi le C++ efficace. La derni�re version (3�me �dition) est en Anglais. Ca ne me pose pas vraiment probl�me, mais quand y'a pas mal de trucs � d�fricher, en fran�ais c'est bien aussi!

    Quelle version faudrait-il privil�gier?

  16. #16
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par poukill
    J'ai d�j� quelques bases en C++ quand m�me

    S'il n'y a que �a, je peux commander aussi le C++ efficace. La derni�re version (3�me �dition) est en Anglais. Ca ne me pose pas vraiment probl�me, mais quand y'a pas mal de trucs � d�fricher, en fran�ais c'est bien aussi!

    Quelle version faudrait-il privil�gier?
    La derni�re. Il a ajout� des choses, mis � jour d'autres et enlev� certaines qui n'avaient plus qu'un int�r�t historique.

  17. #17
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Bon, ben j'ai plus qu'� rajouter ce livre � ma prochaine commande...

    Merci Jean-Marc.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Appel de fonction virtuelle pure
    Par Darktib dans le forum Langage
    R�ponses: 16
    Dernier message: 23/05/2009, 09h35
  2. R�ponses: 3
    Dernier message: 09/02/2009, 16h15
  3. Fonction appelant une fonction virtuelle pure
    Par oodini dans le forum C++
    R�ponses: 12
    Dernier message: 19/09/2008, 08h24
  4. R�ponses: 1
    Dernier message: 25/10/2007, 21h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo