Bonjour,
J'esseye d'écrire un petit logiciel de dessin vectoriel en VB.NET (c'est en fait un soft que j'avais écrit en VB6 et qui tourne très bien ainsi d'ailleurs, très rapide, mais pour ma culture personnelle je souhaite le transposer en VB.NET)
L'objectif est d'utiliser les fonctionalités .NET pour ce qui est du graphisme, mais aussi et surtout de faire ça proprement en utilisant la POO.
En 2 mots, je souhaiterai créer une collection d'objets de types différents (des lignes, des cercles, des lignes de cotations, ...).
Pour celà, j'ai créé mes classes d'objets, avec leur caractéristiques propres, par exemple :
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class_Line properties x1,y1,x2,y2 method Draw ... class_Circle properties xCentre,yCentre,Rayon method Draw ...
Ce que je ne sais pas, c'est lorsque ces objets ont des properties communes, par exemple la Couleur, ou l'Epaisseur du trait, ... dois-je les définir dans chaque classe, ou est-ce plus propre de définir une classe commune dont on pourrait en sorte hériter, et comment ?
Ensuite, pour grouper mes objets, j'ai créé une collection, ou plus précisément une ArrayList (d'ailleur est-ce la meilleur solution et la plus rapide ?) :
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part Dim myObjects As New ArrayList()
et j'y ajoute mes objets ainsi :
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Dim newCircle As New class_Circle With newCircle .xCentre = ... .yCentre = ... .Rayon = ... End With myObjects.Add(newCircle)
Donc déjà jusque là, suis-je à peu près ok ?
Ensuite, lorsque je veux par exemple tout redessiner, je fais ainsi :
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 For i As Integer = 0 To myObjects.Count - 1 Select Case myObjects(i).GetType.Name Case Is = "class_Line" CType(myObjects(i), class_Line).Draw(.....) Case Is = "class_Circle" CType(myObjects(i), class_Circle).Draw(.....) End Select Next
Là par contre, je sens que vous allez tiquer... utiliser CType pour accéder aux methods propre à chaque classe, je ne trouve pas ça génial, mais je ne sais pas comment faire autrement ?
Voilà, donc si vous avez la bonne marche à suivre, je suis preneur !
Merci d'avance !!!
Rod
Partager