Guide

Guide : Déclarer un Objet en VB.NET

En VB.NET, déclarer un objet consiste à créer une variable qui fera référence à une instance d’une classe. Ce processus inclut deux étapes principales : la déclaration de l’objet et son instanciation. Voici un guide détaillé.


1. Déclaration d’un Objet

Pour déclarer un objet, utilisez le mot-clé Dim, suivi du nom de l’objet, de l’opérateur As, et du type de classe ou d’interface que l’objet représentera.

Syntaxe :

Dim nomObjet As TypeClasse

Exemple :

Dim voiture As Vehicule

Ici, voiture est une variable qui peut contenir une instance de la classe Vehicule.


2. Instanciation d’un Objet

Pour créer une instance d’une classe, utilisez le mot-clé New, suivi du constructeur de la classe.

Syntaxe :

nomObjet = New TypeClasse()

Exemple :

voiture = New Vehicule()

Vous pouvez combiner la déclaration et l’instanciation en une seule ligne :

Dim voiture As Vehicule = New Vehicule()

3. Exemple Complet

Voici un exemple pratique de déclaration, instanciation, et utilisation d’un objet :

' Déclarer et instancier un objet
Dim voiture As New Vehicule()

' Accéder à une propriété
voiture.Marque = "Toyota"

' Appeler une méthode
voiture.Démarrer()

4. Utilisation d’Objets avec Constructeurs Paramétrés

Si la classe dispose de constructeurs acceptant des paramètres, vous pouvez les utiliser lors de l’instanciation.

Exemple :

Dim voiture As New Vehicule("Toyota", "Corolla")

Dans cet exemple, le constructeur de la classe Vehicule attend deux paramètres : la marque et le modèle.


5. Utilisation de Objets avec le Mot-Clé With

VB.NET permet une initialisation plus concise en utilisant le mot-clé With pour configurer plusieurs propriétés d’un objet après sa création.

Exemple :

Dim voiture As New Vehicule() With {
    .Marque = "Toyota",
    .Modèle = "Corolla"
}

6. Gestion des Objets Null (Nothing)

Un objet non instancié aura la valeur Nothing. Vous devez vérifier cette condition avant d’utiliser l’objet.

Exemple :

Dim voiture As Vehicule

If voiture Is Nothing Then
    voiture = New Vehicule()
End If

7. Portée et Durée de Vie d’un Objet

  • Les objets déclarés dans une méthode ou une fonction sont accessibles uniquement dans leur bloc de code.
  • Les objets déclarés au niveau de la classe peuvent être utilisés dans toutes les méthodes de la classe (avec des modificateurs comme Private, Public, ou Protected).

Exemple :

Public Class Garage
    Private voiture As Vehicule ' Déclarée au niveau de la classe

    Public Sub GérerVoiture()
        voiture = New Vehicule() ' Instanciée dans une méthode
    End Sub
End Class

Déclarer un objet en VB.NET est simple et suit une logique claire :

  1. Déclarer la variable de l’objet avec Dim.
  2. Instancier la classe avec New.
  3. Configurer les propriétés ou appeler des méthodes.

Utilisation d’un Constructeur Personnalisé en VB.NET

Un constructeur personnalisé est une méthode spéciale définie dans une classe qui permet d’initialiser ses membres avec des valeurs spécifiques lors de l’instanciation d’un objet. Voici comment définir et utiliser un constructeur personnalisé en VB.NET.


1. Définir un Constructeur Personnalisé

En VB.NET, un constructeur est une méthode spéciale nommée Sub New. Pour créer un constructeur personnalisé, vous pouvez ajouter des paramètres à cette méthode.

Exemple :

Public Class Voiture
    ' Propriétés de la classe
    Public Property Marque As String
    Public Property Modèle As String

    ' Constructeur personnalisé
    Public Sub New(marque As String, modèle As String)
        Me.Marque = marque
        Me.Modèle = modèle
    End Sub
End Class

2. Instancier un Objet avec un Constructeur Personnalisé

Lorsque vous définissez un constructeur personnalisé, vous devez fournir les arguments requis au moment de l’instanciation.

Exemple :

