Guide : Déclaration d’un objet en VB.NET avec exercices corrigés
VB.NET (Visual Basic .NET) est un langage orienté objet qui permet de manipuler des objets de manière simple et structurée. Ce guide présente les bases de la déclaration d’un objet, avec des exercices corrigés pour illustrer le fonctionnement.
1. Qu’est-ce qu’un objet en VB.NET ?
Un objet est une instance d’une classe. Une classe est une définition ou un modèle qui contient des propriétés (attributs) et des méthodes (comportements). Lorsqu’une classe est instanciée, elle devient un objet.
2. Déclaration d’un objet
Pour déclarer un objet en VB.NET, vous suivez ces étapes :
- Créer une classe (définition de l’objet).
- Instancier la classe pour créer un objet.
Exemple de base :
' Déclaration de la classe
Public Class Voiture
Public Marque As String
Public Couleur As String
' Méthode pour afficher les détails
Public Sub AfficherDetails()
Console.WriteLine("Marque : " & Marque & ", Couleur : " & Couleur)
End Sub
End Class
' Déclaration et utilisation de l'objet
Sub Main()
' Instanciation de la classe Voiture
Dim maVoiture As New Voiture()
maVoiture.Marque = "Toyota"
maVoiture.Couleur = "Rouge"
maVoiture.AfficherDetails() ' Affiche : Marque : Toyota, Couleur : Rouge
End Sub
3. Syntaxe pour déclarer un objet
Déclaration de base :
Dim objet As New Classe()
Déclaration sans instanciation immédiate :
Dim objet As Classe
objet = New Classe()
4. Propriétés et méthodes
- Propriétés : Contiennent les données associées à l’objet.
- Méthodes : Représentent les comportements ou actions que l’objet peut effectuer.
Exemple :
Public Class Personne
Public Nom As String
Public Age As Integer
Public Sub DireBonjour()
Console.WriteLine("Bonjour, je m'appelle " & Nom & " et j'ai " & Age & " ans.")
End Sub
End Class
5. Exercices corrigés
Exercice 1 : Déclaration simple d’un objet
Objectif : Déclarez une classe Animal
avec les propriétés Nom
et Type
, et affichez leurs valeurs.
Solution :
Public Class Animal
Public Nom As String
Public Type As String
End Class
Sub Main()
Dim monAnimal As New Animal()
monAnimal.Nom = "Lion"
monAnimal.Type = "Mammifère"
Console.WriteLine("Animal : " & monAnimal.Nom & ", Type : " & monAnimal.Type)
End Sub
Résultat attendu :
Animal : Lion, Type : Mammifère
Exercice 2 : Ajouter des méthodes à une classe
Objectif : Créez une classe CompteBancaire
avec des propriétés pour le solde (Solde
) et une méthode pour déposer de l’argent.
Solution :
Public Class CompteBancaire
Public Solde As Decimal
Public Sub Deposer(montant As Decimal)
Solde += montant
Console.WriteLine("Vous avez déposé : " & montant & "€. Nouveau solde : " & Solde & "€.")
End Sub
End Class
Sub Main()
Dim monCompte As New CompteBancaire()
monCompte.Solde = 100
monCompte.Deposer(50) ' Dépose 50€
End Sub
Résultat attendu :
Vous avez déposé : 50€. Nouveau solde : 150€.
Exercice 3 : Utiliser un constructeur pour initialiser un objet
Objectif : Ajoutez un constructeur à une classe Rectangle
pour initialiser sa longueur et sa largeur.
Solution :
Public Class Rectangle
Public Longueur As Double
Public Largeur As Double
' Constructeur
Public Sub New(longueur As Double, largeur As Double)
Me.Longueur = longueur
Me.Largeur = largeur
End Sub
' Méthode pour calculer l'aire
Public Function CalculerAire() As Double
Return Longueur * Largeur
End Function
End Class
Sub Main()
Dim monRectangle As New Rectangle(5, 10)
Console.WriteLine("Aire du rectangle : " & monRectangle.CalculerAire())
End Sub
Résultat attendu :
Aire du rectangle : 50
Exercice 4 : Gestion de plusieurs objets
Objectif : Créez une liste d’objets Etudiant
et affichez leurs noms.
Solution :
Public Class Etudiant
Public Nom As String
Public Sub New(nom As String)
Me.Nom = nom
End Sub
End Class
Sub Main()
Dim etudiants As New List(Of Etudiant)()
etudiants.Add(New Etudiant("Alice"))
etudiants.Add(New Etudiant("Bob"))
etudiants.Add(New Etudiant("Charlie"))
For Each etudiant As Etudiant In etudiants
Console.WriteLine("Étudiant : " & etudiant.Nom)
Next
End Sub
Résultat attendu :
Étudiant : Alice
Étudiant : Bob
Étudiant : Charlie
6. Bonnes pratiques
- Encapsulation :
- Utilisez des propriétés avec des Get et Set pour contrôler l’accès aux données.
Public Property Nom As String
- Réutilisabilité :
- Concevez des classes génériques pour éviter la duplication du code.
- Commentaires :
- Documentez les classes et méthodes pour les rendre compréhensibles.
Exercices Avancés et Cas Particuliers en VB.NET
Pour approfondir votre compréhension des objets en VB.NET, voici des exercices avancés traitant de cas particuliers, incluant des concepts comme l’héritage, les interfaces, les collections, et la gestion des exceptions.
Exercice 1 : Héritage et polymorphisme
Objectif : Créez une classe parent Forme
avec une méthode virtuelle pour calculer l’aire. Ensuite, implémentez deux classes filles Cercle
et Rectangle
qui calculent l’aire selon leur formule respective.
Consignes :
- Créez une classe
Forme
avec une méthodeCalculerAire
marquée comme virtuelle. - Implémentez les classes
Cercle
etRectangle
. - Dans
Main
, utilisez le polymorphisme pour calculer et afficher l’aire de plusieurs formes.
Solution :
Public MustInherit Class Forme
Public MustOverride Function CalculerAire() As Double
End Class
Public Class Cercle
Inherits Forme
Public Rayon As Double
Public Sub New(rayon As Double)
Me.Rayon = rayon
End Sub
Public Overrides Function CalculerAire() As Double
Return Math.PI * Rayon * Rayon
End Function
End Class
Public Class Rectangle
Inherits Forme
Public Longueur As Double
Public Largeur As Double
Public Sub New(longueur As Double, largeur As Double)
Me.Longueur = longueur
Me.Largeur = largeur
End Sub
Public Overrides Function CalculerAire() As Double
Return Longueur * Largeur
End Function
End Class
Sub Main()
Dim formes As New List(Of Forme)()
formes.Add(New Cercle(5))
formes.Add(New Rectangle(4, 6))
For Each forme As Forme In formes
Console.WriteLine("Aire de la forme : " & forme.CalculerAire())
Next
End Sub
Résultat attendu :
Aire de la forme : 78.5398163397448
Aire de la forme : 24
Exercice 2 : Implémenter une interface
Objectif : Créez une interface IVolant
pour les objets volants. Implémentez cette interface dans deux classes Avion
et Oiseau
.
Consignes :
- Déclarez l’interface
IVolant
avec une méthodeVoler
. - Implémentez les classes
Avion
etOiseau
. - Affichez les types d’objets volants dans une liste.
Solution :
Public Interface IVolant
Sub Voler()
End Interface
Public Class Avion
Implements IVolant
Public Sub Voler() Implements IVolant.Voler
Console.WriteLine("L'avion vole dans le ciel.")
End Sub
End Class
Public Class Oiseau
Implements IVolant
Public Sub Voler() Implements IVolant.Voler
Console.WriteLine("L'oiseau bat des ailes et vole.")
End Sub
End Class
Sub Main()
Dim volants As New List(Of IVolant)()
volants.Add(New Avion())
volants.Add(New Oiseau())
For Each volant As IVolant In volants
volant.Voler()
Next
End Sub
Résultat attendu :
L'avion vole dans le ciel.
L'oiseau bat des ailes et vole.
Exercice 3 : Gestion des exceptions avec des objets
Objectif : Créez une classe CompteBancaire
qui lève une exception personnalisée si un retrait dépasse le solde.
Consignes :
- Créez une classe
CompteBancaire
avec une méthodeRetirer
. - Ajoutez une exception personnalisée
SoldeInsuffisantException
. - Gérez cette exception dans
Main
.
Solution :
Public Class SoldeInsuffisantException
Inherits Exception
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
Public Class CompteBancaire
Public Solde As Decimal
Public Sub New(soldeInitial As Decimal)
Solde = soldeInitial
End Sub
Public Sub Retirer(montant As Decimal)
If montant > Solde Then
Throw New SoldeInsuffisantException("Fonds insuffisants pour effectuer ce retrait.")
End If
Solde -= montant
Console.WriteLine("Retrait effectué. Nouveau solde : " & Solde & "€.")
End Sub
End Class
Sub Main()
Dim compte As New CompteBancaire(100)
Try
compte.Retirer(50)
compte.Retirer(70) ' Provoquera une exception
Catch ex As SoldeInsuffisantException
Console.WriteLine("Erreur : " & ex.Message)
End Try
End Sub
Résultat attendu :
Retrait effectué. Nouveau solde : 50€.
Erreur : Fonds insuffisants pour effectuer ce retrait.
Exercice 4 : Collection générique avec des objets
Objectif : Créez une classe Produit
avec une propriété Prix
. Utilisez une liste générique pour calculer le total des prix.
Consignes :
- Créez la classe
Produit
avec les propriétésNom
etPrix
. - Ajoutez plusieurs objets
Produit
à une liste. - Calculez et affichez le total des prix.
Solution :
Public Class Produit
Public Nom As String
Public Prix As Decimal
Public Sub New(nom As String, prix As Decimal)
Me.Nom = nom
Me.Prix = prix
End Sub
End Class
Sub Main()
Dim produits As New List(Of Produit)()
produits.Add(New Produit("Télévision", 300))
produits.Add(New Produit("Smartphone", 500))
produits.Add(New Produit("Tablette", 200))
Dim totalPrix As Decimal = 0
For Each produit As Produit In produits
totalPrix += produit.Prix
Console.WriteLine(produit.Nom & " : " & produit.Prix & "€")
Next
Console.WriteLine("Total : " & totalPrix & "€")
End Sub
Résultat attendu :
Télévision : 300€
Smartphone : 500€
Tablette : 200€
Total : 1000€
Exercice 5 : Simulation avancée avec des objets imbriqués
Objectif : Modélisez une classe Commande
contenant une liste de Produit
. Calculez le total de la commande.
Consignes :
- Créez les classes
Produit
etCommande
. - Une
Commande
doit contenir plusieurs objetsProduit
. - Calculez et affichez le total des produits d’une commande.
Solution :
Public Class Produit
Public Nom As String
Public Prix As Decimal
Public Sub New(nom As String, prix As Decimal)
Me.Nom = nom
Me.Prix = prix
End Sub
End Class
Public Class Commande
Public Produits As New List(Of Produit)()
Public Function CalculerTotal() As Decimal
Dim total As Decimal = 0
For Each produit As Produit In Produits
total += produit.Prix
Next
Return total
End Function
End Class
Sub Main()
Dim commande As New Commande()
commande.Produits.Add(New Produit("Ordinateur", 1000))
commande.Produits.Add(New Produit("Souris", 20))
commande.Produits.Add(New Produit("Clavier", 50))
Console.WriteLine("Total de la commande : " & commande.CalculerTotal() & "€")
End Sub
Résultat attendu :
Total de la commande : 1070€
Ces exercices avancés couvrent des concepts importants de la programmation orientée objet en VB.NET et offrent une bonne pratique pour des scénarios réels.
Exemple avec Héritage : Gestion d’un Zoo
Dans cet exemple, nous allons créer une hiérarchie de classes pour modéliser différents animaux dans un zoo. Chaque type d’animal aura des propriétés et des comportements spécifiques, tout en partageant des caractéristiques communes définies dans une classe parent.
Objectif
- Créer une classe parent
Animal
avec des propriétés communes commeNom
etAge
. - Définir des méthodes génériques dans
Animal
commeManger
etDormir
. - Implémenter des classes filles
Lion
etPerroquet
avec des propriétés et comportements spécifiques. - Utiliser un polymorphisme pour afficher les caractéristiques de chaque animal.
Code Complet
' Classe parent Animal
Public Class Animal
Public Property Nom As String
Public Property Age As Integer
Public Sub New(nom As String, age As Integer)
Me.Nom = nom
Me.Age = age
End Sub
' Méthode générique commune à tous les animaux
Public Overridable Sub FaireDuBruit()
Console.WriteLine(Nom & " fait un bruit générique.")
End Sub
' Méthodes communes à tous les animaux
Public Sub Manger()
Console.WriteLine(Nom & " est en train de manger.")
End Sub
Public Sub Dormir()
Console.WriteLine(Nom & " dort paisiblement.")
End Sub
End Class
' Classe fille Lion
Public Class Lion
Inherits Animal
Public Sub New(nom As String, age As Integer)
MyBase.New(nom, age)
End Sub
' Méthode spécifique au Lion
Public Overrides Sub FaireDuBruit()
Console.WriteLine(Nom & " rugit puissamment !")
End Sub
End Class
' Classe fille Perroquet
Public Class Perroquet
Inherits Animal
Public Property Couleur As String
Public Sub New(nom As String, age As Integer, couleur As String)
MyBase.New(nom, age)
Me.Couleur = couleur
End Sub
' Méthode spécifique au Perroquet
Public Overrides Sub FaireDuBruit()
Console.WriteLine(Nom & " dit : 'Bonjour !' et gazouille.")
End Sub
' Méthode spécifique pour le Perroquet
Public Sub Voler()
Console.WriteLine(Nom & " vole dans les airs avec ses plumes " & Couleur & ".")
End Sub
End Class
' Programme principal
Sub Main()
' Création d'objets
Dim simba As New Lion("Simba", 5)
Dim polly As New Perroquet("Polly", 2, "verte")
' Liste polymorphique des animaux
Dim zoo As New List(Of Animal)()
zoo.Add(simba)
zoo.Add(polly)
' Parcourir et afficher les actions des animaux
For Each animal As Animal In zoo
Console.WriteLine("Nom : " & animal.Nom & ", Âge : " & animal.Age & " ans.")
animal.FaireDuBruit()
animal.Manger()
animal.Dormir()
Console.WriteLine()
Next
' Appel spécifique au Perroquet
polly.Voler()
End Sub
Explications
- Classe Parent
Animal
:- Contient les propriétés communes (
Nom
,Age
) et des méthodes génériques (FaireDuBruit
,Manger
,Dormir
). - La méthode
FaireDuBruit
est marquée commeOverridable
, ce qui permet aux classes dérivées de la redéfinir.
- Contient les propriétés communes (
- Classe Fille
Lion
:- Hérite d’
Animal
et redéfinit la méthodeFaireDuBruit
avec un comportement spécifique (Rugit puissamment
).
- Hérite d’
- Classe Fille
Perroquet
:- Ajoute une nouvelle propriété (
Couleur
) et une méthode spécifique (Voler
). - Redéfinit également
FaireDuBruit
pour inclure le comportement propre au perroquet.
- Ajoute une nouvelle propriété (
- Liste Polymorphique :
- La liste
zoo
contient des objets de typeAnimal
. Cela permet d’exploiter le polymorphisme pour appeler les méthodes des classes filles sans connaître leur type exact.
- La liste
Résultat Attendu
Nom : Simba, Âge : 5 ans.
Simba rugit puissamment !
Simba est en train de manger.
Simba dort paisiblement.
Nom : Polly, Âge : 2 ans.
Polly dit : 'Bonjour !' et gazouille.
Polly est en train de manger.
Polly dort paisiblement.
Polly vole dans les airs avec ses plumes verte.
Cas Pratique : Extension du Zoo
Pour enrichir ce système, vous pouvez :
- Ajouter d’autres classes filles (
Éléphant
,Tigre
,Poisson
). - Gérer des comportements communs spécifiques aux sous-groupes (par exemple, les animaux aquatiques avec une méthode
Nager
). - Utiliser des collections ou des bases de données pour stocker et récupérer les informations des animaux.
Cet exercice montre comment structurer un système complexe avec héritage et polymorphisme pour le rendre extensible et facile à maintenir.
Exemples de Polymorphisme en VB.NET
Le polymorphisme est un concept fondamental en programmation orientée objet qui permet d’utiliser une interface ou une classe de base pour accéder à des objets dérivés sans connaître leur type exact. Voici des exemples pour illustrer ce concept.
1. Polymorphisme avec Héritage
Dans cet exemple, une méthode redéfinie dans des classes dérivées est appelée dynamiquement.
Code Exemple
' Classe parent
Public Class Animal
Public Overridable Sub FaireDuBruit()
Console.WriteLine("L'animal fait un bruit générique.")
End Sub
End Class
' Classe fille Chien
Public Class Chien
Inherits Animal
Public Overrides Sub FaireDuBruit()
Console.WriteLine("Le chien aboie : Woof!")
End Sub
End Class
' Classe fille Chat
Public Class Chat
Inherits Animal
Public Overrides Sub FaireDuBruit()
Console.WriteLine("Le chat miaule : Miaou!")
End Sub
End Class
' Programme principal
Sub Main()
Dim animaux As New List(Of Animal)()
animaux.Add(New Chien())
animaux.Add(New Chat())
For Each animal As Animal In animaux
animal.FaireDuBruit() ' Appelle la méthode redéfinie selon l'objet
Next
End Sub
Résultat Attendu
Le chien aboie : Woof!
Le chat miaule : Miaou!
2. Polymorphisme avec Interfaces
Avec une interface, plusieurs classes peuvent implémenter les mêmes méthodes avec un comportement différent.
Code Exemple
' Interface commune
Public Interface IVehicule
Sub Deplacer()
End Interface
' Classe Voiture
Public Class Voiture
Implements IVehicule
Public Sub Deplacer() Implements IVehicule.Deplacer
Console.WriteLine("La voiture roule sur la route.")
End Sub
End Class
' Classe Bateau
Public Class Bateau
Implements IVehicule
Public Sub Deplacer() Implements IVehicule.Deplacer
Console.WriteLine("Le bateau navigue sur l'eau.")
End Sub
End Class
' Programme principal
Sub Main()
Dim vehicules As New List(Of IVehicule)()
vehicules.Add(New Voiture())
vehicules.Add(New Bateau())
For Each vehicule As IVehicule In vehicules
vehicule.Deplacer() ' Appelle la méthode de chaque classe
Next
End Sub
Résultat Attendu
La voiture roule sur la route.
Le bateau navigue sur l'eau.
3. Polymorphisme avec Méthodes Génériques
Les méthodes génériques permettent de travailler avec différents types sans écrire de code spécifique pour chaque type.
Code Exemple
' Classe générique pour afficher des détails
Public Class DetailsAffichage
Public Sub Afficher(Of T)(objet As T)
Console.WriteLine("Détails : " & objet.ToString())
End Sub
End Class
' Programme principal
Sub Main()
Dim affichage As New DetailsAffichage()
' Utilisation avec différents types
affichage.Afficher(123) ' Appelle avec un entier
affichage.Afficher("Bonjour") ' Appelle avec une chaîne
affichage.Afficher(DateTime.Now) ' Appelle avec une date
End Sub
Résultat Attendu
Détails : 123
Détails : Bonjour
Détails : 01/12/2024 10:23:45
4. Polymorphisme avec des Méthodes Abstraites
Les classes abstraites permettent d’imposer un comportement spécifique dans les classes dérivées.
Code Exemple
' Classe abstraite
Public MustInherit Class Employe
Public MustOverride Function CalculerSalaire() As Decimal
End Class
' Classe Employe à temps plein
Public Class EmployeTempsPlein
Inherits Employe
Public Overrides Function CalculerSalaire() As Decimal
Return 3000 ' Salaire fixe
End Function
End Class
' Classe Employe contractuel
Public Class EmployeContractuel
Inherits Employe
Public Overrides Function CalculerSalaire() As Decimal
Return 20 * 50 ' 20 heures à 50€/heure
End Function
End Class
' Programme principal
Sub Main()
Dim employes As New List(Of Employe)()
employes.Add(New EmployeTempsPlein())
employes.Add(New EmployeContractuel())
For Each employe As Employe In employes
Console.WriteLine("Salaire : " & employe.CalculerSalaire() & "€")
Next
End Sub
Résultat Attendu
Salaire : 3000€
Salaire : 1000€
5. Polymorphisme avec Collections Polymorphiques
Vous pouvez manipuler des objets de différents types dans une seule collection polymorphique.
Code Exemple
' Classe parent
Public Class Document
Public Overridable Sub Imprimer()
Console.WriteLine("Impression d'un document générique.")
End Sub
End Class
' Classe fille Facture
Public Class Facture
Inherits Document
Public Overrides Sub Imprimer()
Console.WriteLine("Impression d'une facture.")
End Sub
End Class
' Classe fille Rapport
Public Class Rapport
Inherits Document
Public Overrides Sub Imprimer()
Console.WriteLine("Impression d'un rapport.")
End Sub
End Class
' Programme principal
Sub Main()
Dim documents As New List(Of Document)()
documents.Add(New Facture())
documents.Add(New Rapport())
For Each document As Document In documents
document.Imprimer()
Next
End Sub
Résultat Attendu
Impression d'une facture.
Impression d'un rapport.
6. Polymorphisme Statique avec Surcharge
La surcharge de méthode est une forme de polymorphisme où une méthode peut avoir plusieurs signatures.
Code Exemple
Public Class Calculatrice
' Surcharge avec deux entiers
Public Function Additionner(a As Integer, b As Integer) As Integer
Return a + b
End Function
' Surcharge avec trois entiers
Public Function Additionner(a As Integer, b As Integer, c As Integer) As Integer
Return a + b + c
End Function
End Class
' Programme principal
Sub Main()
Dim calc As New Calculatrice()
Console.WriteLine("Addition de 2 et 3 : " & calc.Additionner(2, 3))
Console.WriteLine("Addition de 1, 4 et 5 : " & calc.Additionner(1, 4, 5))
End Sub
Résultat Attendu
Addition de 2 et 3 : 5
Addition de 1, 4 et 5 : 10
Résumé
Le polymorphisme en VB.NET permet de :
- Simplifier la gestion des comportements grâce aux classes de base et aux interfaces.
- Rendre le code extensible pour de nouveaux types d’objets.
- Faciliter la réutilisation et la maintenance du code.
Ces exemples montrent comment tirer parti du polymorphisme dans différents contextes pour écrire un code clair, concis et évolutif.