Les interfaces java pourquoi les utilisé ???

Résolu/Fermé
gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016 - 11 août 2013 à 18:15
gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016 - 17 août 2013 à 15:24
Bonjour,

j'ai une question consernant les interfaces en java je n'arrive pas a comprendre leurs utilité je veux vraiment voir un exemple ou on ne peux pas utilisé autre chose que les interface ou au moin il faut les utilisé et pourquoi ...

et merci d'avance :)

3 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 856
Modifié par kij_82 le 13/08/2013 à 12:19
Bonjour,

Autre utilité des interfaces:
Permettre de découpler le contract d'un service de son implémentation.

Ce type d'utilisation est surtout répandue dans les architectures SOA et lorsqu'un projet est découpé en plusieurs sous projet.

Exemple concret:
Tu souhaites faire un web service de gestion de voiture qui accède à une base de données pour faire ses recherches / enregistrement.
Tu peux alors découper ton application en plusieurs sous projet (généralement appelé aussi 'module') de la façon suivante (mettons que le projet globale s'appelle 'auto':
- auto-web
- auto-business-service
- auto-business-service-impl
- auto-dataaccess
- auto-dataaccess-impl

Tu peux remarquer qu'à part la partie web dans laquelle il y a les classes de web service, il y a généralement deux projets par type:
- Deux projets pour la partie business
- Deux projets pour la partie accès à la base de données

La partie normal (auto-business-service) est là juste pour avoir les packages contenant les interfaces.
La partie implémentation (auto-business-service-impl) est là juste pour avoir les classes qui implémentent les interfaces définie dans le projet 'normal'.

Il y a bien entendu une dépendance (via Maven par exemple) entre les divers projets:
- auto-web dépend de auto-business-service (et ne vois donc que les contrats / interfaces) des différents services de l'application) afin de faire appel aux différents services de l'application.
- auto-business-service-impl dépend à la fois d'auto-business-service (pour implémenter les contracts de service) et d'auto-dataaccess (pour faire appel par injection aux différents DAO de l'application.
- auto-dataaccess-impl dépend d'auto-dataaccess afin d'implémenter les contracts d'accès aux données (DAO)

Avec une telle organisation et gestion de dépendance, cela permet de rendre l'application plus lisible et maintenable. En effet, tant que les interfaces ne changent pas, mais si on change le code des implémentation, la partie web service par exemple ne sera pas impactée puisque tout ce qui l'intéresse c'est la définition des contract de service via les interfaces.
Ainsi donc, les interfaces permettent de découpler la définition de l'implémentation de quelque chose.

Ce principe peut être repris pour tout et n'importe quoi, l'exemple donné ici n'en est qu'une utilisation parmis d'autres.


~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
1
KX Messages postés 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 982
13 août 2013 à 18:56
Effectivement, cependant le niveau de cette discussion est plutôt ultra débutant !
Les architectures n-tiers on verra ça dans quelques années (pour les plus persévérants...)
0
gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016
16 août 2013 à 02:43
très bon exemple merci beaucoup seulement ... je veux vraiment savoir par exemple si je veux crée un programme comment je pourrai savoir combien de class il faut que je crée les chose qu'il traité comme objet les interfaces a utilisé ... ??? et est ce que il y a des site ou on peux apprendre tous sa ???
0
KX Messages postés 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 982
16 août 2013 à 07:55
Si tu programme en Java dans le seul but de créer des petits programmes, alors dans un premier temps tu n'auras pas besoin de créer toi même d'interface (tu seras en revanche amené à utiliser celles de Java). Mais si un jour tu es amené à développer du code réutilisable (c'est à dire pour quelqu'un d'autre que toi), alors les interfaces permettront dans certains cas de définir un "contrat", c'est à dire que tu autoriseras n'importe classe dans telle ou telle méthode, sous réserve qu'elle dispose des contraintes fournies par l'interface que tu auras développé.

Mais si tout cela est abstrait pour l'instant, tu en verras surement l'utilité plus tard donc pour l'instant tu peux faire l'impasse là dessus, tu y reviendras lorsque tu seras prêt (la notion d'interface est récente dans l'histoire de la programmation : avant tout le monde s'en passait sans problème)
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 856
16 août 2013 à 13:12
Il y a des sites où tu peux apprendre tout cela, et je pense que la première chose à apprendre si tu veux coder (et être autonome), c'est de savoir chercher via google. Ma remarque ne se veut pas méchante hein ;) mais c'est l'une des choses que l'on fait le plus généralement dans les premiers temps où l'on étudie un language et réalise des programmes.

Site du zéro, comment ca marche, développer.net pour commencer, tu y trouveras de nombreux tutoriaux. Pour des questions plus technique, je te recommande Stackoverflow ou un site similaire selon la catégorie de tes questions.

Bonne chance.
0
KX Messages postés 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 982 > kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
Modifié par KX le 16/08/2013 à 18:43
Sans oublier le site officiel qui est très complet (mais parfois plus technique)
https://docs.oracle.com/javase/tutorial/
0
KX Messages postés 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 982
11 août 2013 à 19:26
0
GRDX Messages postés 128 Date d'inscription samedi 10 août 2013 Statut Membre Dernière intervention 9 juin 2014 30
11 août 2013 à 19:32
Bonjour,
les interfaces permettent (entre-autre) de répondre à l'absence de l'héritage multiple et proposent une implémentation similaire.
0