GNT sans publicité, site mobile, fonctionnalitées exclusives...

interface objet

Le
Tony
Je developpe des composants en vb.net utilisables dans mes pages aspx.
Je m'interesse aujourd'hui à l'évolution de ces composants dans le temps et
c'est pourquoi je souhaite des informations sur les interfaces.

Je ne comprends pas l'interet d'utiliser les interfaces hormis pour forcer
un developpeur autre que moi à rentrer dans le moule.

Prenons un exemple :
_____________________________
'Version 1
'Implementation
Public interface IA
public function Dessine()
/
End Interface

Public class A
implements IA
function Dessine()
'--code
end function
/
end class

'Utilisation
Dim test as IA = new A
test.Dessine()
______________________________
'Version 2a
'si les modifications touchent uniquement Dessine je peux faire ce qui suit
'Implementation
Public interface IA2
public function Dessine2()
/
End Interface

Public class A
implements IA
implements IA2
function Dessine()
'--code
end function
function Dessine2()
'--code
end function
/
end class

'Utilisation
Dim testnouveau as IA2 = new A
testnouveau.Dessine2()
______________________________
'Version 2b
'si les modifcations touchent enormement de choses dans ma classe, alors je
crée une nouvelle classe et une nouvelle Interface.
Public interface IB
public function Dessine()
/
End Interface

Public class B
implements IB
function Dessine()
'--code
end function
/
end class

'Utilisation
Dim testnouveau as IB = new B
testnouveau.Dessine()


Conclusion :
Dans le cas où je n'aurais pas utilisé d'interface :
La version 2a est toujours possible, je définie une méthode Dessine2 et mes
anciens objets utilisent Dessine et mes nouveaux Dessine2 en faisant appel à
la même classe.
La version 2b est toujours possible car tout a changé donc je fais appel à
une nouvelle classe.


Voici ce que j'ai compris des interfaces. J'imagine que je suis à coté de la
plaque car j'ai du mal à voir l'interet profond pour la gestion des
mofications d'une classe.
Si quelqu'un peut me donner un exemple ou un tutoriel sur le net.
L'objectif final est de comprendre le sens profond des interfaces de façon à
implémenter plusieurs couches logiciels indépendantes via spring.net

Par avance merci. Désolé pour la longueur du post.
Lire les 5 réponses

Vidéos High-Tech et Jeu Vidéo
  • Twitter présente sa nouvelle interface Web. Une interface unifiée que l'on retrouve...
  • Google déploie pour son réseau social Google+, mais aussi Google Maps et autres, une...
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Haziz
Le #12139361
Salut,

Je vais essayé de te répondre en une seule phrase :

"L"une des principales constantes dans le developpement
Informatique.... c'est le CHANGEMENT"

allez pour t'aider à avancer dans ta quête, Interface permet (EN
AUTRE) de gérer les comportements.

Bon courage.
Haziz


Tony (no_spam) a écrit :
Je developpe des composants en vb.net utilisables dans mes pages aspx.
Je m'interesse aujourd'hui à l'évolution de ces composants dans le te mps et
c'est pourquoi je souhaite des informations sur les interfaces.

Je ne comprends pas l'interet d'utiliser les interfaces hormis pour forcer
un developpeur autre que moi à rentrer dans le moule.

Prenons un exemple :
_____________________________
'Version 1
'Implementation
Public interface IA
public function Dessine()
.../...
End Interface

Public class A
implements IA
function Dessine()
'--code
end function
.../...
end class

'Utilisation
Dim test as IA = new A
test.Dessine()
______________________________
'Version 2a
'si les modifications touchent uniquement Dessine je peux faire ce qui su it
'Implementation
Public interface IA2
public function Dessine2()
.../...
End Interface

Public class A
implements IA
implements IA2
function Dessine()
'--code
end function
function Dessine2()
'--code
end function
.../...
end class

'Utilisation
Dim testnouveau as IA2 = new A
testnouveau.Dessine2()
______________________________
'Version 2b
'si les modifcations touchent enormement de choses dans ma classe, alors je
crée une nouvelle classe et une nouvelle Interface.
Public interface IB
public function Dessine()
.../...
End Interface