Dim maVoiture As New Voiture("Toyota", "Corolla")
Console.WriteLine($"Marque: {maVoiture.Marque}, Modèle: {maVoiture.Modèle}")

Sortie :

Marque: Toyota, Modèle: Corolla

3. Combiner Constructeurs Personnalisés et Défaut

Si vous souhaitez offrir à la fois un constructeur par défaut (sans paramètres) et un constructeur personnalisé, vous devez les définir séparément.

Exemple :

Public Class Voiture
    Public Property Marque As String
    Public Property Modèle As String

    ' Constructeur par défaut
    Public Sub New()
        Me.Marque = "Inconnu"
        Me.Modèle = "Inconnu"
    End Sub

    ' Constructeur personnalisé
    Public Sub New(marque As String, modèle As String)
        Me.Marque = marque
        Me.Modèle = modèle
    End Sub
End Class

Utilisation :

' Avec le constructeur par défaut
Dim voiture1 As New Voiture()
Console.WriteLine($"Marque: {voiture1.Marque}, Modèle: {voiture1.Modèle}")

' Avec le constructeur personnalisé
Dim voiture2 As New Voiture("Honda", "Civic")
Console.WriteLine($"Marque: {voiture2.Marque}, Modèle: {voiture2.Modèle}")

Sortie :

Marque: Inconnu, Modèle: Inconnu
Marque: Honda, Modèle: Civic

4. Appeler un Constructeur à partir d’un autre (Surcharge de Constructeurs)

Vous pouvez appeler un constructeur à partir d’un autre en utilisant le mot-clé Me.

Exemple :

Public Class Voiture
    Public Property Marque As String
    Public Property Modèle As String
    Public Property Année As Integer

    ' Constructeur principal
    Public Sub New(marque As String, modèle As String, année As Integer)
        Me.Marque = marque
        Me.Modèle = modèle
        Me.Année = année
    End Sub

    ' Appelle le constructeur principal avec une année par défaut
    Public Sub New(marque As String, modèle As String)
        Me.New(marque, modèle, 2023) ' Année par défaut : 2023
    End Sub
End Class

Utilisation :

Dim voiture1 As New Voiture("Ford", "Focus")
Console.WriteLine($"Marque: {voiture1.Marque}, Modèle: {voiture1.Modèle}, Année: {voiture1.Année}")

Dim voiture2 As New Voiture("Tesla", "Model S", 2021)
Console.WriteLine($"Marque: {voiture2.Marque}, Modèle: {voiture2.Modèle}, Année: {voiture2.Année}")

Sortie :

Marque: Ford, Modèle: Focus, Année: 2023
Marque: Tesla, Modèle: Model S, Année: 2021

5. Utiliser un Constructeur Personnalisé avec Héritage

Lorsqu’une classe dérive d’une classe de base, le constructeur de la classe de base peut être appelé avec MyBase.New.

Exemple :

Public Class Vehicule
    Public Property TypeVehicule As String

    ' Constructeur de la classe de base
    Public Sub New(typeVehicule As String)
        Me.TypeVehicule = typeVehicule
    End Sub
End Class

Public Class Voiture
    Inherits Vehicule
    Public Property Marque As String

    ' Constructeur de la classe dérivée
    Public Sub New(marque As String, typeVehicule As String)
        MyBase.New(typeVehicule) ' Appelle le constructeur de la classe de base
        Me.Marque = marque
    End Sub
End Class

Utilisation :

Dim voiture As New Voiture("Toyota", "SUV")
Console.WriteLine($"Type: {voiture.TypeVehicule}, Marque: {voiture.Marque}")

Sortie :

Type: SUV, Marque: Toyota

Résumé

  1. Créer un constructeur personnalisé avec Sub New et ajouter les paramètres nécessaires.
  2. Instancier des objets en passant les valeurs requises au constructeur.
  3. Surcharger les constructeurs pour permettre une flexibilité dans l’initialisation.
  4. Utiliser l’héritage pour appeler des constructeurs de classe de base avec MyBase.New.

Les constructeurs personnalisés sont essentiels pour initialiser les objets avec des valeurs spécifiques dès leur création et maintenir un code propre et compréhensible.

L’héritage en VB.NET

