interface en java

interface en java - Java - Programmation

Marsh Posté le 09-06-2017 à 12:49:08    

Bonjour,
A quoi sert-t'il de créer une interface en java qui va contenir des en-têtes de méthodes qu'il faudra de toutes manières indiquer à nouveau dans la classe qui va implémenter l'interface, n'est-ce pas redondant ?
Merci

Reply

Marsh Posté le 09-06-2017 à 12:49:08   

Reply

Marsh Posté le 11-06-2017 à 00:42:12    

C'est un "contrat". On est alors sur que les classes qui implémentent telle ou telle interface disposent bien des méthodes/propriétés prévues.
> https://openclassrooms.com/courses/ [...] id/r-21750


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 13-06-2017 à 01:50:25    

Merci pour ta réponse.
Je sais que c'est la raison qui est donnée (un contrat),
ce que je ne comprend pas, c'est la raison de passer par une solution externe et ne pas implémenter les méthodes directement dans la classe. La seule raison qui m'apparait un peu, c'est l'ergonomie, mais ça m'a l'air encore plus compliqué comme ça.
Peut être que le mot contrat sous-entend "commercial" ?
Merci, si tu peux me faire avancer (c'est intellectuel, je peux faire avec ou sans interface mais j'aimerais savoir pourquoi il faudrait croire que c'est plus simple)

Reply

Marsh Posté le 13-06-2017 à 01:51:28    

Merci pour ta réponse.
Je sais que c'est la raison qui est donnée (un contrat),
ce que je ne comprend pas, c'est la raison de passer par une solution externe et ne pas implémenter les méthodes directement dans la classe. La seule raison qui m'apparait un peu, c'est l'ergonomie, mais ça m'a l'air encore plus compliqué comme ça.
Peut être que le mot contrat sous-entend "commercial" ?
Merci, si tu peux me faire avancer (c'est intellectuel, je peux faire avec ou sans interface mais j'aimerais savoir pourquoi il faudrait croire que c'est plus simple)

Reply

Marsh Posté le 13-06-2017 à 01:56:16    

Merci pour ta réponse.
Je sais que c'est la raison qui est donnée (un contrat),
ce que je ne comprend pas, c'est la raison de passer par une solution externe et ne pas implémenter les méthodes directement dans la classe. La seule raison qui m'apparait un peu, c'est l'ergonomie, mais ça m'a l'air encore plus compliqué comme ça.
Peut être que le mot contrat sous-entend "commercial" ?
Merci, si tu peux me faire avancer (c'est intellectuel, je peux faire avec ou sans interface mais j'aimerais savoir pourquoi il faudrait croire que c'est plus simple)

Reply

Marsh Posté le 14-06-2017 à 13:30:19    

Un des exemples les plus fréquents d'utilisation d'interface est l'interface List. Il y a des méthodes qui retournent une List donc l'appelant peut utiliser les méthodes de cette interface et n'a pas à connaitre la vrai classe derrière (ArrayList ou LinkedList par exemple)
 
Un autre cas classique est pour les DAO (Data Acces Object).
 
Le fait de définir une interface pour un DAO permet de :
  - pouvoir changer l'implémentation sans impacter l'appelant.
    ex : une implémentation qui lit des données dans un fichier et une autre qui lit ces données dans une base de données
  - utiliser des bouchon pour les tests
 

Citation :

j'aimerais savoir pourquoi il faudrait croire que c'est plus simple


C'est pas plus simple, c'est plus maintenable.


Message édité par Bidem le 14-06-2017 à 13:34:56
Reply

Marsh Posté le 15-06-2017 à 01:39:36    

Je pense que je devrais penser plus maintenable si je veux comprendre, merci.
a+

Reply

Marsh Posté le 22-05-2019 à 23:14:08    

Bonjour,
 
la raison principale est que l'on peut utiliser le même code sur tous les objets (potentiellement différents) qui ont une interface.
 
Normalement, c'est une bonne pratique de construire des algorithmes sur des interfaces plutôt que sur des classes. Cela permet d'utiliser l'algorithme dans des contextes différents non prévus au départ. Un bon exemple est l'algorithme (générique) de tri développé par java. Elle marche sur tous les objets de type "Comparable".


---------------
Open Lowcode Github repo
Reply

Marsh Posté le 27-05-2019 à 07:09:56    

desperatix a écrit :

Je pense que je devrais penser plus maintenable si je veux comprendre, merci.
a+


Lis ce livre, et tu comprendras de suite l'utilité des interfaces : https://www.amazon.fr/First-Design- [...] 0596007124


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2019 à 07:16:30    

desperatix a écrit :

Je pense que je devrais penser plus maintenable si je veux comprendre, merci.
a+


 
Une autre raison, que je n'avais pas précisé: cela permet à un même objet d'implémenter plusieurs comportements (exemple dans le monde réel: une tesla est à la fois une voiture et un ordinateur personnel). C'est une des façons que java supporte l'héritage multiple


---------------
Open Lowcode Github repo
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed