Académique Documents
Professionnel Documents
Culture Documents
Poo VB Net
Poo VB Net
NET
par Anoop Madusudanan Xavier Vlieghe (Traducteur)
Cet article a pour but de vous initier aux mcanismes de la POO utiliss par le langage VB.NET.
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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
-2Ce 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/
Introduction la Programmation Oriente Objet en VB.NET 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.
-3Ce 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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.
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.
-4Ce 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
Pour compiler manuellement un fichier, passez par l'excuteur de ligne de commande et tapez :
-5Ce 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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.
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
-6Ce 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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
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
-7Ce 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
- 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.
L'instruction de dbut de notre espace de noms : Animaux (Tout le code qui suit en fera partie)
Namespace Animaux
-8Ce 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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.
-9Ce 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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
Marche, quant elle, est une fonction Public, mais non partage.
Public Function Marche() Console.Writeline ("Le chien marche ...") End Function End Class End Namespace
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().
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
Essayez de dplacer cette procdure Main() du module dans la classe Chien ci-dessus et testez le rsultat !
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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.
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 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.
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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.
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.
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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.
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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.
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()
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
'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.
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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.
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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().
Voici un constructeur :
Public Sub New() Console.Writeline ("Un chien est n") Age = 0 End Sub
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 :
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
Jimmy = Nothing
- 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/
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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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.
- 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/
Introduction la Programmation Oriente Objet en VB.NET par Anoop Madusudanan Xavier Vlieghe (Traducteur)
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)
- 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/