OVH Cloud OVH Cloud

interface objet

5 réponses
Avatar
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.

5 réponses

Avatar
Haziz
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.


Avatar
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/archive/index.php/t-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.


Avatar
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.
Avatar
Tony
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" a écrit dans le message de news:

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.
Avatar
Tony
Je vais lire ça attentivement.

Merci

"Haziz" a écrit dans le message de news:


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/archive/index.php/t-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.