Les interfaces
Fermé
chahbane
Messages postés
8
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
6 février 2013
-
27 nov. 2012 à 22:23
chahbane - 5 déc. 2012 à 18:18
chahbane - 5 déc. 2012 à 18:18
A voir également:
- Les interfaces
- The npf driver isn't running. you may have trouble capturing or listing interfaces. - Forum Réseau
- UniGetUI: une interface graphique unifiée pour les gestionnaires de paquets Windows - Télécharger - Divers Utilitaires
2 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
27 nov. 2012 à 22:43
27 nov. 2012 à 22:43
La plus correcte (parmi les deux) c'est la 1, car dans la 2 rien ne t'oblige à définir la méthode donc tu ne pourras pas utiliser le polymorphisme alors que c'est tout l'intérêt, cependant la 1 n'est pas parfaite non plus car rien ne t'oblige à implémenter INourriture, donc on pourra aussi avoir des animaux qui ne mangent pas, c'est embêtant...
La meilleure manière de faire c'est de définir la méthode manger() directement dans la classe Animal, comme ça on est certain que tous les animaux pourront manger, et le polymorphisme est alors tout à fait correct. Cependant il reste une question, est-ce qu'on le fait directement ou est-ce qu'on passe par l'interface, cela dépend du reste des classes (est-ce que d'autres objets peuvent manger, ou seul les animaux le peuvent ?)
La meilleure manière de faire c'est de définir la méthode manger() directement dans la classe Animal, comme ça on est certain que tous les animaux pourront manger, et le polymorphisme est alors tout à fait correct. Cependant il reste une question, est-ce qu'on le fait directement ou est-ce qu'on passe par l'interface, cela dépend du reste des classes (est-ce que d'autres objets peuvent manger, ou seul les animaux le peuvent ?)
public abstract class Animal // implements INourriture { public abstract void manger(); }
L0ci
Messages postés
110
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
9 janvier 2013
30
Modifié par L0ci le 28/11/2012 à 09:23
Modifié par L0ci le 28/11/2012 à 09:23
Bonjour,
Petite erreur de ta part. Les méthodes déclarées dans une interface doivent OBLIGATOIREMENT être définies dans la classe qui implémente l'interface. (sinon erreur de compilation)
Dans son cas si tout les Animaux qui implémentent INourriture devront définir comment ils se nourrissent.
Petite erreur de ta part. Les méthodes déclarées dans une interface doivent OBLIGATOIREMENT être définies dans la classe qui implémente l'interface. (sinon erreur de compilation)
Dans son cas si tout les Animaux qui implémentent INourriture devront définir comment ils se nourrissent.
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
28 nov. 2012 à 13:39
28 nov. 2012 à 13:39
Je ne vois pas où est l'erreur, j'ai expliqué que l'interface INourriture n'était pas vraiment utile et je ne l'ai jamais utilisé dans mes exemples de code... Pourrais-tu être plus précis ?
27 nov. 2012 à 23:41
Modifié par KX le 28/11/2012 à 00:45
Il faut donc savoir si le fait de manger est "optionnel" ou "obligatoire" pour un Animal, personnellement je pense que tous les êtres vivants "mangent" (d'une manière ou d'une autre) et que l'interface ne servirait à rien ici.
Une interface judicieuse ce serait par exemple pour dire si l'animal est une proie ou un prédateur et donner la liste des animaux qui sont concernés par la relation de prédation.
Voici un exemple grossier (je ne respecte pas rigoureusement la chaîne alimentaire)
Remarque : j'ai utilisé des Class<?> car la relation de prédation dépend des espèces (des classes) et non des individus (les objets). En effet, si Félix mange Bubulle, c'est avant tout parce que Félix est un Chat et Bubulle est un Poisson, ce n'est pas liés aux personnalités de chacun des deux ;-)
5 déc. 2012 à 18:18