Bonjour,
Voilà, je fais de la programmation depuis quelques temps et je pense connaitre assez bien les classes, l'héritage & co.
J'ai 2 questions :
1 - Quelles différences y a-t-il entre une classe et une structure ? (ça j'imagine que c'est facile)
2 - Je cherche à avoir l'organisation suivante :
Une classe de base a des propriétés et méthodes commune à plusieurs classes dérivées, avec la méthode de l'héritage, je profite bien de tout ça, mais dans ma classe, j'ai une List(Of MaClasseDeBase) sur laquelle mes méthodes s'appuient pour faire des traitements, et le problème réside dans le fait que je cherche à initialisé cette liste de MaClasseDeBase avec des objets qui hérite justement de MaClasseDeBase.
Un exemple c'est toujours plus parlant :
Message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 Private MustInherit Class MaClasseDeBase #Region "Attributs" ' Plusieurs attributs, mais c'est celles-ci qui m'intéressent Protected _str_Texte As String Protected _lof_MaClasseDeBase As List(Of MaClasseDeBase) #End Region #Region "Property" ' Plusieurs propriétés, mais c'est celle-ci qui m'intéresse Public ReadOnly Property Texte As String Get Return _str_Texte End Get End Property #End Region ' Constructeur générique Public Sub New(ByVal plof_BaseObjet As List(Of MaClasseDeBase)) _lof_BaseObjet = plof_BaseObjet End Sub ' Gérérer le texte de l'objet de base Protected Sub GenererTexte() _str_Texte = "" For Each bmcb_MaClasseDeBase As MaClasseDeBase In _lof_BaseObjet _str_Texte &= bmcb_BaseObjet.Texte Next End Sub ' Autres méthodes s'appuyant sur MaClasseDeBase sur d'autres attributs End Class Private Class MonAutreClasse Inherits BaseObjet #Region "Attributs" ' Attributs supplémentaires #End Region #Region "Property" ' Propriété supplémentaires #End Region Public Sub New() End Sub End Class Private Class MaClasse Inherits BaseObjet #Region "Attributs" ' Attributs supplémentaires #End Region #Region "Property" ' Propriété supplémentaires #End Region Public Sub New(ByVal plof_MonAutreClasse As List(Of MonAutreClasse)) MyBase._lof_MaClasseDeBase = plof_MonAutreClasse ' C'est par là que ça coince puisque les objets ne sont pas pareils, je le comprend, mais en même temps, ces objets hérites tous de MaClasseDeBase pour utiliser les méthodes et les propriétés identiques. End Sub End Class Public Sub Main() Dim llof_MonAutreClasse = New List(Of MonAutreClasse) ' Initialisation de la liste de MonAutreClasse Dim lmcl_MaClasse = New MaClasse(llof_MonAutreClasse) End SubLa raison profonde de la mise en place de cette structure est que j'ai 5 niveaux de classe héritant de MaClasseDeBase dont MaClasse (niveau n) est instancié avec une liste de MonAutreClasse (niveau n-1) et ainsi de suite jusqu'au niveau n-5Impossible de convertir 'MonAutreClasse' en 'MaClasseDeBase'
Partager