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.
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.
Pour déclarer un objet en VB.NET, vous suivez ces étapes :
' 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
Dim objet As New Classe()
Dim objet As Classe
objet = New Classe()
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
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
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€.
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
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
Public Property Nom As String
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.
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 :
Forme
avec une méthode CalculerAire
marquée comme virtuelle.Cercle
et Rectangle
.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
Objectif : Créez une interface IVolant
pour les objets volants. Implémentez cette interface dans deux classes Avion
et Oiseau
.
Consignes :
IVolant
avec une méthode Voler
.Avion
et Oiseau
.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.
Objectif : Créez une classe CompteBancaire
qui lève une exception personnalisée si un retrait dépasse le solde.
Consignes :
CompteBancaire
avec une méthode Retirer
.SoldeInsuffisantException
.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.
Objectif : Créez une classe Produit
avec une propriété Prix
. Utilisez une liste générique pour calculer le total des prix.
Consignes :
Produit
avec les propriétés Nom
et Prix
.Produit
à une liste.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€
Objectif : Modélisez une classe Commande
contenant une liste de Produit
. Calculez le total de la commande.
Consignes :
Produit
et Commande
.Commande
doit contenir plusieurs objets Produit
.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.
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.
Animal
avec des propriétés communes comme Nom
et Age
.Animal
comme Manger
et Dormir
.Lion
et Perroquet
avec des propriétés et comportements spécifiques.' 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
Animal
: Nom
, Age
) et des méthodes génériques (FaireDuBruit
, Manger
, Dormir
).FaireDuBruit
est marquée comme Overridable
, ce qui permet aux classes dérivées de la redéfinir.Lion
: Animal
et redéfinit la méthode FaireDuBruit
avec un comportement spécifique (Rugit puissamment
).Perroquet
: Couleur
) et une méthode spécifique (Voler
).FaireDuBruit
pour inclure le comportement propre au perroquet.zoo
contient des objets de type Animal
. Cela permet d’exploiter le polymorphisme pour appeler les méthodes des classes filles sans connaître leur type exact.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.
Pour enrichir ce système, vous pouvez :
Éléphant
, Tigre
, Poisson
).Nager
).Cet exercice montre comment structurer un système complexe avec héritage et polymorphisme pour le rendre extensible et facile à maintenir.
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.
Dans cet exemple, une méthode redéfinie dans des classes dérivées est appelée dynamiquement.
' 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
Le chien aboie : Woof!
Le chat miaule : Miaou!
Avec une interface, plusieurs classes peuvent implémenter les mêmes méthodes avec un comportement différent.
' 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
La voiture roule sur la route.
Le bateau navigue sur l'eau.
Les méthodes génériques permettent de travailler avec différents types sans écrire de code spécifique pour chaque type.
' 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
Détails : 123
Détails : Bonjour
Détails : 01/12/2024 10:23:45
Les classes abstraites permettent d’imposer un comportement spécifique dans les classes dérivées.
' 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
Salaire : 3000€
Salaire : 1000€
Vous pouvez manipuler des objets de différents types dans une seule collection polymorphique.
' 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
Impression d'une facture.
Impression d'un rapport.
La surcharge de méthode est une forme de polymorphisme où une méthode peut avoir plusieurs signatures.
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
Addition de 2 et 3 : 5
Addition de 1, 4 et 5 : 10
Le polymorphisme en VB.NET permet de :
Ces exemples montrent comment tirer parti du polymorphisme dans différents contextes pour écrire un code clair, concis et évolutif.
L’exercice de la contraction de texte, souvent redouté des élèves, vise précisément cet objectif :…
La Révolution française, déclenchée en 1789, constitue l’un des tournants majeurs de l’histoire moderne. En…
L’histoire s’écrit à partir de documents : textes, images, objets ou témoignages. Ces sources, qu’elles…
La prise de notes est une compétence essentielle dans tout apprentissage. Que ce soit en…
L’argumentation occupe une place centrale dans le raisonnement juridique. Elle ne consiste pas à exprimer…
Charles Baudelaire, poète majeur du XIXe siècle, publie en 1857 Les Fleurs du mal, recueil…
This website uses cookies.