Vous êtes sur la page 1sur 23

Introduction la Programmation Oriente

Objet en VB.NET
par Anoop Madusudanan Xavier Vlieghe (Traducteur)
Date de publication : 10/11/2005
Dernire mise jour : 28/01/2006
Cet article a pour but de vous initier aux mcanismes de la POO utiliss par
le langage VB.NET.
www.cours-ofppt.com
Remerciements
Introduction
Mode d'emploi du code
Leon 1 : Un peu de vocabulaire
Espace de Noms
Classes
Objet
Module
Leon 2 : Portes de vos dclarations
Leon 3 : Fonctions Partages
Leon 4 : La Surcharge
Leon 5 : L'Hritage
Leon 6 : La Rdfinition
Leon 7 : Le Polymorphisme d'hritage
Leon 8 : Constructeurs et Destructeurs
Leon 9 : Les Proprits
Leon 10 : Une petite application
Tlchargements
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 2 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Remerciements
Ce tutoriel est une traduction provenant d'un article du site CodeProject.
L'auteur de cet article est Anoop Madusudanan, je tiens le remercier chaleureusement pour m'avoir autoris
traduire son article.
Vous pouvez consulter son article original ici.
Merci khany et neo.51 pour leurs corrections et leurs conseils.
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 3 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Introduction
Cet article traite des fonctionnalits basiques de la POO en VB.Net. En effet, une des volutions notables de
VB.Net est d'tre totalement orient objet, contrairement aux versions prcdentes de VB.
Cet article est dcoup en dix leons et le code source est fourni pour chacune d'entre elles, en fin d'article.
Cet article a pour but d'atteindre les objectifs suivants :
1. Aborder de manire exhaustive la POO en VB.NET,
2. Apprendre comment sont utilises les techniques de la POO en VB.NET
3. Expliquer simplement les concepts suivants :
Cration et utilisation de classes et d'objets en VB.NET,
Fonctions Partages,
Encapsulation, Abstraction, Hritage et Polymorphisme,
Surcharge et Redfinition,
Constructeurs et Destructeurs.
En tudiant ce tutoriel, vous serez en mesure d'apprhender facilement la plupart des codes .NET.
De mme, des programmeurs Java/C++ peuvent l'utiliser pour aborder la POO avec VB.NET.
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 4 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Mode d'emploi du code
Pour chaque leon, le code source est disponible sous forme d'un simple fichier .vb (sans projet associ) : vous
aurez besoin du FrameWork SDK .NET pour compiler et excuter les exercices dans cet article.
Vous pouvez le tlcharger du site Web de Microsoft, ici.
Le compilateur VB.NET (vbc.exe) rside normalement dans votre dossier FrameworkSDK\bin.
Pour compiler manuellement un fichier, passez par l'excuteur de ligne de commande et tapez :
vbc filename.vb /out:"filename.exe" /r:"System.Windows.Forms.dll","System.dll"
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 5 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Leon 1 : Un peu de vocabulaire
Espace de Noms
En VB.NET, les classes et autres structures de donnes concernant un domaine bien dfini sont incluses dans un
espace de noms (ou NameSpace). Vous pouvez utiliser les classes appartenant un espace de noms simplement
en important cet espace : ceci se fait par le biais du mot-cl Imports.
Le FrameWork .NET fournit un ensemble trs fournis de classes pr-dfinies, groupes ensemble dans divers
espaces de noms.
Dans cette leon, nous utiliserons le namespace System. Importons le namespace System (dj disponible dans
.NET).
Imports System
Classes
Vous avez dj entendu parler des classes ? Pour faire simple, une classe (Class) est la dfinition d'un objet de
tous les jours. Par exemple, il est possible de dfinir une classe Humain afin de modliser tous les tres humains,
et une nomme Chien pour reprsenter les chiens. Les classes peuvent galement grer des mthodes : ce sont
(en gnral) des procdures concernant le fonctionnement de l'objet modliser.
Voici l'instruction de dclaration d'un espace de noms nomm Animaux :
Namespace Animaux
Chien est une classe appartenant l'espace de noms Animaux:
Class Chien
Et Aboie est une procdure de cette classe :
Function Aboie()
Console.Writeline ("Le chien aboie !")
End Function
End Class
End Namespace
Objet
Un objet est une instance de classe. Par exemple, Jimmy est un objet de type Chien. Pour illustrer ceci, nous
allons crer un objet dans la section suivante.
Module
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 6 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Il est possible d'utiliser des modules pour crire des fonctions ou procdures publiques : Un Module est donc un
groupe de fonctions. la diffrence d'une fonction appartenant une classe, une fonction publique d'un module
peut tre appele tout endroit du code. VB implmente les fonctions (Function) et les procdures (Sub). La seule
diffrence entre une fonction et une procdure est que contrairement une fonction, une procdure ne retourne
pas de valeur.
Public Module modMain
L'excution va dmarrer partir de la procdure Main() :
Sub Main()
'Appelle la fonction ci-dessous :
MaFonction()
End sub
MaFonction : une petite fonction afin d'utiliser la classe Chien :
Function MaFonction()
'Voici comment dclarer une variable nomme Jimmy, de type chien Chien :
'Nous spcifions Animaux.Chien car la classe Chien fait partie de l'espace de Nom Animaux
(cf. plus haut)
Dim Jimmy as Animaux.Chien
'Cre l'objet. Contrairement VB6, le mot cl Set n'est plus utilis !
Jimmy = New Animaux.Chien()
'Voici une autre manire de crer un objet :
'Dim Jimmy as New Chien
'Appel de la fonction principale de Jimmy
Jimmy.Aboie()
End Function
End module
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 7 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Leon 2 : Portes de vos dclarations
Les principales portes sont Public, Private, Friend et Protected. Une classe peut contenir des attributs ou des
mthodes, qui peuvent tre de chacuns des 4 types pr-cits :
- Ceux qui sont Public sont accessibles suite la cration de l'objet.
- Ceux qui sont Private ou Protected ne sont accessibles qu' l'intrieur mme du module de classe.
- Les membres Protected sont similaires aux Private, mais ils ont une particularit en cas d'hritage. Ce point sera
abord plus tard dans la leon correspondante.
- Les membres Friend ne sont accessibles qu' l'intrieur du projet, et pas par des lments extrieurs au projet en
cours.
Continuons sur notre exemple et importons l'espace de noms System :
Imports System
L'instruction de dbut de notre espace de noms : Animaux
(Tout le code qui suit en fera partie)
Namespace Animaux
Chien est une classe appartenant l'espace de noms Animaux :
Public Class Chien
'Voici une variable public
Public AgeDuChien as Integer
Aboie est une fonction publique (Public) de notre classe Chien :
Public Function Aboie()
Console.Writeline ("Le chien aboie !")
End Function
Et Marche en est une autre, dclare en prive (Private) :
Private Function Marche()
Console.Writeline ("Le chien marche")
End Function
End Class
End Namespace
Passons maintenant notre module :
Public Module modMain
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 8 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
L'excution va dmarrer partir de la procdure Main() :
Sub Main()
'Appelle notre fonction (cf. ci-dessus)
MaFonction()
End sub
'MaFonction: Appele partir de la procdure Main()
Function MaFonction()
Dim Jimmy as Animaux.Chien
Jimmy = New Animaux.Chien()
'Ce qui suit fonctionnera, car Aboie et AgeDuChien sont Public
Jimmy.Aboie()
Jimmy.AgeDuChien = 10
'Par contre, l'appel de la fonction Marche() chouera, car il se situe en dehors
'du module de classe Chien
'Donc le code qui suit est incorrect : dcommentez-le
'et essayez de compiler, vous obtiendrez une erreur !
'Jimmy.Marche()
End Function
End Module
Vocabulaire :
L'encapsulation
La gestion de donnes et des procdures associes une notion dans une classe s'appelle l'encapsulation.
Data Hiding ou Abstraction
Habituellement, dans une classe, les variables grant les donnes, comme AgeDuChien, sont dclare en tant
que Private. Ce sont les procdures Property qui sont utilise pour accder ces donnes. La protection des
donnes d'un objet en dehors du module de classe est appele Abstraction, ou bien encore Data Hiding. Ceci
sert prvenir des modifications "accidentelles" des donnes d'un objet via des fonctions externes au module
de classe.
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 9 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Leon 3 : Fonctions Partages
Dans une classe, les membres partags (proprits et mthodes) peuvent tre appels directement, sans passer
par l'instanciation d'un objet (comme prcdement dcrit). Le mot-cl Shared indique en effet que la proprit ou
mthode ne s'appuie pas sur un objet spcifique mais bien sur la classe elle-mme, et qu'elle peut tre appele
directement partir de cette classe, mme si celle-ci n'a aucune instance en cours.
Une proprit Shared contient quant elle une valeur commune tous les objets d'une classe.
Notre exemple dmarre de manire habituelle, avec l'import de l'espace de noms System, l'instruction de dbut de
notre espace de noms, Animaux, et une classe lui appartenant, Chien :
Imports System
Namespace Animaux
Class Chien
Et Aboie est maintenant une fonction Public et Shared de cette classe :
Public Shared Function Aboie()
Console.Writeline ("Le chien aboie !")
End Function
Marche, quant elle, est une fonction Public, mais non partage.
Public Function Marche()
Console.Writeline ("Le chien marche ...")
End Function
End Class
End Namespace
Dmarrons notre module, l'excution se fera partir de la procdure Main() :
Public Module modMain
Sub Main()
'Nous pouvons faire appel la mthode Aboie() directement,
'Sans passer par la cration d'un objet de type Chien,
'puisque qu'elle est partage
Animaux.Chien.Aboie()
'Par contre, nous ne pourrons utiliser la mthode Marche()
'que suite la cration d'un objet, puisque celle-ci
'n'est pas partage.
Dim Jimmy as Animaux.Chien
Jimmy = New Animaux.Chien()
Jimmy.Marche()
End sub
End Module
Rflchissons un instant! La procdure WriteLine() que nous utilisons depuis le dbut est une mthode partage
de la classe Console.
De mme, nous pouvons dclarer la procdure Main() elle-mme comme une mthode partage dans une classe :
c'est--dire Shared Sub Main().
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 10 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Essayez de dplacer cette procdure Main() du module dans la classe Chien ci-dessus et testez le rsultat !
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 11 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Leon 4 : La Surcharge
La surcharge est une technique simple utiliser, qui permet d'utiliser le mme nom de fonction avec des
paramtres de diffrents types. Voyons ce que a donne sur la classe Addition dans l'exemple qui suit.
Comme d'habitude, nous avons besoin de l'espace de noms System :
Imports System
Class Addition
Ensuite, ajoutons 2 fonctions Add(). La premire additionne 2 entiers ... (Convert.ToString est l'quivalent de la
fonction CStr de VB6)
Overloads Public Sub Add(A as Integer, B as Integer)
Console.Writeline ("Adding Integers: " + Convert.ToString(a + b))
End Sub
... et la deuxime concatne 2 chanes de caractres :
Overloads Public Sub Add(A as String, B as String)
Console.Writeline ("Adding Strings: " + a + b)
End Sub
Et les 2 ont le mme noms ? Ceci est possible uniquement car nous avons utilis le mot-cl Overloads dans leur
dclaration, pour justement spcifier la surcharge !
Ici, voyons ce que a donne avec la procdure Main() suivante, incluse dans le module de classe Addition (et donc
dclare en tant que partage, cf paragraphe prcdent) :
Shared Sub Main()
Dim monCalcul as Addition
'Cre l'objet
monCalcul = New Addition
'Appel de la premire fonction ...
monCalcul.Add(10, 20)
' ... et appel de la seconde :
monCalcul.Add("Bonjour", " comment allez-vous ?")
End Sub
End Class
Complments :
Signature
C'est ainsi que l'on appelle chaque squence distincte de paramtres, c'est--dire chaque manire de faire
appel la mthode surcharge.
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 12 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Leon 5 : L'Hritage
L'hritage est un mcanisme par lequel une classe drive (ou classe fille) hrite de toutes les caractristiques de
sa classe de base (ou classe mre). En bref, il est possible de crer via hritage vos classes partir d'une classe
existante : Il suffit pour cela d'utiliser le mot-cl Inherits.
Voici un exemple simple. Commenons par importer l'espace de noms habituel :
Imports System
Voici notre classe de base :
Class Humain
'Quelque chose que la plupart des tres humains font :
Public Sub Marche()
Console.Writeline ("Je marche ...")
End Sub
End Class
Et maintenant, crons une classe fille nomme Developpeur :
Class Developpeur
Inherits Humain
'Nous avons donc dj accs la mthode Marche() dfinie ci-dessus
'Et voici une autre qui illustre ce que certains programmeurs font parfois :
Public Sub PiqueDuCode()
Console.Writeline ("Je pompe du code ...")
End Sub
End Class
Ce qui nous permet de coder la procdure MainClass() suivante :
Class MainClass
'Notre procdure principale :
Shared Sub Main()
Dim Tom as Developpeur
Tom = New Developpeur
'Cet appel est valide puisque Developpeur a accs cette fonction
'hrite de la classe Humain :
Tom.Marche()
'Celui-ci galement puisque Tom est une instance de la classe Developpeur
Tom.PiqueDuCode()
End Sub
End Class
Complments :
MustInherit
Ce mot cl indique qu'une classe ne peut tre instancie, et qu'elle ne peut donc tre utilise que comme
classe de base. Par exemple, si vous dclarez la classe Humain en tant que "MustInherit Humain", alors vous
ne pourrez pas crer d'objets de type Humain partir de cette classe, mais seulement partir de classes
drives.
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 13 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
NotInheritable
A l'inverse, ce mot-cl indique que cette classe ne peut pas tre hrite, c'est--dire servir de classe de base.
Par exemple, si vous dclarez la classe Humain en tant que "NotInheritable Humain", aucune classe drive
ne pourra lui tre cre.
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 14 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
Leon 6 : La Rdfinition
Par dfaut, une classe drive hrite des mthodes de sa classe de base. Mais si une proprit ou une mthode
doit avoir un comportement diffrent dans la classe fille, elle doit y tre redfinie !
En fait, il suffit de dfinir une nouvelle implmentation de la mthode dans la classe drive :
Le mot-cl Overridable est utilis pour prciser qu'une mthode peut tre redfinie,
et le mot-cl Overrides est quant lui utilis pour indiquer quelles mthodes sont redfinies.
tudions ceci sur un exemple, partir de notre classe Humain :
Imports System
Class Humain
'Parle() est redfinissable :
Overridable Public Sub Parle()
Console.Writeline ("Je parle")
End Sub
End Class
Maintenant, crons une classe drive de Humain :
Un Indien (Indien) est un humain (Humain) :
Class Indien
Inherits Humain
'Notre Indien parle l'Hindi, la langue nationale en Inde
'la mthode Parle() qui suit redfinit la mthode Parle() de la classe de base (Humain)
Overrides Public Sub Parle()
Console.Writeline ("Je parle Hindou")
End Sub
End Class
Important : videmment, un appel de Parle() partir d'un objet d'une classe drive va faire appel la mthode
Parle() de cette mme classe.
Si vous souhaitez faire rfrence la mthode Parle() de la classe de base, il vous suffit alors d'utiliser le mot-cl
MyBase, comme ceci :
Mybase.Parle()
Voici une classe pour tester nos exemples :
Class MainClass
'Notre procdure principale :
Shared Sub Main()
'Tom est un humain
Dim Tom as Humain
Tom = New Humain
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 15 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
'Tony est humain, et plus prcisement Indien
Dim Tony as Indien
Tony = New Indien
'Voici un appel la mthode Parle() de la classe Humain :
Tom.Parle()
'Et un appel de la mthode Parle() de la classe Indien
Tony.Parle()
End Sub
End Class
Complments :
MustOverride
Ce mot cl indique qu'une mthode doit tre redfinie pour chaque classe fille. Par exemple, si dans la classe
Humain, vous dclarez la mthode Parle en tant que "MustOverride Parle", chacune des classes filles devra
redfinir cette mthode.
NotOverridable
A l'inverse, ce mot-cl indique que cette procdure ne peut tre redfinie dans une classe fille. Par exemple, si
dans la classe Humain, vous dclarez la mthode Parle en tant que "NotOverridable Parle", aucune classe fille
ne pourra redfinir cette mthode.
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 16 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Leon 7 : Le Polymorphisme d'hritage
Le polymorphisme est un mcanisme via lequel un objet peut prendre plus d'une forme. Par exemple, si vous avez
une classe de base nomme Humain, un objet de type Humain peut tre utilis pour contenir un objet de n'importe
laquelle de ses classes drives. Quand vous appelez une mthode partir de votre objet, le systme dterminera
automatiquement le type de l'objet afin d'appeler la fonction approprie.
Imaginons par exemple une mthode nomme Parle() dans la classe de base Humain. Crons ensuite une classe
fille et redfinissons-y la mthode Parle(). Puis crez un objet de la classe fille et affectez-lui la variable de la
classe mre : maintenant, si vous faites appel la mthode Parle() partir de cette variable, ce sera celle dfinie
dans votre classe fille qui sera appele.
Au contraire, si vous affectez cette variable un objet de la classe mre, alors ce sera la mthode Parle() de la
classe mre qui sera appele.
Ceci est dtermin lors de la compilation, c'est ce qu'on appelle une liaison tardive.
Reprenons l'exemple du paragraphe prcdent : la diffrence se situe dans la procdure Shared Sub Main(), de la
classe MainClass. tudions le code pour voir ce qui a chang :
Import Systems
Class Humain
'Parle() peut tre redfinie :
Overridable Public Sub Parle()
Console.Writeline ("Je parle")
End Sub
End Class
Maintenant, crons une classe drive de Humain :
Un Indien (Indien) est un humain (Humain) :
Class Indien
Inherits Humain
'Notre Indien parle l'Hindi, la langue nationale en Inde
'la mthode Parle() qui suit redfinit la mthode Parle() de la classe de base (Humain)
Overrides Public Sub Parle()
Console.Writeline ("Je parle Hindou")
End Sub
End Class
tudions soigneusement le code suivant :
Class MainClass
'Notre fonction principale :
Shared Sub Main()
'Tom est un humain (classe de base)
Dim Tom as Humain
'Affectons-lui une variable de la classe fille Indien
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 17 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Tom = New Indian
'Cette affectation est correcte, car la classe Indien
'est fille de la classe Humain.
'Puis faisons appel la mthode Parle comme ceci :
Tom.Parle()
End Sub
End Class
Sur le dernier appel (Tom.Parle()), quelle procdure va tre excute ? Celle de la classe Indien, ou bien celle de
la classe Humain ?
Cette question est pertinente, car Tom a t dclar en tant qu'Humain, mais un objet de type Indien lui a t
affect.
La rponse est : c'est la mthode Parle() de la classe Indien va tre appele.
Ceci parce que, comme la plupart des langages orients objet, Vb.NET peut automatiquement dtecter le type de
l'objet assign la variable appartenant la classe de base : c'est ce que l'on appelle le Polymorphisme.
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 18 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Leon 8 : Constructeurs et Destructeurs
Un constructeur (Constructor) est une procdure spciale qui est automatiquement excute quand un objet est
cr. Une telle procdure se nomme New(). Comme indiqu dans la leon 4, les constructeurs peuvent faire l'objet
de surcharge mais contrairement aux autres mthodes, le mot cl Overloads n'est pas requis.
Par opposition, un destructeur (Destructor) est une procdure qui est automatiquement excute la mort de
l'objet. Une telle procdure se nomme Finalize(). En VB6, ces procdures taient dj disponibles, elles se
nommaient Class_Initialize() et Class_Terminate().
Dmarrons l'tude d'un exemple, avec la classe Chien :
Imports System
Class Chien
'La variable age
Private Age as integer
Voici un constructeur :
Public Sub New()
Console.Writeline ("Un chien est n")
Age = 0
End Sub
Et grce la surcharge, un 2exemple de constructeur (avec paramtre cette fois-ci) :
Public Sub New(val as Integer)
Console.Writeline ("Nouveau chien dont l'ge est " + Convert.ToString(val))
Age = val
End Sub
Voici le code du destructeur, suivi de la procdure habituelle Main() :
Overrides Protected Sub Finalize()
Console.Writeline ("Paf le chien ... (dsol)")
End Sub
'La fonction principale :
Shared Sub Main()
Dim Jimmy, Jacky as Chien
'Cration des objets
'Ceci va appeler le contructeur n1
Jimmy = New Chien
'Et ceci le contructeur n2
Jacky = New Chien (10)
End Sub
End Class
La destruction intervient automatiquement en fin de porte ou de programme, grce au Garbage Collector. Il est
possible de faire le mnage vous-mme en dtruisant vos objets.
Ex :
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 19 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Jimmy = Nothing
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 20 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Leon 9 : Les Proprits
Pour grer les donnes de vos objets, vous avez le choix entre des champs ou des proprits. Mais alors que les
champs sont de simples variables publiques, les proprits utilisent des procdures pour encadrer la lecture et la
mise jour des donnes (cf. la dfinition d'encapsulation). Ce sont les mots-cl Get (lecture) et Set (mise jour)
qui sont utilises pour la dclaration de ces procdures.
tudions l'exemple suivant :
Imports System
Public Class Chien
'Utilisons une variale prive pour l'ge :
Private mAgeDuChien as Integer
Et voici nos procdures Property :
Public Property Age() As Integer
'Lecture de l'ge :
Get
Console.Writeline ("Getting Property")
Return mAgeDuChien
End Get
'MAJ de l'ge :
Set(ByVal Value As Integer)
Console.Writeline ("Setting Property")
mAgeDuChien = Value
End Set
End Property
End Class
Voyons comment utiliser ces procdures :
Class MainClass
'Dbut du programme :
Shared Sub Main()
'Crons un objet :
Dim Jimmy as Chien
Jimmy = New Chien
'Nous ne pouvons accder directement la variable mAgeDuChien,
'nous devons utiliser la procdure Age().
'Affectons-lui une valeur. La procdure Set Age sera mise contribution :
Jimmy.Age = 30
'Rcuprons maintenant cette valeur : c'est au tour de la procdure Get Age de travailler :
Dim curAge = Jimmy.Age()
End Sub
End Class
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 21 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Leon 10 : Une petite application
Passons maintenant l'tude d'un programme basique. Importons tout d'abord les espaces de noms requis :
Imports System
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Drawing
'Nous allons crer une classe drive de la classe System.Windows.Forms.Form
'En effet, Forms est un espace de noms inclus dans l'espace de noms Windows,
'lui-mme inclus dans System, et Form est une classe de Forms.
Public Class SimpleForm
Inherits System.Windows.Forms.Form
'Notre constructeur :
Public Sub New()
'On fait appel la procdure de la classe mre :
MyBase.New()
Affectons la proprit Text de cette classe. Nous avons hrit cette proprit de la classe mre :
Me.Text = "Bonjour, comment allez-vous ?"
End Sub
End Class
Public Class MainClass
Shared Sub Main()
'Crons un objet partir de cette classe SimpleForm :
Dim sf as SimpleForm
sf = New SimpleForm
'Et passons cet objet en argument la procdure Run() pour dmarrer :
System.Windows.Forms.Application.Run(sf)
End Sub
End Class
Nous avons fait le tour...
Maintenant, vous tes apte lire et apprhender la plupart des sources VB.Net relatives la POO, et certainement
capable de faire un bon usage des mcanismes de la POO dans vos propres programmes.
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 22 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com
Tlchargements
Les sources : OOPS_In_VBNET_src.zip (FTP) ou OOPS_In_VBNET_src.zip (HTTP)
Le tutoriel au format PDF (23 pages, 80 Ko) : POO_VB_NET.pdf (FTP) ou POO_VB_NET.pdf (HTTP)
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 23 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://xo.developpez.com/tutoriel/vb.net/poo/
www.cours-ofppt.com www.cours-ofppt.com