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 :
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 ?) :
Dim myObjects As New ArrayList()
et j'y ajoute mes objets ainsi :
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 :
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