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

Langages de programmation Discussion :

[Débutant] Quand utiliser une interface ?


Sujet :

Langages de programmation

  1. #1
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut [Débutant] Quand utiliser une interface ?
    Bonjour à tous,
    Je me pose une question qui me permettrai de mieux comprendre la notion d'interface. Au niveau du langage humain, comment représenter une interface? Est-ce que celà peut se traduire par la notion d'obligation? Une interface n'est ce qu'un patron que l'on doit surchager?
    De manière plus générale, je me demande quand utiliser une interface...
    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut
    Citation Envoyé par dahtah
    Bonjour à tous,
    Je me pose une question qui me permettrai de mieux comprendre la notion d'interface. Au niveau du langage humain, comment représenter une interface? Est-ce que celà peut se traduire par la notion d'obligation? Une interface n'est ce qu'un patron que l'on doit surchager?
    De manière plus générale, je me demande quand utiliser une interface...
    Merci.
    Tu peux voir une interface est un contrat .Dans ce contrat se trouvent en géneral les méthodes non implementées(les termes du contrat).Ces methodes peuvent representer des comportement. Ainsi toute classe qui veut heritér de cette de cette interface est obligée de definir les methodes de l'interface.
    Par exemple tous les animaux se nourrissent mais pas de la même manière.On peut donc définir une interface INourriture avec comme contrat senourrir()...
    Je te conseille de voir ici http://rmdiscala.free.fr/

  3. #3
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Je vois pas l'intérêt au niveau du code, vu que tu es obligé de redéfinir les méthodes pour chaque classe implémentant l'interface.
    Pour reprendre ton exemple que mettrais tu dans ton interface INourriture, et que surchagerais tu dans une classe implantant INourriture?

  4. #4
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Je veins de lire ton lien, et je crois que je commence à piger. Dis moi si je me trompe : une interface force des classes parrallèles à implémanter des méthodes qui leurs sont communes, mais dont le comportement (de ces méthodes) est différent.
    Par exemple la classe Herbivore implémante l'interface INourriture en surchargeant la méthode senourrir() (se nourrir d'herbe). La classe Insectivore fait de même (se nourrir de graines). Ces deux comportements ne peuvent être transmis par l'héritage, donc ils sont implantés par l'interface. C'est , , , ou ?
    Est-ce que quequ'un pourrait mettre des exemples concrets?
    Merci...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut T'as pas bien lu la doc
    Citation Envoyé par dahtah
    Je veins de lire ton lien, et je crois que je commence à piger. Dis moi si je me trompe : une interface force des classes parrallèles à implémanter des méthodes qui leurs sont communes, mais dont le comportement (de ces méthodes) est différent.
    Par exemple la classe Herbivore implémante l'interface INourriture en surchargeant la méthode senourrir() (se nourrir d'herbe). La classe Insectivore fait de même (se nourrir de graines). Ces deux comportements ne peuvent être transmis par l'héritage, donc ils sont implantés par l'interface. C'est , , , ou ?
    Est-ce que quequ'un pourrait mettre des exemples concrets?
    Merci...


    Oui c'est un peu çà .Par contre il ne s'agit pas de la surcharge(encore appelé redefinition parfois) et la surcharge c'est autre chose.
    car il les methodes d'une interface n'ont pas de code. Par exemple en java:
    Interface INourriture {
    void seNourrir(); //c'est tout

    }


    soit une classe qui implemente cette interface( ) :
    class NourritureDeChien implements INourriture {
    void seNourrir(){
    //ici tu dis des trucs sur la nourriture du chien
    {
    }
    C'est aussi simple que çà .
    Je te conseille bien lire la documentation.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut c"est propre
    Citation Envoyé par dahtah
    Je vois pas l'intérêt au niveau du code, vu que tu es obligé de redéfinir les méthodes pour chaque classe implémentant l'interface.
    Pour reprendre ton exemple que mettrais tu dans ton interface INourriture, et que surchagerais tu dans une classe implantant INourriture?
    C'est quoi l'interêt au niveau du code ?
    c'est ce qu'on appelle le couplage faible.
    c'est plus efficace .
    C'est propre.
    c'est de la technique de programmation.
    c'est polymorphe.
    Le fonctionnement n'est pas pareil à la compilation + l'execution.
    Dois continuer ?

  7. #7
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Merci pour les précisions, j'ai compris le concept.
    Quelle est la différence de fonctionnement à l'éxecution/compilation?
    Et maintenant, quelle est la différence avec une classe abstraite mis à part le multi héritage?

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut
    Citation Envoyé par kossistus
    Oui c'est un peu çà .Par contre il ne s'agit pas de la surcharge(plusieurs méthodes de même nom dans une même classe) .
    car il les méthodes d'une interface n'ont pas de code. Par exemple en java:
    Interface INourriture {
    void seNourrir(); //c'est tout

    }


    soit une classe qui implemente cette interface( ) :
    class NourritureDeChien implements INourriture {
    void seNourrir(){
    //ici tu dis des trucs sur la nourriture du chien
    {
    }
    C'est aussi simple que çà .
    Je te conseille bien lire la documentation.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut Bon d'accord
    Citation Envoyé par dahtah
    Merci pour les précisions, j'ai compris le concept.
    Quelle est la différence de fonctionnement à l'éxecution/compilation?
    Et maintenant, quelle est la différence avec une classe abstraite mis à part le multi héritage?
    Très très Très grossièrement :
    Tu peux voir la compilation comme la phase(il y en a plusieurs) qui verifié le lexique et la syntaxe de ton code(erreurs par exemple, mauvais transtypage ...).
    Et tu peux voir l'execution comme l'etape juste avant que tu ne vois le resultat de ton code .
    Quand à une classe abstraite, lis la doc .
    Au risque de me répéter il y un minimum d'effort à faire, celui de lire une des multitudes doc sur cette site même.
    Ok chef?

  10. #10
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Tu peux voir la compilation comme la phase(il y en a plusieurs) qui verifié le lexique et la syntaxe de ton code(erreurs par exemple, mauvais transtypage ...).
    Et tu peux voir l'execution comme l'etape juste avant que tu ne vois le resultat de ton code .
    Je demandais ça pas dans le cas général, mais la différence de compilation/éxécution entre une classe et une interface.
    Quand à lire la doc, je suis d'accord, et j'en lis plein. Mais c'est indigeste au bout d'un moment et les subtilités ne sont pas toujours évidentes à saisir par soi même.
    Merci bien en tout cas.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut
    Citation Envoyé par dahtah
    Je demandais ça pas dans le cas général, mais la différence de compilation/éxécution entre une classe et une interface.
    Quand à lire la doc, je suis d'accord, et j'en lis plein. Mais c'est indigeste au bout d'un moment et les subtilités ne sont pas toujours évidentes à saisir par soi même.
    Merci bien en tout cas.
    .

    ...indigeste: ==> Désolé de te decevoir mais c'est peut être le prix à payer.
    ....Mais c'est indigeste au bout d'un moment et les subtilités ne sont pas toujours évidentes à saisir par soi même
    ==> Tout à fait et c'est pour çà que les forums sont la, n'est ce pas ? Un de mes profs disait qu'à force çà fini par rentrer . Mais je ne veux surtout pas te faire la morale.
    ... la différence de compilation/éxécution entre une classe et une interface:
    ==>Il n'y a pas de comparaison possible. Mais ce n'est certainement pas ce que tu veux savoir j'en suis certain.
    A la bonheur

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/12/2011, 17h26
  2. Réponses: 4
    Dernier message: 15/10/2009, 15h15
  3. Utiliser une interface graphique
    Par Titi41 dans le forum Prolog
    Réponses: 1
    Dernier message: 17/05/2009, 19h08
  4. Réponses: 1
    Dernier message: 07/11/2008, 18h55
  5. [POO] Quand utiliser une classe ?
    Par Gwipi dans le forum Langage
    Réponses: 8
    Dernier message: 05/05/2006, 14h31

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