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

Delphi Discussion :

Problème d'héritage orienté objet


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème d'héritage orienté objet
    Bonjour!

    J'ai créé un outil de dessin qui contient des objets dynamiques (i.e. des points, ligne, etc.). Mon diagramme de classe contient en particulier une classe TDessin et une autre TEntité qui est la classe parent des classes TMonPoint et TLigne, par exemple. Un dessin se compose d'entités (composition). Ces entités sont les lignes, points, etc. Je dois réutiliser cette structure pour la rendre plus spécifique. Un TDessin deviendra un TDessinSpécifique et les TEntité deviendront des TAnnotation. Je n'arrive dériver les 2 classes pour arriver à mes fins. Je ne suis pas capable de modifier par l'usage de l'héritage mes traitements pour qu'ils traitent des TAnnotation au lieu de TEntité, car mes classes TMonPoint et TLigne héritent de TEntité et non de TAnnotation. Alors comment puis-je arriver à mes fins? La solution serait-elle l'utilisation d'association au lieu d'héritage?

    Merci à l'avance!

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    A mon avis, il n'y a pas de moyen d'intercaler un héritage comme tu veux le faire (TAnnotation entre TEntite et TLigne par exemple).
    Toutefois, si la classe TLigne hérite de TEntite, tu peux par exemple dériver une classe TAnnotationLigne qui hérite de TLigne dans laquelle tu ajoutes les spécificités

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse rapide!

    C'est une solution envisageable. Par contre, si je comprends bien elle me contraindrait à ajouter une classe pour chacun de mes types d'entités...et la journée que je déciderai d'ajouter un nouveau type d'entité dans mon outil de dessin je devrai ajouter une nouvelle classe dans mon application spécifique...

    Une lumière vient de s'allumer dans ma tête
    Si j'élimine le concept d'héritage entre TDessin et TDessinSpécifique, mon TDessinSpécifique pourrait toujours hériter de TDessin et contenir une liste de TAnnotation. La TAnnotation contiendrait un pointeur vers une TEntité et des infos complémentaires comme qui a fait l'ajout de l'entité et quand. Par conséquent, j'obtiendrais une liste de TEntité et une liste de TAnnotation dans ma classe TDessinSpécifique. De cette façon je pourrais surcharger les traitements comme AddPoint ou AddRectangle de ma classe TDessin pour que par exemple, lors de l'ajout d'entités sur le dessin par l'utilisateur je puisse créer une instance de TAnnotation et affecter son pointeur de TEntité à l'entité qui est en cours de création.De cette façon je n'affecterais aucunement ma structure de base et j'obtiendrais une maintenabilité plus facile.

    Croyez-vous que ce serait une bonne solution? Est-ce une bonne façon de faire?

    Merci encore!

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    C'est une bonne solution
    Le seul "pépin" c'est que ce sera galère de retrouver l'annotation associée à l'entité. Tu peux aussi ajouter une variable dans ta classe TEntite qui pointe vers la liste des TAnnotation. S'il n'y a pas d'annotation, elle sera à nil (ou -1) sinon, elle pointe vers l'annotation associée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Orienté Objet
    Par A&Z dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/08/2008, 14h25
  2. Comment créer un composant orienté objet par héritage ?
    Par Amenofis dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/12/2007, 10h21
  3. Problème d'orienté objet
    Par zenux dans le forum C++
    Réponses: 6
    Dernier message: 21/11/2007, 19h44
  4. Problème d'héritage css (classe et objet)
    Par Askle dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 03/06/2007, 20h11
  5. Problème de programmation orientée objet
    Par dan65 dans le forum WinDev
    Réponses: 8
    Dernier message: 17/09/2006, 01h04

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