L’héritage est un concept fondamental en programmation orientée objet (OOP) qui permet à une classe (la classe dérivée ou sous-classe) d’hériter des membres (propriétés, méthodes, événements) d’une autre classe (la classe de base ou super-classe). Cela permet la réutilisation du code, la modularité et la création de hiérarchies de classes.


1. Définir l’Héritage

En VB.NET, l’héritage se déclare avec le mot-clé Inherits. Une classe dérivée peut hériter de toutes les propriétés, méthodes, champs et événements publics ou protégés de sa classe de base.

Syntaxe :

Public Class ClasseBase
    ' Membres de la classe de base
End Class

Public Class ClasseDerivee
    Inherits ClasseBase
    ' Membres supplémentaires ou redéfinis
End Class

2. Exemple Simple d’Héritage

Exemple :

Public Class Animal
    Public Property Nom As String

    Public Sub Manger()
        Console.WriteLine($"{Nom} mange.")
    End Sub
End Class

Public Class Chien
    Inherits Animal

    Public Sub Aboyer()
        Console.WriteLine($"{Nom} aboie.")
    End Sub
End Class

Utilisation :

Dim monChien As New Chien()
monChien.Nom = "Rex"
monChien.Manger() ' Méthode héritée de Animal
monChien.Aboyer() ' Méthode propre à Chien

Sortie :

Rex mange.
Rex aboie.

3. Visibilité des Membres dans l’Héritage

Les membres d’une classe de base peuvent être :

  • Public : Accessibles partout, y compris dans les classes dérivées.
  • Protected : Accessibles uniquement dans la classe de base et ses classes dérivées.
  • Private : Accessibles uniquement dans la classe de base.

Exemple :

Public Class Animal
    Public Property Nom As String
    Protected Property Age As Integer
    Private Property Couleur As String

    Public Sub AfficherInfos()
        Console.WriteLine($"Nom: {Nom}, Age: {Age}")
    End Sub
End Class

Public Class Chat
    Inherits Animal

    Public Sub Vieillir()
        Age += 1 ' Accessible car Protected
    End Sub
End Class

4. Redéfinir les Membres d’une Classe de Base

Vous pouvez redéfinir une méthode ou une propriété dans une classe dérivée en utilisant les mots-clés Overrides et Overridable.

Exemple :

Public Class Animal
    Public Overridable Sub FaireDuBruit()
        Console.WriteLine("L'animal fait un bruit.")
    End Sub
End Class

Public Class Chien
    Inherits Animal

    Public Overrides Sub FaireDuBruit()
        Console.WriteLine("Le chien aboie.")
    End Sub
End Class

Utilisation :

Dim animal As New Animal()
animal.FaireDuBruit() ' Sortie : L'animal fait un bruit.

Dim chien As New Chien()
chien.FaireDuBruit() ' Sortie : Le chien aboie.

5. Appeler les Membres de la Classe de Base

Dans une classe dérivée, vous pouvez appeler des membres de la classe de base avec MyBase.

Exemple :

Public Class Animal
    Public Overridable Sub FaireDuBruit()
        Console.WriteLine("L'animal fait un bruit.")
    End Sub
End Class

Public Class Chat
    Inherits Animal

    Public Overrides Sub FaireDuBruit()
        MyBase.FaireDuBruit() ' Appelle la méthode de la classe de base
        Console.WriteLine("Le chat miaule.")
    End Sub
End Class

Utilisation :

Dim chat As New Chat()
chat.FaireDuBruit()

Sortie :

L'animal fait un bruit.
Le chat miaule.

6. Classes Abstraites et Héritage

Une classe abstraite (déclarée avec le mot-clé MustInherit) ne peut pas être instanciée directement. Elle sert de modèle pour les classes dérivées et peut contenir des membres abstraits (déclarés avec MustOverride) qui doivent être implémentés dans les classes dérivées.

Exemple :

Public MustInherit Class Animal
    Public Property Nom As String
    Public MustOverride Sub FaireDuBruit() ' Méthode abstraite
End Class

Public Class Oiseau
    Inherits Animal

    Public Overrides Sub FaireDuBruit()
        Console.WriteLine($"{Nom} chante.")
    End Sub
End Class

Utilisation :

Dim oiseau As New Oiseau()
oiseau.Nom = "Canari"
oiseau.FaireDuBruit()

