0% ont trouvé ce document utile (0 vote)
7 vues23 pages

POO en VB.NET : Guide Complet et Pratique

Cet article présente les concepts fondamentaux de la Programmation Orientée Objet (POO) en VB.NET, en détaillant les mécanismes tels que les classes, objets, héritage, polymorphisme et encapsulation. Il est structuré en dix leçons, chacune accompagnée de code source pour illustrer les principes abordés. L'objectif est de fournir une compréhension approfondie de la POO en VB.NET, facilitant ainsi l'apprentissage pour les développeurs venant d'autres langages comme Java ou C++.

Transféré par

fortunedegers737
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues23 pages

POO en VB.NET : Guide Complet et Pratique

Cet article présente les concepts fondamentaux de la Programmation Orientée Objet (POO) en VB.NET, en détaillant les mécanismes tels que les classes, objets, héritage, polymorphisme et encapsulation. Il est structuré en dix leçons, chacune accompagnée de code source pour illustrer les principes abordés. L'objectif est de fournir une compréhension approfondie de la POO en VB.NET, facilitant ainsi l'apprentissage pour les développeurs venant d'autres langages comme Java ou C++.

Transféré par

fortunedegers737
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction à la Programmation Orientée

Objet en [Link]

par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Date de publication :10/11/2005

Dernière mise àjour :28/01/2006

Cet article apour but de vous initier aux mécanismes de la POO utilisés par
le langage [Link].
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Remerciements
Introduction
Mode d'emploi du code
Leçon 1 :Un peu de vocabulaire
Espace de Noms
Classes
Objet
Module
Leçon 2 :Portées de vos déclarations
Leçon 3 :Fonctions Partagées
Leçon 4 :La Surcharge
Leçon 5 :L'Héritage
Leçon 6 :La Rédéfnition
Leçon 7 :Le Polymorphisme d'héritage
Leçon 8 :Constructeurs et Destructeurs
Leçon 9 :Les Propriétés
Leçon 10 : Une petite application
Téléchargements

- 2-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

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.

- 3-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Introduction

Cet article traite des fonctionnalités basiques dela POO [Link]. En effet, une des évolutions notables de
[Link] est d'êtretotalement orienté objet, contrairementaux versions précédentes deVB.

Cet article est découpé en dix leçons et le code source est fournipourchacuned'entre elles, enfn d'article.

Cet article a pour but d'atteindre les objectifs suivants:

1. Aborder de manière exhaustive la POO en [Link],

2. Apprendre comment sont utilisées les techniques de la POO en [Link]

3. Expliquer simplement les concepts suivants:

• Création et utilisation de classes et d'objetsen [Link],


• Fonctions Partagées,
• Encapsulation, Abstraction, Héritage et Polymorphisme,
• Surcharge et Redéfnition,
• Constructeurs et Destructeurs.

En étudiant ce tutoriel, vous serez en mesure d'appréhenderfacilement la plupartdes codes .NET.

De même, des programmeurs Java/C++ peuventl'utiliserpour aborder la POO [Link].

- 4-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Mode d'emploi du code

Pour chaque leçon, le code source est disponible sous forme d'un simple fchier .vb (sans projet associé): vous
aurez besoin du FrameWork SDK .NET pour compiler et exécuter les exercices danscetarticle.

Vous pouvez le télécharger du site Web de Microsoft, ici.

Le compilateur [Link] ([Link]) réside normalement dans votre dossier FrameworkSDK\bin.

Pour compiler manuellement un fchier, passez par l'exécuteur deligne decommande et tapez:

vbc [Link] /out:"[Link]" /r:"[Link]","[Link]"

- 5-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Leçon 1: Un peu devocabulaire

Espace de Noms

En [Link], les classes et autres structures de données concernant un domaine bien défni sont incluses dans un
espace de noms (ou NameSpace). Vous pouvez utiliser les classes appartenant à un espace de noms simplement
enimportant cet espace : ceci se fait par le biaisdu mot-clé Imports.

