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 :

derivation ou composition ?


Sujet :

C++

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par d�faut derivation ou composition ?
    Salut,

    Ce n'est pas la premiere fois que je me pose la question mais je n'y ai jamais apporte de reponse pertinante :

    J'ai une classe A qui n'a aucun membre ou methode protected. J'ai besoin d'en utiliser les methodes public dans une classe B. Dois-je deriver B de A ou dois-je simplement declarer une instance de A dans B ? Pourquoi ?

  2. #2
    Membre �prouv� Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    D�tails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par d�faut
    en fait rouge.















    Bon, pas compris en fait, ca manque de pr�cision, que fait A, que fait B, comment/pourquoi A a besoin de B... comme ca on ne peux pas t'en dire plus.

    P.S. : de plus, y aurai pas une section modelisation/conception ? les gens seraient plus aptes a te repondre.

  3. #3
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    A d�crit-elle une interface que B va exposer? Si oui: h�ritage.
    A fournit-elle un service que B va utiliser (mais qui sera masquer aux utilisateurs de B): alors composition et d'autant plus que A ne peut qu'une impl�mentation d'un service n�cessit� par B.
    C'est un peu rapide comme r�ponse et va aussi d�pendre de ta conception. En fait, un peu plus de d�tails pour r�pondre plus assur�ment � la question seraient n�cessaires.

  4. #4
    Membre �clair�
    Inscrit en
    Mai 2006
    Messages
    330
    D�tails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par d�faut
    La d�rivation servirait uniquement si B "est une sorte" de A
    Apparemment ce n'est pas le cas.

    Ensuite tu as le choix entre :
    1- avoir un membre de B qui est un A (ou une r�f�rence sur A)
    2- instancier A � l'int�rieur des m�thodes B
    3- faire de A une classe statique qu'on peu appeler sans l'instancier dans B
    4- passer une instance de A en param�tre des m�thodes de B qui l'utilise
    5- surement d'autres choses

    Je ferais :
    1 s'il existe un lien suffisamment fort entre A et B (du genre B a besoin de A � plusieurs reprises) avec une r�f�rence si A vis sa vie ind�pendamment de B, et une instance s'il y a un A par B.
    2 si B n'a besoin de A qu'une ou deux fois sans avoir de contexte
    3 si les m�thodes de A sont d'ordre utilitaire et n'ont pas de notion de contexte d'autant plus si A est susceptible d'�tre utilis�e par plusieurs classes.
    4 pourrait servir � faire en sorte que B puisse travailler avec diff�rentes instances de A

  5. #5
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    H�ritage public : EST-UN
    Composition : A-BESOIN-DE ou EST-IMPLEMENTE-EN-FONCTION-DE, etc...

    Beaucoup de personnes utilisent � tout va l'h�ritage public alors que dans une �norme proportion de situations, un h�ritage priv� ou une composition suffisent.

    Je te conseille vivement le livre "Mieux programmer en C++" (ou encore mieux la version anglaise ici), livre qui a �t� tir� de Guru Of The Week, site sur lequel tu retrouveras les axes principaux de ce qui est dit dans le livre.

  6. #6
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    La question qu'il faut te poser est :
    puis-je estimer qu'il est s�mantiquement correct de dire que la classe B est une classe A "am�lior�e" (ou "sp�cialis�e")
    Si tu peux d�cemment r�pondre oui � cette question (oui: un chien est un animal), tu peux envisager l'h�ritage.

    Si, par contre tu r�pond non � cette question (non, un v�hicule n'est pas un moteur), mais que tu peux r�pondre oui � la question
    la classe B a-t-elle toutes les caract�ristiques de la classe A
    (oui, un v�hicule a les caract�ristiques de son moteur), il est opportun de choisir l'agr�gation (l'association si tu a la certitude que la classe a ne peut pas exister sans la classe B (quand B contiend A ) )
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  7. #7
    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
    Attention avec le terme "am�lior�" ... j'ai d�j� vu des d�butant faire h�riter une classe Rectangle de Carr� (ben oui... c'est un Carr� am�lior�... avec plus d'informations !).

    Donc en fait l'h�ritage (au sens propre du terme, concernant des *objets*, on ne parle pas ici d'impl�mentation) est obligatoirement une sp�cialisation.

  8. #8
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Le probl�me avec les formes g�om�triques, c'est que les cas les plus g�n�raux n�cessitent davantage d'informations.

  9. #9
    Membre �clair�

    Profil pro
    �tudiant
    Inscrit en
    Juin 2006
    Messages
    78
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par d�faut
    Citation Envoy� par loufoque Voir le message
    Le probl�me avec les formes g�om�triques, c'est que les cas les plus g�n�raux n�cessitent davantage d'informations.
    C'est la m�me chose avec la plupart des objets math�matiques (cf entier vs r�el).

    Et c'est pour �a qu'il est tr�s risqu� (voir faux) de dire "H�ritage public : EST-UN".

  10. #10
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par d�faut
    Des messages interessants ont malheureusement ete supprimes de cette discussion suite au pb de base de donnees. Dommage.

    Je remercie tout le monde une fois de plus et je tag "resolu".

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

Discussions similaires

  1. [FLASH MX2004][AS2] Composition
    Par bolo dans le forum Flash
    R�ponses: 9
    Dernier message: 10/12/2004, 16h53
  2. Aide sur la cr�ation d'un type simple (nom composite)
    Par testeur dans le forum PostgreSQL
    R�ponses: 1
    Dernier message: 06/11/2004, 20h30
  3. cl�s composites
    Par Yuna dans le forum Administration
    R�ponses: 12
    Dernier message: 08/01/2004, 09h14
  4. autre probleme pour deriver fonction
    Par voyageur dans le forum Math�matiques
    R�ponses: 15
    Dernier message: 28/07/2003, 14h37
  5. [WSAD] Composition visuelle d'une applet
    Par schum11 dans le forum Eclipse Java
    R�ponses: 1
    Dernier message: 09/04/2003, 16h19

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