Sortie :

Canari chante.

7. Héritage et Constructeurs

Une classe dérivée peut appeler un constructeur de la classe de base avec MyBase.New.

Exemple :

Public Class Animal
    Public Sub New(nom As String)
        Console.WriteLine($"Animal créé : {nom}")
    End Sub
End Class

Public Class Poisson
    Inherits Animal

    Public Sub New(nom As String)
        MyBase.New(nom) ' Appelle le constructeur de la classe de base
        Console.WriteLine("C'est un poisson.")
    End Sub
End Class

Utilisation :

Dim poisson As New Poisson("Nemo")

Sortie :

Animal créé : Nemo
C'est un poisson.

Résumé des Concepts Clés

  1. Inherits : Permet à une classe de dériver d’une classe de base.
  2. Accès aux membres :
    • Public : Accessible partout.
    • Protected : Accessible dans la classe de base et les classes dérivées.
    • Private : Accessible uniquement dans la classe de base.
  3. Redéfinition (Overrides) : Permet de personnaliser le comportement des méthodes ou propriétés de la classe de base.
  4. Classes abstraites (MustInherit) : Fournissent un modèle pour les classes dérivées.
  5. Constructeurs et Héritage : Les constructeurs de la classe de base peuvent être appelés avec MyBase.New.

L’héritage permet une meilleure organisation du code, favorise la réutilisation et facilite la gestion des comportements communs dans des hiérarchies d’objets.

Les Interfaces en VB.NET

En VB.NET, une interface est un contrat qui définit un ensemble de propriétés, méthodes, événements ou indexeurs qu’une classe ou une structure doit implémenter. Contrairement aux classes, les interfaces ne contiennent pas de logique ou d’implémentation : elles définissent seulement ce qui doit être implémenté.


1. Définition d’une Interface

Une interface est définie avec le mot-clé Interface. Elle ne contient que les signatures des membres (méthodes, propriétés, événements, etc.) sans implémentation.

Syntaxe :

Public Interface NomInterface
    Sub Méthode1()
    Function Méthode2() As String
    Property Propriété1 As Integer
End Interface

2. Implémentation d’une Interface

Une classe ou une structure implémente une interface en utilisant le mot-clé Implements. Tous les membres de l’interface doivent être implémentés dans la classe.

Exemple :

Définir une Interface
Public Interface IAnimal
    Property Nom As String
    Sub FaireDuBruit()
End Interface
Implémenter l’Interface
Public Class Chien
    Implements IAnimal

    ' Implémentation de la propriété
    Private _nom As String
    Public Property Nom As String Implements IAnimal.Nom
        Get
            Return _nom
        End Get
        Set(value As String)
            _nom = value
        End Set
    End Property

    ' Implémentation de la méthode
    Public Sub FaireDuBruit() Implements IAnimal.FaireDuBruit
        Console.WriteLine($"{Nom} aboie.")
    End Sub
End Class
Utilisation :
Dim monChien As New Chien()
monChien.Nom = "Rex"
monChien.FaireDuBruit()

Sortie :

Rex aboie.

3. Implémentation Explicite

Vous pouvez implémenter les membres de l’interface de manière explicite, ce qui signifie que ces membres ne seront accessibles que via une référence à l’interface.

Exemple :

Public Class Chat
    Implements IAnimal

    ' Implémentation explicite
    Private Property Nom As String Implements IAnimal.Nom
        Get
            Return "Chat"
        End Get
        Set(value As String)
        End Set
    End Property

    Private Sub FaireDuBruit() Implements IAnimal.FaireDuBruit
        Console.WriteLine("Le chat miaule.")
    End Sub
End Class
Utilisation :
Dim monChat As IAnimal = New Chat()
monChat.FaireDuBruit()

Sortie :

Le chat miaule.

4. Héritage d’Interfaces

Une interface peut hériter d’une ou plusieurs autres interfaces. Une classe qui implémente cette interface devra fournir une implémentation pour tous les membres des interfaces héritées.

Exemple :

Public Interface IVivant
    Sub Respirer()
End Interface

Public Interface IAnimal
    Inherits IVivant
    Property Nom As String
    Sub FaireDuBruit()
