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 Java Discussion :

Demande explications classes interfaces


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 223
    Par défaut Demande explications classes interfaces
    Salut tout le monde !

    J'ai fait du java en licence il y a un an de ca, et la je decide de m'y remettre ...

    Ca se passe a peu pres bien, mais alors ya un truc dont je comprenais deja pas l'interet en licence, et je comprends pas mieux maintenant ... c les interfaces ...

    Dans mon cours, j'ai lu que ca pouvait remplacer l'heritage multiple impossible en java ...

    Il est aussi dit ceci

    Surtout, les interfaces servent à créer des comportements génériques: si plusieurs classes doivent obéir à un comportement particulier, on créé une interface décrivant ce comportement, on est la fait implémenter par les classes qui en ont besoin


    Bon je veux bien.

    Voici l'exemple de mon cours :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    public interface Animal
      {
      // tous les animaux doivent implémenter les méthodes suivantes
      void manger(String nourriture);
      void seDeplacer();
      void respirer();
      }
     
    public interface Parler
      {
      // une interface plus spécifique
      void parle(int phrase);
      }
     
    public interface Aboyer
      {
      void aboie();
      }
     
    public class Homme implements Animal, Parler
      {
      //implémentations de l'interface Animal
      public void manger(String nourriture)
        {
        System.out.println("Miam, " +nourriture+ "!");
        }
      public void seDeplacer()
        {
        System.out.println("déplacement de l'homme");
        }
      public void respirer()
        {
        System.out.println("respiration de l'homme");
        }
     
      //implémentations de l'interface Parler
      public void parle(int phrase)
        {
        System.out.println(phrase);
        }
      }
     
    public class Chien implements Animal, Aboyer
      {
      //implémentations de l'interface Animal
      public void manger(String patee)
        {
        System.out.println("Miam, " +patee+ "!");
        }
      public void seDeplacer()
        {
        System.out.println("déplacement du chien");
        }
      public void respirer()
        {
        System.out.println("respiration du chien");
        }
     
      //implémentations de l'interface Aboyer
      public void aboie()
        {
        System.out.println("Ouaf!");
        }
      }
    Voila, c la que je cale pas l'interet, ya aucun heritage puisqu'on est obligé de redefinir les methodes pour chaque classe ... on enleve la classe interface, ca fait exactement le meme chose ...
    Le seul petit but, c qu'on fait un regroupement des fonctions utilisées ....

    Bref, si vous avez de meilleurs explications, elles sont les bienvenues, car la je pense pour le moment que j'utiliserai jamais les interfaces ...

    Merci bien !

    @+.


  2. #2
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    l'interet est que tu peux declarer une liste d'animal et stocker dedans des hommes et des chiens, vu qu'ils herites de animal

    et en plus tu sais que sur ces objets tu peux appeler les methodes :

    void manger(String nourriture);
    void seDeplacer();
    void respirer();

    regarde plus profondement cette notion.
    Tant que tu l'aura pas assimilé tu ne pourra pas te dire developpeur objet

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 223
    Par défaut
    je connais le language objet, je connais l'heritage et son but ...

    mais les interfaces la, j'ai du mal a en comprendre l'interet, dans l'exemple de cours que j'ai donné, l'heritage n'au aucun but pour moi ...

  4. #4
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    en fait je dirais que les interfaces ont été créées pour empécher les heritage en diamant (célébre notement en C++) qui sont capable des plus beau effet de bord que j'ai jamais vu.

    Une interface n'est qu'une classe abstraite pure

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par schnito
    je connais le language objet, je connais l'heritage et son but ...

    mais les interfaces la, j'ai du mal a en comprendre l'interet, dans l'exemple de cours que j'ai donné, l'heritage n'au aucun but pour moi ...
    Pourtant il a un intérêt : tu peux utiliser des objets du type Animal en ignorant leurs types réels (cela peut aussi bien être Homme que Chien). Toutefois c'est vrai que ce style d'exemple n'est pas très clair... Un cas concret est nettement plus instructif je trouve...

    a++

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 223
    Par défaut
    Citation Envoyé par adiGuba
    Un cas concret est nettement plus instructif je trouve...
    ben ouais ... vous en auriez par hasard ??

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par schnito
    ben ouais ... vous en auriez par hasard ??
    ben... l'exemple avec les List en est un...

    a++

  8. #8
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par adiGuba
    Toutefois c'est vrai que ce style d'exemple n'est pas très clair... Un cas concret est nettement plus instructif je trouve...
    adiGuba est d'une politesse exquise: d'habitude je fulmine plus fort contre le manque d'imagination de certains pédagogues

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 223
    Par défaut
    Si j'ai bien compris, le but d'une interface c de dire :

    les classes qui heritent se comporteront comme ca, avec tels methodes, mais je sais pas encore vraiment coment dans les details ... une sorte de planification ...

  10. #10
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    En ce qui concerne l'héritage multiple, c'est plutôt une solution alternative. En Java l'héritage multiple est interdit à cause des problèmes qu'il peut engendrer...


    Sinon l'objectif des interfaces est de définir un comportement génériques (comme tu l'as dit), mais sans proposer d'implémentation spécifique. Ainsi chaque classe qui implémente l'interface peut proposer une implémentation différente en respectant le contrat initial.

    On peut également utiliser les interfaces avec une classe abstraite représentant une implémentation par défaut...


    Par exemple dans l'API tu as l'interface List qui définit une structure de stockage de données ordonnées, qui possède trois implémentations distinctes : Vector, ArrayList et LinkedList qui sont toutes plus ou moins basé sur la classe abtraite AbstractList...



    Cela permet d'utiliser des listes quel que soit leurs implémentations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void method(List list) {
        ...
    }
    a++

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par adiGuba
    Salut,
    Sinon l'objectif des interfaces est de définir un comportement génériques (comme tu l'as dit), mais sans proposer d'implémentation spécifique.
    Plus simplement un type (voir les interfaces de typage Clonable, Serialisable, etc...), puisque le comportement vient avec l'implementation. Les signatures de methodes contenues dans une interface ne sont pas suffisantes en elles-meme pour definir un comportement.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. [DC] Modéliser une classe interface + une autre classe
    Par sangei dans le forum Diagrammes de Classes
    Réponses: 11
    Dernier message: 21/12/2005, 22h46
  2. [Language] Explications classe définie dans une classe
    Par etiennegaloup dans le forum Langage
    Réponses: 6
    Dernier message: 13/09/2005, 22h15
  3. Demande explication sur un composant ADO
    Par Golork dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/07/2005, 20h22
  4. [AWT] Demande Explications prog calculatrice
    Par smag dans le forum Débuter
    Réponses: 3
    Dernier message: 07/07/2005, 16h06
  5. [Language][POO]classe interface
    Par Samanta dans le forum Langage
    Réponses: 9
    Dernier message: 21/06/2005, 15h32

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