LeFrameWork .NET fournit un ensemble très fournis de classes pré-défnies, groupées ensemble dans divers
espaces de noms.

Dans cette leçon, nous utiliserons le namespace System. Importons le namespace System (déjà disponibledans
.NET).

Imports System

Classes

Vous avez déjà entendu parlerdes classes? Pourfaire simple, une classe (Class) est la défnition d'un objet de
tous les jours. Par exemple, il est possible de défnir une classe Humain afn de modéliser tous les êtres humains,
etune nommée Chienpourreprésenterleschiens. Lesclassespeuventégalementgérer des méthodes: ce sont
(en général) des procédures concernant le fonctionnement de l'objetà modéliser.

Voici l'instruction de déclaration 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 procédure de cette classe:

Function Aboie()
[Link] ("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 créer un objet dans la section suivante.

Module

- 6-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Il est possible d'utiliser des modules pour écrire des fonctions ou procédures publiques: Un Module est donc un
groupe de fonctions. À la différence d'une fonction appartenant àune classe, une fonction publique d'un module
peutêtreappelée àtoutendroitducode. VBimplémentelesfonctions(Function) etlesprocédures(Sub). La seule
différence entre une fonction et une procédure est que contrairement àune fonction, une procédure ne retourne
pas de valeur.

Public Module modMain

L'exécution va démarrer àpartir de la procédure Main():

Sub Main()
'Appelle la fonction ci-dessous:
MaFonction()
End sub

MaFonction :une petite fonction afn d'utiliser la classe Chien:

Function MaFonction()
'Voici comment déclarer une variable nommée Jimmy,de type chien Chien:
'Nous spécifions [Link] car la classe Chienfaitpartie del'espace de Nom Animaux
(cf. plus haut)
Dim Jimmy as [Link]
'Crée l'objet. Contrairement à VB6,le mot clé Setn'est plus utilisé!
Jimmy = New [Link]()
'Voici une autremanière de créerun objet:
'Dim Jimmy asNew Chien
'Appel de la fonction principale deJimmy
[Link]()
End Function
End module

- 7-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Leçon 2 : Portées de vos déclarations

Les principales portées sont Public, Private, Friend et Protected. Une classe peut contenir des attributs ou des
méthodes, qui peuvent être de chacuns des 4types pré-cités:

- Ceux qui sont Public sont accessibles suite à la créationde l'objet.

- Ceux qui sont Private ou Protected ne sont accessibles qu'à l'intérieur même du module de classe.

- Les membresProtected sont similaires aux Private, mais ils ont une particularité en cas d'héritage. Ce point sera
abordé plus tard dans la leçon correspondante.

- Les membres Friend ne sont accessibles qu'à l'intérieur duprojet, et pas par des éléments extérieurs au projeten
cours.

Continuons sur notre exemple et importons l'espace denoms System:

Imports System

L'instruction de début 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()


[Link] ("Le chien aboie !")
End Function

Et Marche en est une autre, déclarée en privée (Private):

Private Function Marche()


[Link] ("Le chien marche")
End Function
End Class
End Namespace

Passons maintenant ànotre module:

Public Module modMain

- 8-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

L'exécution va démarrer àpartir de la procédure Main():

Sub Main()
'Appelle notre fonction (cf. ci-dessus)
MaFonction()
End sub
'MaFonction: Appelée à partir de la procédure Main()
Function MaFonction()
Dim Jimmy as [Link]
Jimmy = New [Link]()
'Ce qui suit fonctionnera, car Aboie etAgeDuChien sont Public
[Link]()
[Link] =10
'Par contre, l'appel de la fonction Marche()échouera,car il sesitue en dehors
'du module de classe Chien
'Donc le code quisuitest incorrect : décommentez-le
'et essayez de compiler, vous obtiendrez uneerreur!
'[Link]()
End Function
End Module

Vocabulaire:

L'encapsulation

La gestion de données et des procédures associéesà unenotiondans uneclasses'appelle l'encapsulation.

Data Hiding ou Abstraction

Habituellement, dans une classe, les variables gérant les données, comme AgeDuChien, sont déclarée en tant
que Private. Ce sont les procédures Property qui sont utilisée pour accéder àces données. La protection des
données d'un objet en dehors du module de classe est appelée Abstraction, ou bien encore Data Hiding. Ceci
sert à prévenir des modifications "accidentelles" des données d'un objet via des fonctions externes aumodule
de classe.

- 9-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Leçon 3: Fonctions Partagées

Dans une classe, les membres partagés (propriétéset méthodes) peuvent êtreappelésdirectement,sans passer
par l'instanciation d'un objet (comme précédement décrit). Le mot-clé Shared indique en effet que la propriété ou
méthode ne s'appuie pas sur un objet spécifque mais bien sur la classe elle-même, et qu'elle peut être appelée
directement à partir de cette classe, même si celle-ci n'a aucune instance en cours.

Une propriété Shared contient quant à elle une valeur commune àtous les objets d'une classe.

Notre exemple démarre de manière habituelle, avec l'import de l'espace de noms System, l'instruction dedébut 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()


[Link] ("Le chien aboie !")
End Function

Marche, quant à elle, est une fonction Public, mais non partagée.

Public Function Marche()


[Link] ("Le chien marche ...")
End Function
End Class
End Namespace

Démarrons notre module, l'exécution se fera à partir de la procédure Main():

Public Module modMain


Sub Main()
'Nous pouvons faire appel à la méthodeAboie() directement,
'Sans passer par la création d'un objet de type Chien,
'puisque qu'elle est partagée
[Link]()
'Par contre, nous ne pourrons utiliserla méthode Marche()
'que suite à la créationd'unobjet,puisque celle-ci
'n'est pas partagée.
Dim Jimmy as [Link]
Jimmy = New [Link]()
[Link]()
End sub
End Module

Réféchissons un instant! La procédure WriteLine() quenous utilisonsdepuis le début est une méthode partagée
de la classe Console.

De même, nous pouvons déclarer la procédure Main() elle-même comme une méthode partagée dans une classe:

c'est-à-dire Shared Sub Main().

-10-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Essayez de déplacer cette procédure Main() du module dans la classe Chien ci-dessus et testez le résultat!

-11-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Leçon 4: La Surcharge

La surcharge est une technique simple àutiliser, qui permet d'utiliser le même nom de fonction avec des
paramètres de différents 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 première additionne 2 entiers ... ([Link] est l'équivalent de la
fonction CStr de VB6)

Overloads Public Sub Add(A as Integer,B asInteger)


[Link] ("Adding Integers: " + [Link](a+ b))
End Sub

... et la deuxième concatène 2 chaînes de caractères:

Overloads PublicSub Add(AasString, B as String)


[Link] ("Adding Strings: " +a + b)
End Sub

Et les 2 ont le même noms ? Ceci est possible uniquement car nous avons utilisé le mot-cléOverloads dansleur
déclaration, pour justement spécifer la surcharge!

Ici, voyons ce que ça donne avec la procédure Main() suivante, incluse dans le module de classe Addition(etdonc
déclarée en tant que partagée, cf paragraphe précédent):

Shared Sub Main()


Dim monCalcul as Addition
'Créée l'objet
monCalcul = New Addition
'Appel de la première fonction ...
[Link](10, 20)
' ... et appel delaseconde:
[Link]("Bonjour", " comment allez-vous ?")
End Sub
End Class

Compléments:

Signature

C'est ainsi que l'on appelle chaque séquence distincte de paramètres, c'est-à-dire chaque manière de faire
appel àla méthode surchargée.

-12-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Leçon 5: L'Héritage

L'héritage est un mécanisme par lequel une classe dérivée (ou classe flle) hérite de toutes les caractéristiques de
saclassede base(ouclassemère). En bref, il est possible de créerviahéritagevosclasses àpartird'une classe
existante :Il sufft pour cela d'utiliser le mot-clé Inherits.

Voici un exemple simple. Commençons par importerl'espacede noms habituel:

Imports System

Voici notre classe de base:

Class Humain
'Quelque choseque laplupartdes êtres humains font:
Public Sub Marche()
[Link] ("Je marche ...")
End Sub
End Class

Et maintenant, créons une classe flle nommée Developpeur:

Class Developpeur
Inherits Humain
'Nous avons donc déjà accès àla méthode Marche() définie ci-dessus
'Et voici une autre qui illustre ce que certainsprogrammeurs font parfois:
Public Sub PiqueDuCode()
[Link] ("Je pompe du code ...")
End Sub
End Class

Ce qui nous permet de coder la procédure MainClass() suivante:

Class MainClass
'Notre procédure principale:
Shared Sub Main()
Dim Tom as Developpeur
Tom =New Developpeur
'Cet appel est valide puisque Developpeur a accèsà cette fonction
'héritée de la classe Humain:
[Link]()
'Celui-ci également puisque Tom est uneinstance de laclasse Developpeur
[Link]()
End Sub
End Class

Compléments:

MustInherit

Ce mot clé indique qu'une classe ne peut être instanciée, et qu'elle ne peut donc être utilisée que comme
classe de base. Par exemple, si vous déclarez la classe Humain entant que "MustInherit Humain", alorsvous
ne pourrez pas créer d'objets de type Humain àpartir de cette classe, mais seulement àpartir de classes
dérivées.

-13-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

NotInheritable

A l'inverse,ce mot-cléindiquequecetteclasse ne peut pas êtrehéritée, c'est-à-direservir declasse de base.


Par exemple, si vous déclarez la classe Humain en tantque"NotInheritable Humain", aucuneclasse dérivée
ne pourra lui être créée.

-14-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Leçon 6: La Rédéfnition

Pardéfaut,une classedérivéehéritedesméthodes desa classe de base. Maissi une propriété ou une méthode
doit avoir un comportement différent dans la classe flle, elledoit yêtreredéfnie!

En fait, il sufft de défnir une nouvelle implémentation delaméthodedans la classe dérivée:

Lemot-clé Overridable est utilisé pour préciser qu'une méthode peut être redéfnie,

et le mot-clé Overrides est quant à lui utilisé pour indiquer quelles méthodes sont redéfnies.

Étudions ceci sur un exemple, à partir de notre classeHumain:

Imports System
Class Humain
'Parle() est redéfinissable:
Overridable Public Sub Parle()
[Link] ("Je parle")
End Sub
End Class

Maintenant, créons une classe dérivée de Humain:

Un Indien (Indien) est un humain (Humain):

Class Indien
Inherits Humain
'Notre Indien parle l'Hindi, la languenationaleen Inde
'la méthode Parle() qui suit redéfinitla méthode Parle() de laclasse debase(Humain)
Overrides Public Sub Parle()
[Link] ("Je parle Hindou")
End Sub
End Class

Important : Évidemment, un appel de Parle() à partir d'un objet d'une classe dérivée va faire appel à la méthode
Parle() de cette même classe.

Si vous souhaitez faire référence à la méthode Parle() de la classe debase, il vous sufft alors d'utiliser lemot-clé
MyBase, comme ceci:

[Link]()

Voici une classe pour tester nos exemples:

Class MainClass
'Notre procédure principale:
Shared Sub Main()
'Tom est un humain
Dim Tom as Humain
Tom =New Humain

-15-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

'Tony est humain, et plus précisement Indien


Dim Tony as Indien
Tony = New Indien
'Voici un appel à la méthode Parle() dela classeHumain:
[Link]()
'Et un appel de la méthode Parle()de la classe Indien
[Link]()
End Sub
End Class

Compléments:

MustOverride

Ce mot clé indique qu'une méthode doit être redéfinie pour chaque classe fille. Par exemple, si dans la classe
Humain, vous déclarez la méthode Parle entant que"MustOverride Parle",chacune des classes filles devra
redéfinir cette méthode.

NotOverridable

A l'inverse, ce mot-clé indique que cette procédure ne peut être redéfinie dans une classe fille. Par exemple,si
danslaclasse Humain,vous déclarezla méthode Parle en tant que "NotOverridable Parle", aucune classe fille
ne pourra redéfinir cette méthode.

-16-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Leçon 7: Le Polymorphisme d'héritage

Le polymorphisme est un mécanisme via lequel un objet peut prendre plus d'une forme. Par exemple, si vous avez
une classe de base nommée Humain,un objet de type Humain peut être utilisé pour contenir un objet de n'importe
laquelle de ses classesdérivées. Quandvousappelez uneméthodeàpartirde votreobjet,le système déterminera
automatiquement le type de l'objet afn d'appeler la fonction appropriée.

Imaginons par exemple une méthode nommée Parle() dans la classe de base Humain. Créons ensuite une classe
flle et redéfnissons-y la méthode Parle(). Puis créez un objet de la classe flle et affectez-lui la variable de la
classe mère : maintenant, si vous faites appel à la méthode Parle() àpartir de cette variable, ce sera celle défnie
dans votre classe flle qui sera appelée.

Au contraire, si vous affectez à cette variable un objet de la classe mère, alors ce sera la méthode Parle() de la
classe mère qui sera appelée.

Ceci est déterminé lors de lacompilation, c'est ce qu'on appelle uneliaisontardive.

Reprenons l'exemple du paragraphe précédent : la différence sesitue danslaprocédure SharedSub Main(),dela


classe MainClass. Étudions le code pour voir ce qui a changé:

Import Systems
Class Humain
'Parle() peut être redéfinie:
Overridable Public Sub Parle()
[Link] ("Je parle")
End Sub
End Class

Maintenant, créons une classe dérivée de Humain:

Un Indien (Indien) est un humain (Humain):

Class Indien
Inherits Humain
'Notre Indien parle l'Hindi, la languenationaleen Inde
'la méthode Parle() qui suit redéfinitla méthode Parle() de laclasse debase(Humain)
Overrides Public Sub Parle()
[Link] ("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

-17-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Tom =New Indian


'Cette affectation est correcte, car laclasse Indien
'est fillede la classe Humain.
'Puis faisons appel à la méthode Parle commececi:
[Link]()
End Sub
End Class

Surle dernier appel ([Link]()),quelleprocédure va être exécutée?Cellede la classeIndien,oubien cellede


la classe Humain?

Cette question est pertinente, car Tom a été déclaré en tant qu'Humain, mais un objet de type Indien lui a été
affecté.

La réponse est : c'est la méthode Parle() de la classeIndienva être appelée.

Ceci parce que, comme laplupart deslangages orientésobjet, [Link] automatiquementdétecterle typede
l'objet assigné à la variable appartenant à la classe debase : c'estce que l'onappelle le Polymorphisme.

-18-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Leçon 8: Constructeurs et Destructeurs

Un constructeur (Constructor) est une procédure spéciale qui est automatiquement exécutée quand un objet est
créé. Une telle procédure se nomme New(). Comme indiqué dans laleçon4,lesconstructeurspeuvent fairel'objet
de surcharge mais contrairement aux autres méthodes,le motcléOverloads n'estpas requis.

Par opposition, un destructeur (Destructor) est une procédure qui est automatiquement exécutée àla mort de
l'objet. Une telle procédure se nommeFinalize(). En VB6, ces procédures étaient déjà disponibles, elles se
nommaient Class_Initialize() et Class_Terminate().

Démarrons 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()


[Link] ("Un chien est né")
Age =0
End Sub

Et grâce à la surcharge, un 2° exemple de constructeur(avec paramètrecette fois-ci):

Public Sub New(val asInteger)


[Link] ("Nouveau chien dont l'âgeest " + [Link](val))
Age =val
End Sub

Voici le code du destructeur, suivi de la procédure habituelle Main():

Overrides Protected Sub Finalize()


[Link] ("Paf le chien ... (désolé)")
End Sub
'La fonction principale:
Shared Sub Main()
Dim Jimmy,Jacky as Chien
'Création des objets
'Ceci va appeler le contructeur n°1
Jimmy = New Chien
'Et ceci le contructeur n°2
Jacky =New Chien (10)
End Sub
End Class

La destruction intervient automatiquement en fn de portée ou de programme, grâce au Garbage Collector. Il est


possible de faire le ménage vous-même en détruisantvos objets.

Ex:

-19-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Jimmy =Nothing

-20-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Leçon 9: Les Propriétés

Pour gérer les données de vos objets, vous avez le choix entre des champs ou des propriétés. Mais alors que les
champs sont de simples variables publiques, les propriétés utilisent des procédures pour encadrer la lectureet la
mise àjour des données (cf. la défnition d'encapsulation). Ce sont les mots-clé Get (lecture) et Set (mise àjour)
qui sont utilisées pour la déclaration de ces procédures.

Étudions l'exemple suivant:

Imports System
Public Class Chien
'Utilisons une variale privée pour l'âge:
Private mAgeDuChien as Integer

Et voici nos procédures Property:

Public Property Age() As Integer


'Lecture de l'âge:
Get
[Link] ("Getting Property")
Return mAgeDuChien
End Get
'MAJ de l'âge:
Set(ByVal Value As Integer)
[Link] ("Setting Property")
mAgeDuChien =Value
End Set
End Property
End Class

Voyons comment utiliser ces procédures:

Class MainClass
'Début du programme:
Shared Sub Main()
'Créons un objet:
Dim Jimmy as Chien
Jimmy = New Chien
'Nous ne pouvons accéder directement à la variable mAgeDuChien,
'nous devons utiliser la procédure Age().
'Affectons-lui une valeur. La procédure SetAge sera mise à contribution:
[Link] =30
'Récupérons maintenant cette valeur : c'estau tour de la procédure Get Age detravailler:
Dim curAge = [Link]()
End Sub
End Class

-21-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Leçon 10 : Une petite application

Passons maintenant à l'étude d'un programme basique. Importons toutd'abordlesespaces de noms requis:

Imports System
Imports [Link]
Imports [Link]
Imports [Link]
'Nous allons créer une classe dérivée de laclasse [Link]
'En effet, Forms est un espace de nomsinclus dans l'espace de noms Windows,
'lui-même inclusdansSystem,et Form est une classe de Forms.
Public Class SimpleForm
Inherits [Link]
'Notre constructeur:
Public Sub New()
'On fait appel àla procédure de la classe mère:
[Link]()

Affectons la propriété Text de cette classe. Nous avons hérité cette propriété de la classe mère:

[Link] = "Bonjour, comment allez-vous ?"


End Sub
End Class

Public Class MainClass


Shared Sub Main()
'Créons un objet à partir de cetteclasse SimpleForm:
Dim sf as SimpleForm
sf =New SimpleForm
'Et passons cet objet en argument à la procédure Run()pourdémarrer:
[Link](sf)
End Sub
End Class

Nous avons fait le tour...

Maintenant, vous êtes apte à lire et appréhenderla plupart dessources [Link] relatives à la POO, etcertainement
capable de faire un bon usage des mécanismes delaPOOdans vospropres programmes.

-22-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]
Introduction àla Programmation Orientée Objet en [Link] par Anoop Madusudanan Xavier Vlieghe (Traducteur)

Téléchargements

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) ouPOO_VB_NET.pdf (HTTP)

-23-
Ce document est issu de [Link] et reste la propriété exclusive de son auteur. La copie, modifcation et/ou distributionpar
quelque moyen que ce soit est soumise àl'obtention préalable de l'autorisation de l'auteur.
[Link]

Vous aimerez peut-être aussi