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

Windows Forms Discussion :

[C#] Les interfaces en C# - interet


Sujet :

Windows Forms

  1. #1
    Membre éclairé Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Par défaut [C#] Les interfaces en C# - interet
    pardonnez mon ignorance mais je ne me figure pas bien l'interet de passer par des interfaces.

    auriez vous des exemples?

  2. #2
    Expert confirmé
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Par défaut
    l'interet de l'interface est de passer un contrat entre 2 classes. Une classe A qui implémente l'interface I.

    Ta classe B au lieu d'appeller la classe A et ses méthodes directement, elle passe par l'interface I.

    Si X mois plus tard, ta classe A n'est pas bien implémenté, et que tu veux la refaire. Il suffit que ta classe A'(la classe A recodé) implémente l'interface I et tu es sur que ta classe B pourra toujours appeller les mêmes méthodes par l'intermédiaire de l'interface...

    heu... je sais pas si je suis trés clair ...

  3. #3
    Membre éclairé Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Par défaut
    sisi ok! clair. merci Neo.51

    a l'ancienne ca revenais a implementer un pack de methode c'est ca

    bon bref, je vois ce cas mais on peux pas se permetre de coller une interface entre chaque heritage. J'ai l'impression que le code est peut etre plus lisble en UML mais ca rajoute de la ligne qd meme.

    qlq ch m'echappe encore, je prend toute les remarques autres que "googol + ..."

    est ce que vous avez des exemples ou l'interface est necessaire?

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par igorzup
    a l'ancienne ca revenais a implementer un pack de methode c'est ca
    non, je ne crois pas...et puis "à l'ancienne" ??? Le concept d'interface existe depuis belle lurette...


    Citation Envoyé par igorzup
    est ce que vous avez des exemples ou l'interface est necessaire?
    Bon, le premier qui me vient à l'esprit :

    dans ton domaine, tu as plusieurs objets que tu veux être capable de cloner...
    Est-ce que tu vas créer une superclasse CloneableClass et faire hériter toute ta hiérarchie ? Ben non, c'est stupide on est d'accord, des tas d'objets peuvent être clonable sans avoir aucun rapport hiérarchique entre eux...Donc : interface ICloneable implémentée par chaque objet où c'est nécessaire...

  5. #5
    Membre éclairé Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Par défaut
    ok

    aurais tu un autre exemple paske ca me pose plus de questions que ca en resoud

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    pffff, j'ai pas vraiment le temps de chercher des exemples...en plus si tu veux me pousser dans mes retranchements, on peut dire qu'il n'y a aucun cas où les interfaces sont nécessaires...mais bon, je peux aussi te dire qu'il n'y a aucun cas où l'héritage est nécessaire (on peut tout faire avec des if...) et aucun cas ou le polymorphisme est nécessaire...

    Les interfaces sont un concept d'abstraction de la POO.

    Tu sais ce qu'est une classe abstraite ? hé ben une interface c'est une classe abstraite pure.

  7. #7
    Membre éclairé Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Par défaut
    mouai...

    c'est vrais que ma question fait un peu: "l'avion c'est comme le velo ca permet d'aller plus vite ou pas?"

    Mais le truc c'est que je ne voie d'interet qu'en representation UML.
    Une classe abstraite a un interet d'indexeur et je ne vois pas le gain pour le programmeur a ce nivo...

    ... en dehors de vos deux exemple off course!

    elle est nulle part, n'appartient a personne et ne contient rien... alors pourquoi faire appel a elle?

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Ok...Je te donne un autre exemple rapide :

    Prenons un contrôle graphique imaginaire qui peut contenir une collection d'objet et afficher deux de leurs propriétés : le numéro et le nom.
    Tu veux pouvoir balancer des tas d'objets différents dans ce contrôle : A, B, C, D et E, objets qui n'ont aucun rapport entre eux...

    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
    29
    30
    31
    32
    33
    34
     
     
    public interface IControlable
    {
     int num { get; set; }
     string name { get; set; }
    }
     
    class A : IControlable {}
    class B : IControlable {}
     
    class MyControl
    {
     
    public void Add(IControlable o) {}
     
    public void Display()
    {
    foreach ( IControlable o in this ) {}
    }
     
    }
     
    public class MyWinForm
    {
     public void Populate
     {
      A a = new A();
      B b = new B();
      MyControl control = new MyControl();
      control.Add(a);
      control.Add(b);
     }
    }
    j'espère que ça t'éclaire...

  9. #9
    Membre éclairé Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Par défaut
    vi ca m'eclaire mais c'est pas un feu gregeois!

    merci a vous deux... faut de la patience.

    je laisse la question en suspend au cas ou ... d'autres auraient LA remarque.

  10. #10
    Expert confirmé
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Par défaut
    regardes l'article de Keihilin : http://nx.developpez.com/Articles/DAC/

    Imagine si les objets ADO.NET n'implémentaient pas d'interface

    en regardant de plus prés les composant du framework .NET tu utilises plein d'interfaces (Ilist, IEnumerable, etc...)

  11. #11
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Salut

    je crois que tout a ete dit: tu utilise l'heritage dans une relation "IS-A" (EST UNE en francais si tu prefere)

    Et si tu peux pas parce que:
    - une classe herite deja d'une autre classe
    - il n'y a pas de relation "IS-A" (par exemple tu traite des objets de nature totalement differente mais ayant en commun un "prix")
    - D'autres raisons qui me depassent
    t'utilise l'interface

    Ze livre qu'il te faut:
    http://www.amazon.com/exec/obidos/ASIN/0201715945/102-7872051-7644149

  12. #12
    Membre éclairé Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Par défaut
    merci booooocoup a tous.
    je zieute tout ca.

  13. #13
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Deux autres trucs qui me sont venus en chattant avec neo ce matin:

    - Tu peux implementer plusieurs interfaces (bien evidemment )
    - L'interface a un effet tres interessant: elle inverse les dependances entre les classes

  14. #14
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Par défaut
    Y a une v2 du bouquin, faudra mettre à jour tes liens :)
    http://www.amazon.co.uk/exec/obidos/tg/detail/-/0321247140/ref=pd_sbs_b_1/026-5651387-6160449?%5Fencoding=UTF8&v=glance

  15. #15
    Membre éclairé Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Par défaut
    inverser les dependance entre classes.... hummmmmm

    j'ai beau me frotter le front...

    toute vos reactions m'interessent.
    evidement en travail partagé, l'utilisation peut sembler evidente.
    pour l'instant je ne l'utilise QUE dans un sens de classement, de recapitulatif d'element de dialogue entre deux gros ensembles...
    ca reste lourd pour des commentaires finalement...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2005, 23h26
  2. Réponses: 9
    Dernier message: 03/03/2005, 14h36
  3. [C#] A quoi servent les interfaces???
    Par sof_nns dans le forum Windows Forms
    Réponses: 8
    Dernier message: 28/10/2004, 20h51
  4. à quoit sert les interfaces ?
    Par nytmare dans le forum MVC
    Réponses: 13
    Dernier message: 12/09/2004, 11h57
  5. Réponses: 2
    Dernier message: 31/10/2003, 16h32

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