OVH Cloud OVH Cloud

explication des classes

9 réponses
Avatar
Etudiant
bonjour,
je suis en train de dvlper un logiciel pour apprendre les rudiments du .net
mais je me pose une question. Dans mon appli, on gere des loc de vehicules.
poue cela je fais une classe clVehicule mais a coté est ce que je dois creer
une autre classe clLocation ou vaut il mieux declarer un sous classe
clLocation dans clVehicule. Autre question j'ai une classe clFacture, vaut
il mieux creer une sous classe clDetailFacture a clFacture ou creer une
classe a part.

ce que j'appelle sous classe c'est cela

Public Class clFacture

Friend Class clDetailFacture
End Classe

End Class

merci

9 réponses

Avatar
Pierre Alexis
Etudiant a écrit :

je suis en train de dvlper un logiciel pour apprendre les rudiments du .net
mais je me pose une question. Dans mon appli, on gere des loc de vehicules.
poue cela je fais une classe clVehicule mais a coté est ce que je dois creer
une autre classe clLocation ou vaut il mieux declarer un sous classe
clLocation dans clVehicule. Autre question j'ai une classe clFacture, vaut
il mieux creer une sous classe clDetailFacture a clFacture ou creer une
classe a part.



Tout dépend ce de que tu veux faire avec ton programme !!!

On crée des classes en parallèles lorsqu'il n'y a aucun lien entre les
classes ou bien lorsque une classe "est composée" d'instances de l'autre
classe. (et là on peut employer une classe imbriquée B dans A si A est
le seul à pouvoir contenir des B).

Pour ta classe clFacture et clDetailFacture, je ne vois pas trop
l'intéret, tous les détails de ta facture tu peux les mettre dans ta
classe clFacture. Exemple :

Public Class Facture

Public DateEmission As Date
Public Montant As Decimal
' Etc...

End Class

N'hésite pas aussi à employer de l'héritage et des interfaces. Mais pour
tout ça, il faut absolument que tu te documentse sur ce qu'est de la
programmation orientée objet. Car ça ne s'invente pas.

Tip : La convention en VB .Net de nommage des classes est
"NomDeMaClasse" et non pas "clNomdeMaClasse"

--
Pierre ALEXIS
Courriel :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Patrick Philippot
Bonjour,

J'ajouterai une remarque aux commentaires de Pierre. Pour paraphraser
l'abominable Baldur von Schirach, quand je lis le mot Friend, je sors
mon révolver.

Bien que l'utilisation de ce mot-clé soit dans certains cas utile, je le
considère plutôt comme une nuisance:

- L'utilisation de Friend en VB comme dans d'autres langages crée un
couplage fort entre les classes. Or le leitmotiv de la programmation
objet, c'est découplage. Moins une classe a à connaître d'une autre
classe, mieux le programme se porte dans son ensemble.

- Par conséquent, l'emploi de Friend autrement que dans des
circonstances exceptionnelles (ou de force majeure comme en C++) est
plutôt le signe d'un design déficient.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Etudiant
Pour ta classe clFacture et clDetailFacture, je ne vois pas trop
l'intéret, tous les détails de ta facture tu peux les mettre dans ta
classe clFacture.



non puisque qu'une facture peut avoir plusieur detail donc une collection

"Pierre Alexis" a écrit dans le message de
news:e8j68MU$
Etudiant a écrit :

> je suis en train de dvlper un logiciel pour apprendre les rudiments du


.net
> mais je me pose une question. Dans mon appli, on gere des loc de


vehicules.
> poue cela je fais une classe clVehicule mais a coté est ce que je dois


creer
> une autre classe clLocation ou vaut il mieux declarer un sous classe
> clLocation dans clVehicule. Autre question j'ai une classe clFacture,


vaut
> il mieux creer une sous classe clDetailFacture a clFacture ou creer une
> classe a part.

Tout dépend ce de que tu veux faire avec ton programme !!!

On crée des classes en parallèles lorsqu'il n'y a aucun lien entre les
classes ou bien lorsque une classe "est composée" d'instances de l'autre
classe. (et là on peut employer une classe imbriquée B dans A si A est
le seul à pouvoir contenir des B).

Pour ta classe clFacture et clDetailFacture, je ne vois pas trop
l'intéret, tous les détails de ta facture tu peux les mettre dans ta
classe clFacture. Exemple :

Public Class Facture

Public DateEmission As Date
Public Montant As Decimal
' Etc...

End Class

