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

Framework .NET Discussion :

à quoi servent les interfaces ?


Sujet :

Framework .NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut à quoi servent les interfaces ?
    Bonjour, dans plusieurs tutos traitant de la programmation orientée objet, on parle d'interface.

    malgré des recherches sur divers sites, je ne parviens à bien comprendre leur utilité.

    Quelqu'un pourrait il m'éclairer à ce sujet??

    D'avance merci

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Une interface, c'est un peu comme une classe abstraite sans les désavantages.

    En fait une interface ne contient que des déclarations de méthodes. Une classe qui implémente une interface devra donc obligatoirement implémenter toutes les méthodes de l'interface en question.
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu peux te représenter une interface comme un contrat.

    Toute classe implémentant l'interface devra implémenter les méthodes qui la compose pour que le contrat soit respecté


    A+


    PS: Je déplace dans un autre forum

  4. #4
    Membre du Club

    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 38
    Points : 64
    Points
    64
    Par défaut Interface
    Oui Thoams,

    les inetrfaces sont des contrats entre les classes qui implémente cette interface, une abstraction (c'est comme ça qu'on implémente l'abstraction avec les classes abstraite et les interfaces)

    voici un exemple :

    on a l'interface Isaisissable contient les méthodes setValeur() , getValeur()
    et on a les classe TextField , numericField .. ils sont des calsses component il hérite respectivement de TextField , TextField (les composant standard de WinForms) ont les surcharges pour ajouter notre propre signature. et ces calsses implémente Isaisissable donc on doit implémenté obligatoirement setValeur et GetValeur dans chaque classe.

    le but :
    si on a des compoosants saisisable et d'autre non alors comment savoir les quelles sont saisisable

    if (classe is Isaisable)
    {
    // Donc on peux faire le cast pare la suite on trouve la valeur du composant

    ((Isaisable)classe).GetValeur

    }

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Points : 82
    Points
    82
    Par défaut
    J'ai également besoin d'eclaircissements au sujet de l'utilisation de 'interface'.

    Lorsque ma classe parente implémente une interface, mes classes enfants ne sont apparement pas obligés d'instancier les méthodes de cette interface. Je suis obligé de les faire également implémenter l'interface en question.

    Ai-je correctement compris ce point ?

    Venant du C++ Win32, je trouve ça étrange que la classe enfant n'ait pas l'obligation d'instancier les méthodes de la classe parentes (comme c'est le cas en C++ pour les classes abstraites avec les fonctions virtuelles pures).

    Deuxième précision : ai-je la possibilité de ne pas implémenter de méthode par défaut dans la classe abstraite parente (idem C++ avec fonctions virtuelles pures)

  6. #6
    Membre du Club

    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 38
    Points : 64
    Points
    64
    Par défaut
    une classe qui implémente une interface doit obligatoirement implémenter tous ces méthodes.

    pour la deuxiéme précission oui tu peux ne pas implémenter les méthodes dans la classe abstraite mais tu met juste la signature, et t'implémente la méthode dans la classe enfants.


    autre chose ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Points : 82
    Points
    82
    Par défaut
    Merci N.Anis

    Citation Envoyé par N.Anis
    une classe qui implémente une interface doit obligatoirement implémenter tous ces méthodes.
    Je n'ai pas compris ce point. Je vais exprimer ma problèmatique plus clairement.

    Ex :
    J'ai une classe abstraite 'Organisme' qui hérite de l'interface IClonable
    J'ai une classe enfant 'Humain' qui hérite de 'Organisme'.
    Je pensais être contraint par le compilateur d'implémenter les fonctions de IClonable dans 'Humain'... et ça n'est pas le cas.

    En fait, j'aimerais simplement retrouvé la logique des fonctions virtuelles pures du C++

  8. #8
    Membre du Club

    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 38
    Points : 64
    Points
    64
    Par défaut
    Salut,

    ta classe "Organisme" implémente IClonbale. donc donc vous avez implémenté les méthodes qui se trouvent dans l'interface dans la classe abstraite.

    ta classe hérite de "Organisme" et Organisme implémente IClonable donc tu n'implémente pas les méthodes de IClonable dans ta classe mais dans "Organisme".

    j'espére que vous avez compris

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Points : 82
    Points
    82
    Par défaut
    Cela signifie que si je veux obliger mes classes héritant de Organisme à implémenter certains fonctions, je ne peux pas utiliser les interfaces...

    Merci

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 206
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par Exsilius
    Cela signifie que si je veux obliger mes classes héritant de Organisme à implémenter certains fonctions, je ne peux pas utiliser les interfaces...

    Merci
    Si Organisme les implémente en tant que méthodes abstraites, les classes qui héritent devront les implémenter concrètement.

    Une autre solution serait que les classes dérivées d'Organisme implémentent directement l'interface, alors qu'Organisme ne le fait pas (une interface n'est pas forcément implémentée dans une classe ancêtre).

    Par ailleurs, comme avantage des interfaces, tu as le fait qu'une variable peut être de type d'une interface donnée, autrement dit elle accepte tous les objets qui implémentent cette interface. Cette façon d'implémenter le polymorphisme permet une sorte d'héritage multiple. Cela permet aussi de passer comme paramètre les objets qui implémentent ces interfaces.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Points : 82
    Points
    82
    Par défaut
    Merci Promeneur.

    C'est la première méthode m'intéresse puisque j'aimerais que classes enfants n'ait aucune interface à hérité.

    Pourrais tu me donner un peu plus de détail au niveau de la syntaxe.

    A priori, ni mon interface ni ses méthodes ne doivent être abstraite dans leur déclaration.

    Je suppose donc que c'est effectivement lors de leur implémentation dans la classe mére que je les déclare 'abstract'. Mais là, nous avons semblet-il quelques problèmes de syntaxe...

  12. #12
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par Cardi
    Une interface, c'est un peu comme une classe abstraite sans les désavantages.
    C'est quoi les "désavantages" d'une classe abstraite ?
    Moi je vois plutôt plein d'avantages à la classe abstraite par rapport à l'interface : tu peux y mettre du code et tu peux y mettre des champs

  13. #13
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Cardi
    Une interface, c'est un peu comme une classe abstraite sans les désavantages.
    Cette définition me semble quelque peu biaisée ....

    Je ne vois ni avantage ni désavantages à une classe abstraite vs une interface. Ce sont deux choses pour deux usage différents.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  14. #14
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par Bluedeep
    Cette définition me semble quelque peu biaisée ....

    Je ne vois ni avantage ni désavantages à une classe abstraite vs une interface. Ce sont deux choses pour deux usage différents.
    En terme de polymorphisme, y'a quand même un gros gros point commun... et donc un usage similaire
    Mais bon... chui d'accord que dans 90% des cas ces deux solutions ne sont pas intervertible.

  15. #15
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Citation Envoyé par Bluedeep
    Cette définition me semble quelque peu biaisée ....

    Je ne vois ni avantage ni désavantages à une classe abstraite vs une interface. Ce sont deux choses pour deux usage différents.
    Je ne voulais pas être négatif en disant ça.

    c'est juste que lorsqu'une classe implémente une interface, elle implémente toutes les méthodes de cette interface et puis c'est tout.

    Les classes abstraites représentent tout un processsus en terme de compréhension et de manipulation bien plus élaboré: On peut aller très loin mais avec difficulté par moment lorsqu'on est novice.
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

Discussions similaires

  1. [POO] A quoi servent les interfaces en php ?
    Par eilijah dans le forum Langage
    Réponses: 6
    Dernier message: 07/11/2013, 12h16
  2. [MySQL] A quoi servent les réferences entre les tables??
    Par Alain15 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/02/2006, 16h19
  3. A quoi servent les index dans une BDD ?
    Par Melvine dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 25/10/2005, 12h14
  4. [CR 10] A quoi servent les Templates Fields ?
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 10/11/2004, 10h52
  5. [C#] A quoi servent les interfaces???
    Par sof_nns dans le forum Windows Forms
    Réponses: 8
    Dernier message: 28/10/2004, 20h51

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