End Interface
Implémentation :
Public Class Oiseau
    Implements IAnimal

    Public Property Nom As String Implements IAnimal.Nom

    Public Sub Respirer() Implements IVivant.Respirer
        Console.WriteLine("L'oiseau respire.")
    End Sub

    Public Sub FaireDuBruit() Implements IAnimal.FaireDuBruit
        Console.WriteLine("L'oiseau chante.")
    End Sub
End Class
Utilisation :
Dim oiseau As New Oiseau()
oiseau.Nom = "Canari"
oiseau.Respirer()
oiseau.FaireDuBruit()

Sortie :

L'oiseau respire.
L'oiseau chante.

5. Avantages des Interfaces

  • Flexibilité : Une classe peut implémenter plusieurs interfaces, ce qui permet de simuler un héritage multiple.
  • Découplage : Les interfaces permettent de séparer les définitions des comportements des implémentations concrètes, ce qui facilite le test et la maintenance.
  • Interopérabilité : Les interfaces facilitent l’intégration avec d’autres composants ou bibliothèques.

6. Exemple d’Implémentation de Plusieurs Interfaces

Une classe peut implémenter plusieurs interfaces, et elle devra fournir une implémentation pour tous leurs membres.

Exemple :

Public Interface IVéhicule
    Sub Rouler()
End Interface

Public Interface IVéhiculeAmphibie
    Sub Nager()
End Interface

Public Class VéhiculeAmphibie
    Implements IVéhicule, IVéhiculeAmphibie

    Public Sub Rouler() Implements IVéhicule.Rouler
        Console.WriteLine("Le véhicule roule sur la route.")
    End Sub

    Public Sub Nager() Implements IVéhiculeAmphibie.Nager
        Console.WriteLine("Le véhicule nage dans l'eau.")
    End Sub
End Class
Utilisation :
Dim vehicule As New VéhiculeAmphibie()
vehicule.Rouler()
vehicule.Nager()

Sortie :

Le véhicule roule sur la route.
Le véhicule nage dans l'eau.

7. Interfaces vs Classes Abstraites

CritèreInterfaceClasse Abstraite
Héritage MultipleUne classe peut implémenter plusieurs interfaces.Une classe ne peut hériter que d’une seule classe abstraite.
ImplémentationNe contient pas d’implémentation.Peut contenir une implémentation partielle (méthodes concrètes).
ConstructeursPas de constructeurs.Peut avoir des constructeurs.
UtilisationSert uniquement à définir un contrat de comportements.Sert à fournir une base commune avec des comportements optionnels.

8. Exemple Pratique d’Utilisation des Interfaces

Supposons que vous développez un programme de gestion de paiement et que vous voulez unifier les comportements des différents types de paiements.

Définition de l’Interface

Public Interface IPaiement
    Sub EffectuerPaiement(montant As Decimal)
End Interface

Implémentation par Différents Modes de Paiement

Public Class CarteDeCrédit
    Implements IPaiement

    Public Sub EffectuerPaiement(montant As Decimal) Implements IPaiement.EffectuerPaiement
        Console.WriteLine($"Paiement de {montant:C} effectué par carte de crédit.")
    End Sub
End Class

Public Class PayPal
    Implements IPaiement

    Public Sub EffectuerPaiement(montant As Decimal) Implements IPaiement.EffectuerPaiement
        Console.WriteLine($"Paiement de {montant:C} effectué via PayPal.")
    End Sub
End Class

Utilisation avec Polymorphisme

Dim paiements As List(Of IPaiement) = New List(Of IPaiement) From {
    New CarteDeCrédit(),
    New PayPal()
}

For Each paiement As IPaiement In paiements
    paiement.EffectuerPaiement(100D)
Next

Sortie :

Paiement de 100,00 € effectué par carte de crédit.
Paiement de 100,00 € effectué via PayPal.

Autres articles

Guide : les expressions "non pas" et...
Voici un guide pour mieux comprendre et utiliser les expressions...
Read more
Guide : Méthodologie pour un Cas Pratique
Un cas pratique consiste à appliquer des concepts théoriques à...
Read more
Guide : Méthodologie pour Rédiger une Fiche...
La fiche d’arrêt est un outil indispensable pour analyser et...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *