Guide : Tableaux d’Objets en VB.Net
Un tableau d’objets en VB.Net est une structure de données qui permet de stocker plusieurs instances d’une classe ou d’un type personnalisé. Il est utile pour gérer des ensembles d’objets similaires dans un seul conteneur.
1. Déclaration d’un Tableau d’Objets
Pour déclarer un tableau d’objets, vous spécifiez le type de l’objet, suivi des dimensions du tableau.
Exemple :
Dim personnes() As Personne
2. Définir une Classe
Avant de créer un tableau d’objets, définissez une classe qui décrit les objets à stocker.
Exemple :
Public Class Personne
Public Property Nom As String
Public Property Age As Integer
End Class
3. Initialisation d’un Tableau d’Objets
Vous devez initialiser le tableau avec une taille fixe et créer des instances pour chaque élément.
Exemple :
Dim personnes(2) As Personne ' Crée un tableau pour 3 objets Personne
personnes(0) = New Personne With {.Nom = "Jean", .Age = 30}
personnes(1) = New Personne With {.Nom = "Marie", .Age = 25}
personnes(2) = New Personne With {.Nom = "Paul", .Age = 40}
4. Accéder aux Objets dans le Tableau
Les objets sont accessibles via leur index, comme pour un tableau classique.
Exemple :
Console.WriteLine("Nom : " & personnes(0).Nom) ' Affiche "Jean"
Console.WriteLine("Âge : " & personnes(1).Age) ' Affiche 25
5. Parcourir un Tableau d’Objets
Avec une boucle For
:
For i As Integer = 0 To personnes.Length - 1
Console.WriteLine($"Nom : {personnes(i).Nom}, Âge : {personnes(i).Age}")
Next
Avec une boucle For Each
:
For Each personne As Personne In personnes
Console.WriteLine($"Nom : {personne.Nom}, Âge : {personne.Age}")
Next
6. Tableaux Dynamiques avec ReDim
Vous pouvez redimensionner un tableau d’objets avec ReDim
. Utilisez Preserve
pour conserver les données existantes.
Exemple :
ReDim Preserve personnes(3) ' Agrandir le tableau à 4 éléments
personnes(3) = New Personne With {.Nom = "Claire", .Age = 35}
7. Tri d’un Tableau d’Objets
Pour trier un tableau d’objets, utilisez Array.Sort
avec une fonction de comparaison.
Exemple :
Array.Sort(personnes, Function(p1, p2) p1.Age.CompareTo(p2.Age))
For Each personne As Personne In personnes
Console.WriteLine($"{personne.Nom}, Âge : {personne.Age}")
Next
8. Filtrage d’un Tableau d’Objets
Pour filtrer les objets selon une condition, utilisez LINQ.
Exemple :
Dim adultes = From p In personnes Where p.Age >= 30 Select p
For Each personne As Personne In adultes
Console.WriteLine($"{personne.Nom}, Âge : {personne.Age}")
Next
9. Exemple Complet : Gestion d’un Tableau d’Objets
Voici un programme complet qui montre comment créer, manipuler et afficher un tableau d’objets :
Public Class Personne
Public Property Nom As String
Public Property Age As Integer
End Class
Module Module1
Sub Main()
' Déclarer et initialiser le tableau
Dim personnes(2) As Personne
personnes(0) = New Personne With {.Nom = "Jean", .Age = 30}
personnes(1) = New Personne With {.Nom = "Marie", .Age = 25}
personnes(2) = New Personne With {.Nom = "Paul", .Age = 40}
' Afficher toutes les personnes
Console.WriteLine("Liste des personnes :")
For Each personne As Personne In personnes
Console.WriteLine($"Nom : {personne.Nom}, Âge : {personne.Age}")
Next
' Ajouter une nouvelle personne
ReDim Preserve personnes(3)
personnes(3) = New Personne With {.Nom = "Claire", .Age = 35}
' Trier par âge
Array.Sort(personnes, Function(p1, p2) p1.Age.CompareTo(p2.Age))
' Afficher après tri
Console.WriteLine("Liste triée par âge :")
For Each personne As Personne In personnes
Console.WriteLine($"Nom : {personne.Nom}, Âge : {personne.Age}")
Next
' Filtrer les personnes de plus de 30 ans
Dim adultes = From p In personnes Where p.Age > 30 Select p
Console.WriteLine("Personnes de plus de 30 ans :")
For Each personne As Personne In adultes
Console.WriteLine($"{personne.Nom}, Âge : {personne.Age}")
Next
End Sub
End Module
10. Avantages et Limites
Avantages :
- Permet de regrouper des objets similaires pour un accès organisé.
- Compatible avec les fonctionnalités VB.Net comme
Array.Sort
,ReDim
, et LINQ. - Efficace pour de petites collections d’objets.
Limites :
- Taille fixe (sauf redimensionnement manuel).
- Moins flexible que des collections comme
List(Of T)
, qui permettent une croissance dynamique plus facile.
Guide : Utilisation des Tableaux Dynamiques en VB.Net
En VB.Net, un tableau dynamique est un tableau dont la taille peut être modifiée au moment de l’exécution. Contrairement aux tableaux fixes, leur taille n’est pas définie une fois pour toutes. Pour travailler avec des tableaux dynamiques, vous pouvez utiliser les mots-clés ReDim
et ReDim Preserve
.
1. Déclarer un Tableau Dynamique
Un tableau dynamique est initialement déclaré sans spécifier sa taille.
Exemple :
Dim tableau() As Integer
Ici, tableau
est un tableau dynamique qui n’a pas encore de taille définie.
2. Initialiser ou Redimensionner un Tableau Dynamique
Utiliser ReDim
ReDim
permet de redimensionner un tableau en définissant une nouvelle taille. Cela efface tous les éléments existants du tableau.
Exemple :
Dim tableau() As Integer
ReDim tableau(4) ' Définit la taille du tableau à 5 éléments (index 0 à 4)
tableau(0) = 10
tableau(1) = 20
Utiliser ReDim Preserve
ReDim Preserve
permet de redimensionner un tableau tout en conservant les données existantes.
Exemple :
Dim tableau() As Integer
ReDim tableau(2) ' Tableau de 3 éléments
tableau(0) = 10
tableau(1) = 20
tableau(2) = 30
ReDim Preserve tableau(4) ' Agrandir le tableau à 5 éléments
tableau(3) = 40
tableau(4) = 50
3. Ajouter des Éléments à un Tableau Dynamique
Pour ajouter des éléments dans un tableau dynamique, utilisez ReDim Preserve
pour agrandir la taille du tableau.
Exemple :
Dim tableau() As Integer
ReDim tableau(0) ' Initialisation du tableau avec 1 élément
tableau(0) = 10
' Ajouter un nouvel élément
ReDim Preserve tableau(1)
tableau(1) = 20
' Ajouter un autre élément
ReDim Preserve tableau(2)
tableau(2) = 30
4. Parcourir un Tableau Dynamique
Les tableaux dynamiques peuvent être parcourus comme les tableaux fixes.
Avec une boucle For
:
For i As Integer = 0 To tableau.Length - 1
Console.WriteLine(tableau(i))
Next
Avec une boucle For Each
:
For Each valeur As Integer In tableau
Console.WriteLine(valeur)
Next
5. Supprimer un Élement d’un Tableau Dynamique
Les tableaux dynamiques en VB.Net ne permettent pas directement de supprimer un élément (comme dans une liste). Cependant, vous pouvez créer un nouveau tableau sans l’élément à supprimer.
Exemple : Suppression d’un élément :
Dim tableau() As Integer = {10, 20, 30, 40}
Dim indexToRemove As Integer = 2 ' Supprimer l'élément à l'index 2
Dim nouveauTableau(tableau.Length - 2) As Integer
Dim j As Integer = 0
For i As Integer = 0 To tableau.Length - 1
If i <> indexToRemove Then
nouveauTableau(j) = tableau(i)
j += 1
End If
Next
tableau = nouveauTableau ' Remplacer l'ancien tableau
6. Exemple Pratique : Gestion Dynamique d’une Liste de Noms
Voici un programme complet qui illustre l’ajout, l’affichage, et la suppression de noms dans un tableau dynamique.
Module Module1
Sub Main()
Dim noms() As String = {}
While True
Dim choix As String = InputBox("1. Ajouter un nom" & vbCrLf &
"2. Afficher les noms" & vbCrLf &
"3. Supprimer un nom" & vbCrLf &
"4. Quitter")
Select Case choix
Case "1"
' Ajouter un nom
Dim nom As String = InputBox("Entrez un nom :")
ReDim Preserve noms(noms.Length)
noms(noms.Length - 1) = nom
Case "2"
' Afficher les noms
Dim affichage As String = String.Join(vbCrLf, noms)
MsgBox("Liste des noms :" & vbCrLf & affichage)
Case "3"
' Supprimer un nom
Dim nomToRemove As String = InputBox("Entrez le nom à supprimer :")
Dim indexToRemove As Integer = Array.IndexOf(noms, nomToRemove)
If indexToRemove >= 0 Then
Dim nouveauTableau(noms.Length - 2) As String
Dim j As Integer = 0
For i As Integer = 0 To noms.Length - 1
If i <> indexToRemove Then
nouveauTableau(j) = noms(i)
j += 1
End If
Next
noms = nouveauTableau
MsgBox("Nom supprimé.")
Else
MsgBox("Nom introuvable.")
End If
Case "4"
' Quitter
Exit While
Case Else
MsgBox("Choix invalide.")
End Select
End While
End Sub
End Module
7. Avantages et Limites des Tableaux Dynamiques
Avantages :
- Flexible : Les tableaux peuvent être redimensionnés à tout moment.
- Efficace : Performances similaires aux tableaux fixes pour l’accès et la modification.
Limites :
- Manipulation complexe : Ajouter ou supprimer des éléments demande du code supplémentaire.
- Alternatives dynamiques : Pour des scénarios complexes, il est souvent préférable d’utiliser des collections comme
List(Of T)
.
8. Alternatives : Listes Dynamiques
Les tableaux dynamiques sont puissants, mais si vous devez fréquemment ajouter ou supprimer des éléments, utilisez une liste.
Exemple avec List(Of T)
:
Dim noms As New List(Of String)
noms.Add("Jean")
noms.Add("Marie")
noms.Remove("Jean") ' Supprime "Jean"
For Each nom As String In noms
Console.WriteLine(nom)
Next
- Les tableaux dynamiques sont utiles lorsque la taille des données peut varier au moment de l’exécution.
- Utilisez
ReDim
pour redimensionner un tableau etReDim Preserve
pour agrandir un tableau tout en conservant son contenu. - Si vous avez besoin d’ajouter et de supprimer des éléments fréquemment, envisagez d’utiliser
List(Of T)
comme alternative plus pratique et efficace.