Public class B
implements IB
function Dessine()
'--code
end function
.../...
end class

'Utilisation
Dim testnouveau as IB = new B
testnouveau.Dessine()

======================== =========
Conclusion :
Dans le cas où je n'aurais pas utilisé d'interface :
La version 2a est toujours possible, je définie une méthode Dessine2 et mes
anciens objets utilisent Dessine et mes nouveaux Dessine2 en faisant appe l à
la même classe.
La version 2b est toujours possible car tout a changé donc je fais appe l à
une nouvelle classe.
======================== =========

Voici ce que j'ai compris des interfaces. J'imagine que je suis à cot é de la
plaque car j'ai du mal à voir l'interet profond pour la gestion des
mofications d'une classe.
Si quelqu'un peut me donner un exemple ou un tutoriel sur le net....
L'objectif final est de comprendre le sens profond des interfaces de fa çon à
implémenter plusieurs couches logiciels indépendantes via spring.net

Par avance merci. Désolé pour la longueur du post.


Haziz
Le #12139351
Plus sérieusement,

Il y a eu la même question, il y a quelques temps sur le forum
developpez.com

http://www.developpez.net/forums/ar...28000.html

Bonne lecture.
Et désolé pour la touche d'humour ;-)

Haziz


Tony (no_spam) a écrit :
Je developpe des composants en vb.net utilisables dans mes pages aspx.
Je m'interesse aujourd'hui à l'évolution de ces composants dans le te mps et
c'est pourquoi je souhaite des informations sur les interfaces.

Je ne comprends pas l'interet d'utiliser les interfaces hormis pour forcer
un developpeur autre que moi à rentrer dans le moule.

Prenons un exemple :
_____________________________
'Version 1
'Implementation
Public interface IA
public function Dessine()
.../...
End Interface

Public class A
implements IA
function Dessine()
'--code
end function
.../...
end class

'Utilisation
Dim test as IA = new A
test.Dessine()
______________________________
'Version 2a
'si les modifications touchent uniquement Dessine je peux faire ce qui su it
'Implementation
Public interface IA2
public function Dessine2()
.../...
End Interface

Public class A
implements IA
implements IA2
function Dessine()
'--code
end function
function Dessine2()
'--code
end function
.../...
end class

'Utilisation
Dim testnouveau as IA2 = new A
testnouveau.Dessine2()
______________________________
'Version 2b
'si les modifcations touchent enormement de choses dans ma classe, alors je
crée une nouvelle classe et une nouvelle Interface.
Public interface IB
public function Dessine()
.../...
End Interface

Public class B
implements IB
function Dessine()
'--code
end function
.../...
end class

'Utilisation
Dim testnouveau as IB = new B
testnouveau.Dessine()

======================== =========
Conclusion :
Dans le cas où je n'aurais pas utilisé d'interface :
La version 2a est toujours possible, je définie une méthode Dessine2 et mes
anciens objets utilisent Dessine et mes nouveaux Dessine2 en faisant appe l à
la même classe.
La version 2b est toujours possible car tout a changé donc je fais appe l à
une nouvelle classe.
======================== =========

Voici ce que j'ai compris des interfaces. J'imagine que je suis à cot é de la
plaque car j'ai du mal à voir l'interet profond pour la gestion des
mofications d'une classe.
Si quelqu'un peut me donner un exemple ou un tutoriel sur le net....
L'objectif final est de comprendre le sens profond des interfaces de fa çon à
implémenter plusieurs couches logiciels indépendantes via spring.net

Par avance merci. Désolé pour la longueur du post.


spi100
Le #12139341
L'interet principal est que tu peux écrire une fonction qui prend en
argument un objet, et la seul spécification que tu dois indiquer est
qu'il doit implémenter une interface. Je te donne un exemple en C#, je
ne connais pas VB


void f(IEnumerable theList)
{
while(theList.MoveNext())
{
//du code
}
}

Le type IEnumerable indique au compilo que theList a une methode
MoveNext. Ta fonction sera réutilisable pour n'importe quel objet qui
implémente cette interface.

