pardonnez mon ignorance mais je ne me figure pas bien l'interet de passer par des interfaces.
auriez vous des exemples?
pardonnez mon ignorance mais je ne me figure pas bien l'interet de passer par des interfaces.
auriez vous des exemples?
l'interet de l'interface est de passer un contrat entre 2 classes. Une classe A qui implémente l'interface I.
Ta classe B au lieu d'appeller la classe A et ses méthodes directement, elle passe par l'interface I.
Si X mois plus tard, ta classe A n'est pas bien implémenté, et que tu veux la refaire. Il suffit que ta classe A'(la classe A recodé) implémente l'interface I et tu es sur que ta classe B pourra toujours appeller les mêmes méthodes par l'intermédiaire de l'interface...
heu... je sais pas si je suis trés clair ...
sisi ok! clair. merci Neo.51
a l'ancienne ca revenais a implementer un pack de methode c'est ca
bon bref, je vois ce cas mais on peux pas se permetre de coller une interface entre chaque heritage. J'ai l'impression que le code est peut etre plus lisble en UML mais ca rajoute de la ligne qd meme.
qlq ch m'echappe encore, je prend toute les remarques autres que "googol + ..."![]()
est ce que vous avez des exemples ou l'interface est necessaire?
non, je ne crois pas...et puis "à l'ancienne" ??? Le concept d'interface existe depuis belle lurette...Envoyé par igorzup
Bon, le premier qui me vient à l'esprit :Envoyé par igorzup
dans ton domaine, tu as plusieurs objets que tu veux être capable de cloner...
Est-ce que tu vas créer une superclasse CloneableClass et faire hériter toute ta hiérarchie ? Ben non, c'est stupide on est d'accord, des tas d'objets peuvent être clonable sans avoir aucun rapport hiérarchique entre eux...Donc : interface ICloneable implémentée par chaque objet où c'est nécessaire...
ok
aurais tu un autre exemple paske ca me pose plus de questions que ca en resoud
pffff, j'ai pas vraiment le temps de chercher des exemples...en plus si tu veux me pousser dans mes retranchements, on peut dire qu'il n'y a aucun cas où les interfaces sont nécessaires...mais bon, je peux aussi te dire qu'il n'y a aucun cas où l'héritage est nécessaire (on peut tout faire avec des if...) et aucun cas ou le polymorphisme est nécessaire...
Les interfaces sont un concept d'abstraction de la POO.
Tu sais ce qu'est une classe abstraite ? hé ben une interface c'est une classe abstraite pure.
mouai...
c'est vrais que ma question fait un peu: "l'avion c'est comme le velo ca permet d'aller plus vite ou pas?"
Mais le truc c'est que je ne voie d'interet qu'en representation UML.
Une classe abstraite a un interet d'indexeur et je ne vois pas le gain pour le programmeur a ce nivo...
... en dehors de vos deux exemple off course!
elle est nulle part, n'appartient a personne et ne contient rien... alors pourquoi faire appel a elle?
Ok...Je te donne un autre exemple rapide :
Prenons un contrôle graphique imaginaire qui peut contenir une collection d'objet et afficher deux de leurs propriétés : le numéro et le nom.
Tu veux pouvoir balancer des tas d'objets différents dans ce contrôle : A, B, C, D et E, objets qui n'ont aucun rapport entre eux...
j'espère que ça t'éclaire...
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 public interface IControlable { int num { get; set; } string name { get; set; } } class A : IControlable {} class B : IControlable {} class MyControl { public void Add(IControlable o) {} public void Display() { foreach ( IControlable o in this ) {} } } public class MyWinForm { public void Populate { A a = new A(); B b = new B(); MyControl control = new MyControl(); control.Add(a); control.Add(b); } }
vi ca m'eclaire mais c'est pas un feu gregeois!
merci a vous deux... faut de la patience.
je laisse la question en suspend au cas ou ... d'autres auraient LA remarque.
regardes l'article de Keihilin : http://nx.developpez.com/Articles/DAC/
Imagine si les objets ADO.NET n'implémentaient pas d'interface![]()
en regardant de plus prés les composant du framework .NET tu utilises plein d'interfaces (Ilist, IEnumerable, etc...)
Salut
je crois que tout a ete dit: tu utilise l'heritage dans une relation "IS-A" (EST UNE en francais si tu prefere)
Et si tu peux pas parce que:
- une classe herite deja d'une autre classe
- il n'y a pas de relation "IS-A" (par exemple tu traite des objets de nature totalement differente mais ayant en commun un "prix")
- D'autres raisons qui me depassent
t'utilise l'interface
Ze livre qu'il te faut:
http://www.amazon.com/exec/obidos/ASIN/0201715945/102-7872051-7644149
Deux autres trucs qui me sont venus en chattant avec neo ce matin:
- Tu peux implementer plusieurs interfaces (bien evidemment)
- L'interface a un effet tres interessant: elle inverse les dependances entre les classes
Y a une v2 du bouquin, faudra mettre à jour tes liens :)
http://www.amazon.co.uk/exec/obidos/tg/detail/-/0321247140/ref=pd_sbs_b_1/026-5651387-6160449?%5Fencoding=UTF8&v=glance
inverser les dependance entre classes.... hummmmmm
j'ai beau me frotter le front...
toute vos reactions m'interessent.
evidement en travail partagé, l'utilisation peut sembler evidente.
pour l'instant je ne l'utilise QUE dans un sens de classement, de recapitulatif d'element de dialogue entre deux gros ensembles...
ca reste lourd pour des commentaires finalement...
Partager