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

Langage Delphi Discussion :

Méthode commune à plusieurs classes


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut Méthode commune à plusieurs classes
    Salut tout le monde,

    J'ai plusieurs class avec des hértiages différents qui n'ont aucun parent en commun et je voudrais pourtant qu'elles disposent toutes de la meme méthode.


    Comment dois je faire ?

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 938
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 938
    Par défaut
    En POO traditionnelle, c'est malheureusement impossible.

    Il faudrait retrouver la méthode par RTTI ou éventuellement utiliser une Interface. (D'autres que moi seront plus à même de te donner plus d'indications. So stay tune. )

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    Merci quand meme Andnotor

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par rvzip64 Voir le message
    Salut tout le monde,

    J'ai plusieurs class avec des hértiages différents qui n'ont aucun parent en commun et je voudrais pourtant qu'elles disposent toutes de la meme méthode.


    Comment dois je faire ?
    tout dépend de ce que tu entends pas là...

    j'aurais tendance à répondre qu'en effet il n'est pas possible de définir une méthode commune à toutes ces classes...mais il reste possible de définir des choses communes...comme une interface par exemple.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    Tu as un exemple simple d'utilisation d'interface ?

  6. #6
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    type
     IMonInterface=interface
      procedure MaMethode;
     end;
     
     TMonButton=class(TButton, IMonInterface)
      procedure MaMethode;
     end;
     
     TMaClasse=class(TMonAncetre, IMonInterface)
      procedure MaMethode;
     end;
     
    procedure FaireQuelqueChose(AMonInterface : IMonInterface);
    begin
      AMonInterface.MaMethode;
    end;
     
    var
     MonButton : TMonButton;
     MaClasse : TMaClasse;
    begin
      MonButton := TMonButton.Create(nil);
      MaClasse := TMaClasse.Create;
      FaireQuelqueChose(MonBouton);
      FaireQuelqueChose(MaClasse);
    end;
    attention cependant si l'objet ne supporte aucune interface IUknown sera réclamée en plus de IMonInterface

    et si tu ne veux pouvoir travailler sur une classe sans la dériver, tu peux toujours créer une classe supplémentaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    type
     TButtonInterface=class(TInterfacedObject, IMonInterface)
     private
      FButton : TButton;
      procedure MaMethode;
     public
      constructor Create(AButton : TButton);
     end;
     
    var
     ButtonInterface : TButtonInterface;
    begin
     ButtonInterface := TButtonInterface(Button1);
     FaireQuelquechose(ButtonInterface);
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    En gros ça veut dire que l'interface définit un ensemble de méthode, mais est ce que je peux faire ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    type
     IMonInterface=interface
      procedure MaMethode;
     end;
     
     
    procedure IMonInterface.mamethode;
    begin
       showmessage('salut');
    end;

  8. #8
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    non !

    l'interface (comme pour une unité) ne produit aucun code, c'est jusque la déclaration des méthodes.

    pour mettre du code, il faut un objet qui implémente l'interface (comme la partie implémentation d'une unité).
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/02/2012, 15h42
  2. Méthode avec composants sur plusieurs classes
    Par isa911Bis dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 08/09/2011, 16h36
  3. Réponses: 5
    Dernier message: 07/06/2007, 17h47
  4. [C# 2.0 / VS 2005] Classes communes à plusieurs projets
    Par oodini dans le forum Visual Studio
    Réponses: 10
    Dernier message: 19/07/2006, 14h47
  5. [MFC] objet commun a plusieurs classes
    Par Info42 dans le forum MFC
    Réponses: 4
    Dernier message: 11/05/2006, 18h52

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