On aurait pu utiliser la notion de classe abstraite comme en C++, mais
finalement les concepteurs de C# et VB.net ont préféré interdire
l'héritage multiple. Si une classe ne peut hériter que d'une seule
autre classe, en compensation, elle peut implémenter autant
d'interfaces que nécessaire.
Tony
Le #12139331
merci beaucoup pour la réponse.
Je trouve ça marrant parceque la notion d'heritage revient toujours sur le
tapis.
Le concept est encore un peu "abstrait" pour moi :o)

J'étais interessé par les interfaces surtout parceque j'avais lu que c'était
une sorte de contrat et que ça permettait de mieux gérer les
évolutions/modifications d'une classe dans le temps.
Je crois qu'il faut que je me jette complétement dans l'objet et les
avantages et inconvénients d'une technique m'apparaitront sans doute mieux.

"spi100"
L'interet principal est que tu peux écrire une fonction qui prend en
argument un objet, et la seul spécification que tu dois indiquer est
qu'il doit implémenter une interface. Je te donne un exemple en C#, je
ne connais pas VB


void f(IEnumerable theList)
{
while(theList.MoveNext())
{
//du code
}
}

Le type IEnumerable indique au compilo que theList a une methode
MoveNext. Ta fonction sera réutilisable pour n'importe quel objet qui
implémente cette interface.

On aurait pu utiliser la notion de classe abstraite comme en C++, mais
finalement les concepteurs de C# et VB.net ont préféré interdire
l'héritage multiple. Si une classe ne peut hériter que d'une seule
autre classe, en compensation, elle peut implémenter autant
d'interfaces que nécessaire.
Tony
Le #12139321
Je vais lire ça attentivement.

Merci

"Haziz"

Plus sérieusement,

Il y a eu la même question, il y a quelques temps sur le forum
developpez.com

http://www.developpez.net/forums/ar...28000.html

Bonne lecture.
Et désolé pour la touche d'humour ;-)

Haziz


Tony (no_spam) a écrit :
Je developpe des composants en vb.net utilisables dans mes pages aspx.
Je m'interesse aujourd'hui à l'évolution de ces composants dans le temps
et
c'est pourquoi je souhaite des informations sur les interfaces.

Je ne comprends pas l'interet d'utiliser les interfaces hormis pour forcer
un developpeur autre que moi à rentrer dans le moule.

Prenons un exemple :
_____________________________
'Version 1
'Implementation
Public interface IA
public function Dessine()
.../...
End Interface

Public class A
implements IA
function Dessine()
'--code
end function
.../...
end class

'Utilisation
Dim test as IA = new A
test.Dessine()
______________________________
'Version 2a
'si les modifications touchent uniquement Dessine je peux faire ce qui
suit
'Implementation
Public interface IA2
public function Dessine2()
.../...
End Interface

Public class A
implements IA
implements IA2
function Dessine()
'--code
end function
function Dessine2()
'--code
end function
.../...
end class

'Utilisation
Dim testnouveau as IA2 = new A
testnouveau.Dessine2()
______________________________
'Version 2b
'si les modifcations touchent enormement de choses dans ma classe, alors
je
crée une nouvelle classe et une nouvelle Interface.
Public interface IB
public function Dessine()
.../...
End Interface

Public class B
implements IB
function Dessine()
'--code
end function
.../...
end class

'Utilisation
Dim testnouveau as IB = new B
testnouveau.Dessine()

================================ > Conclusion :
Dans le cas où je n'aurais pas utilisé d'interface :
La version 2a est toujours possible, je définie une méthode Dessine2 et
mes
anciens objets utilisent Dessine et mes nouveaux Dessine2 en faisant appel
à
la même classe.
La version 2b est toujours possible car tout a changé donc je fais appel à
une nouvelle classe.
================================ >
Voici ce que j'ai compris des interfaces. J'imagine que je suis à coté de
la
plaque car j'ai du mal à voir l'interet profond pour la gestion des
mofications d'une classe.
Si quelqu'un peut me donner un exemple ou un tutoriel sur le net....
L'objectif final est de comprendre le sens profond des interfaces de façon
à
implémenter plusieurs couches logiciels indépendantes via spring.net

Par avance merci. Désolé pour la longueur du post.


Publicité
Suivre les réponses
Poster une réponse
Anonyme