N'hésite pas aussi à employer de l'héritage et des interfaces. Mais pour
tout ça, il faut absolument que tu te documentse sur ce qu'est de la
programmation orientée objet. Car ça ne s'invente pas.

Tip : La convention en VB .Net de nommage des classes est
"NomDeMaClasse" et non pas "clNomdeMaClasse"

--
Pierre ALEXIS
Courriel :
FAQ Visual Basic : http://faq.vb.free.fr/


Avatar
Etudiant
> N'hésite pas aussi à employer de l'héritage et des interfaces


c'est quoi que tu appelles une interface pour une classe?

"Pierre Alexis" a écrit dans le message de
news:e8j68MU$
Etudiant a écrit :

> je suis en train de dvlper un logiciel pour apprendre les rudiments du


.net
> mais je me pose une question. Dans mon appli, on gere des loc de


vehicules.
> poue cela je fais une classe clVehicule mais a coté est ce que je dois


creer
> une autre classe clLocation ou vaut il mieux declarer un sous classe
> clLocation dans clVehicule. Autre question j'ai une classe clFacture,


vaut
> il mieux creer une sous classe clDetailFacture a clFacture ou creer une
> classe a part.

Tout dépend ce de que tu veux faire avec ton programme !!!

On crée des classes en parallèles lorsqu'il n'y a aucun lien entre les
classes ou bien lorsque une classe "est composée" d'instances de l'autre
classe. (et là on peut employer une classe imbriquée B dans A si A est
le seul à pouvoir contenir des B).

Pour ta classe clFacture et clDetailFacture, je ne vois pas trop
l'intéret, tous les détails de ta facture tu peux les mettre dans ta
classe clFacture. Exemple :

Public Class Facture

Public DateEmission As Date
Public Montant As Decimal
' Etc...

End Class

N'hésite pas aussi à employer de l'héritage et des interfaces. Mais pour
tout ça, il faut absolument que tu te documentse sur ce qu'est de la
programmation orientée objet. Car ça ne s'invente pas.

Tip : La convention en VB .Net de nommage des classes est
"NomDeMaClasse" et non pas "clNomdeMaClasse"

--
Pierre ALEXIS
Courriel :
FAQ Visual Basic : http://faq.vb.free.fr/


Avatar
Pierre Alexis
Etudiant a écrit :

Pour ta classe clFacture et clDetailFacture, je ne vois pas trop
l'intéret, tous les détails de ta facture tu peux les mettre dans
ta classe clFacture.



non puisque qu'une facture peut avoir plusieur detail donc une
collection



Dans ce cas ok.

--
Pierre ALEXIS
Courriel :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Pierre Alexis
Etudiant a écrit :

c'est quoi que tu appelles une interface pour une classe?



Essayons de faire simple. Une Interface est un "contrat" de
programmation. Concrètement c'est une entité définissant les signatures
d'une série de fonctions, procédures et propriétés. Et lorsqu'une classe
décide d'implémenter une interface, la classe "s'engage" à respecter le
contrat imposé par l'interface et à fournir une implémentation à chacune
des méthodes définies dans l'interface.

Par exemple imginons l'interface suivante IEstObjetMonnayable
définissant des méthodes propres à des objets pouvant être monnayés
(donc possédant une valeur pécunière) :

Public Interface IEstObjetMonnayable
ReadOnly Property ValeurPecuniere As Decimal
End Interface

Maintenant des classes peuvent décider d'implémenter cette interface car
"elle s'estiment monnayables". Exemple :

Public Class LingoDor
Implements IEstObjetMonnayable

Public ReadOnly Property ValeurPecuniere() As Decimal _
Implements IEstObjetMonnayable.ValeurPecuniere
Get
Return 10000
End Get
End Property

End Class

Public Class BijouEnDiamant
Implements IEstObjetMonnayable

Public ReadOnly Property ValeurPecuniere() As Decimal _
Implements IEstObjetMonnayable.ValeurPecuniere
Get
Return 50000
End Get
End Property

End Class

L'avantage de tout ça ?

Et bien tu peux te définir des références vers des objets "Monnayables"
maintenant. Et comme tu sais que les objets monnayables ont forcément un
propriété ValeurPecuniere, et bien tu peux profiter des cette
spécificité. Exemple :

Public Function SommeDeDeuxObjetsMonnayable(ByVal obj1 As _
IEstObjetMonnayable, ByVal obj2 As IEstObjetMonnayable) As Decimal

Return obj1.ValeurPecuniere + obj2.ValeurPecuniere

End Function

Et l'utiliser comme suit :

Dim lingo As LingoDor, bijou As BijouEnDiamant

Debug.WriteLine(SommeDeDeuxObjetsMonnayable(lingo, bijou))
Debug.WriteLine(SommeDeDeuxObjetsMonnayable(lingo, lingo))

J'espère que c'est clair :-)

--
Pierre ALEXIS
Courriel :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Etudiant
merci bcp pour les explication c bcp plus clair, il va falloir que je me
documente severe sur les classe parce que l'interface à l'air tres pratique.
Connais des liens ou des bouquins interressant a ce propos.
merci encore a+

"Pierre Alexis" a écrit dans le message de
news:O6113gV$
Etudiant a écrit :

> c'est quoi que tu appelles une interface pour une classe?

Essayons de faire simple. Une Interface est un "contrat" de
programmation. Concrètement c'est une entité définissant les signatures
d'une série de fonctions, procédures et propriétés. Et lorsqu'une classe
décide d'implémenter une interface, la classe "s'engage" à respecter le
contrat imposé par l'interface et à fournir une implémentation à chacune
des méthodes définies dans l'interface.

Par exemple imginons l'interface suivante IEstObjetMonnayable
définissant des méthodes propres à des objets pouvant être monnayés
(donc possédant une valeur pécunière) :

Public Interface IEstObjetMonnayable
ReadOnly Property ValeurPecuniere As Decimal
End Interface

Maintenant des classes peuvent décider d'implémenter cette interface car
"elle s'estiment monnayables". Exemple :

Public Class LingoDor
Implements IEstObjetMonnayable

Public ReadOnly Property ValeurPecuniere() As Decimal _
Implements IEstObjetMonnayable.ValeurPecuniere
Get
Return 10000
End Get
End Property

End Class

Public Class BijouEnDiamant
Implements IEstObjetMonnayable

Public ReadOnly Property ValeurPecuniere() As Decimal _
Implements IEstObjetMonnayable.ValeurPecuniere
Get
Return 50000
End Get
End Property

End Class

L'avantage de tout ça ?

Et bien tu peux te définir des références vers des objets "Monnayables"
maintenant. Et comme tu sais que les objets monnayables ont forcément un
propriété ValeurPecuniere, et bien tu peux profiter des cette
spécificité. Exemple :

Public Function SommeDeDeuxObjetsMonnayable(ByVal obj1 As _
IEstObjetMonnayable, ByVal obj2 As IEstObjetMonnayable) As Decimal

Return obj1.ValeurPecuniere + obj2.ValeurPecuniere

End Function

Et l'utiliser comme suit :

Dim lingo As LingoDor, bijou As BijouEnDiamant

Debug.WriteLine(SommeDeDeuxObjetsMonnayable(lingo, bijou))
Debug.WriteLine(SommeDeDeuxObjetsMonnayable(lingo, lingo))

J'espère que c'est clair :-)

--
Pierre ALEXIS
Courriel :
FAQ Visual Basic : http://faq.vb.free.fr/


Avatar
Pierre Alexis
Etudiant a écrit :

merci bcp pour les explication c bcp plus clair, il va falloir que je me
documente severe sur les classe parce que l'interface à l'air tres pratique.
Connais des liens ou des bouquins interressant a ce propos.



Si tu veux maîtriser vite la programmation orientée objet (POO) sous VB
.net, que tu comprends bien l'anglais, je te conseille ce bouquin, il
est formidable :

http://www.amazon.fr/exec/obidos/ASIN/0201734958/qid%3D1106052951/402-6872406-3397725

--
Pierre ALEXIS
Courriel :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Etudiant
euh!!! et en français tu en connais :)
"Pierre Alexis" a écrit dans le message de
news:uExg00V$
Etudiant a écrit :

> merci bcp pour les explication c bcp plus clair, il va falloir que je me
> documente severe sur les classe parce que l'interface à l'air tres


pratique.
> Connais des liens ou des bouquins interressant a ce propos.

Si tu veux maîtriser vite la programmation orientée objet (POO) sous VB
.net, que tu comprends bien l'anglais, je te conseille ce bouquin, il
est formidable :




http://www.amazon.fr/exec/obidos/ASIN/0201734958/qid%3D1106052951/402-6872406-3397725

--
Pierre ALEXIS
Courriel :
FAQ Visual Basic : http://faq.vb.free.fr/