poo_vb_net

Upload: zakariachalikh

Post on 03-Jun-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/11/2019 POO_VB_NET

    1/23

    Introduction la Programmation Oriente

    Objet en VB.NET

    parAnoop MadusudananXavier 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 parle langage VB.NET.

    www.cours-ofppt.com

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    2/23

    Remerciements

    IntroductionMode d'emploi du codeLeon 1 : Un peu de vocabulaire

    Espace de NomsClassesObjetModule

    Leon 2 : Portes de vos dclarationsLeon 3 : Fonctions PartagesLeon 4 : La SurchargeLeon 5 : L'HritageLeon 6 : La RdfinitionLeon 7 : Le Polymorphisme d'hritageLeon 8 : Constructeurs et DestructeursLeon 9 : Les PropritsLeon 10 : Une petite applicationTlchargements

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    3/23

    Remerciements

    Ce tutoriel est une traduction provenant d'un article du siteCodeProject.

    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 originalici.

    Merci khanyet neo.51pour leurs corrections et leurs conseils.

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/http://www.logicmatrixonline.com/anoop/profile.asphttp://www.logicmatrixonline.com/anoop/profile.asphttp://www.codeproject.com/vb/net/OOPS_In_VBNET.asphttp://www.developpez.net/forums/profile.php?mode=viewprofile&u=8764http://www.developpez.net/forums/profile.php?mode=viewprofile&u=926http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=926http://www.developpez.net/forums/profile.php?mode=viewprofile&u=8764http://www.codeproject.com/vb/net/OOPS_In_VBNET.asphttp://www.logicmatrixonline.com/anoop/profile.asphttp://www.codeproject.com/
  • 8/11/2019 POO_VB_NET

    4/23

    Introduction

    Cet article traite des fonctionnalits basiques de la POO en VB.Net. En effet, une des volutions notables deVB.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 MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    5/23

    Mode d'emploi du code

    Pour chaque leon, le code source est disponible sous forme d'un simple fichier .vb (sans projet associ) : vousaurez 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 MadusudananXavier 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 parquelque 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

    http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=frhttp://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=fr
  • 8/11/2019 POO_VB_NET

    6/23

    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 unespace de noms (ou NameSpace). Vous pouvez utiliser les classes appartenant un espace de noms simplementen 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 diversespaces 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 detous 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 ClassEnd Namespace

    Objet

    Un objet est une instance de classe. Par exemple, Jimmy est un objet de type Chien. Pour illustrer ceci, nousallons crer un objet dans la section suivante.

    Module

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    7/23

    Il est possible d'utiliser des modules pour crire des fonctions ou procdures publiques : Un Module est donc ungroupe de fonctions. la diffrence d'une fonction appartenant une classe, une fonction publique d'un modulepeut tre appele tout endroit du code. VB implmente les fonctions (Function) et les procdures (Sub). La seulediffrence entre une fonction et une procdure est que contrairement une fonction, une procdure ne retournepas 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 JimmyJimmy.Aboie()

    End Function

    End module

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    8/23

    Leon 2 : Portes de vos dclarations

    Les principales portes sont Public, Private, Friend et Protected. Une classe peut contenir des attributs ou desmthodes, 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 seraabord 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 publicPublic 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 FunctionEnd ClassEnd Namespace

    Passons maintenant notre module :

    Public Module modMain

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    9/23

    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.ChienJimmy = New Animaux.Chien()

    'Ce qui suit fonctionnera, car Aboie et AgeDuChien sont PublicJimmy.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 FunctionEnd 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 tantque Private. Ce sont les procdures Property qui sont utilise pour accder ces donnes. La protection desdonnes d'un objet en dehors du module de classe est appele Abstraction, ou bien encore Data Hiding. Cecisert prvenir des modifications "accidentelles" des donnes d'un objet via des fonctions externes au modulede classe.

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    10/23

    Leon 3 : Fonctions Partages

    Dans une classe, les membres partags (proprits et mthodes) peuvent tre appels directement, sans passerpar l'instanciation d'un objet (comme prcdement dcrit). Le mot-cl Shared indique en effet que la proprit oumthode ne s'appuie pas sur un objet spcifique mais bien sur la classe elle-mme, et qu'elle peut tre appeledirectement 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 denotre espace de noms, Animaux, et une classe lui appartenant, Chien :

    Imports System

    Namespace AnimauxClass 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 FunctionEnd ClassEnd 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 partageAnimaux.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.ChienJimmy = New Animaux.Chien()Jimmy.Marche()

    End sub

    End Module

    Rflchissons un instant! La procdure WriteLine() que nous utilisons depuis le dbut est une mthode partagede 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 MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    11/23

    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 MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    12/23

    Leon 4 : La Surcharge

    La surcharge est une technique simple utiliser, qui permet d'utiliser le mme nom de fonction avec desparamtres 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 SystemClass Addition

    Ensuite, ajoutons 2 fonctions Add(). La premire additionne 2 entiers ... (Convert.ToString est l'quivalent de lafonction CStr de VB6)

    Overloads Public Sub Add(A as Integer, B a s 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 a s 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 leurdclaration, pour justement spcifier la surcharge !

    Ici, voyons ce que a donne avec la procdure Main() suivante, incluse dans le module de classe Addition (et doncdclare en tant que partage, cf paragraphe prcdent) :

    Shared Sub Main()Dim monCalcul as Addition'Cre l'objetmonCalcul = New Addition

    'Appel de la premire fonction ...monCalcul.Add(10, 20)

    ' ... et appel de la seconde :monCalcul.Add("Bonjour", " comment allez-vous ?")

    End SubEnd Class

    Complments :

    Signature

    C'est ainsi que l'on appelle chaque squence distincte de paramtres, c'est--dire chaque manire de faireappel la mthode surcharge.

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    13/23

    Leon 5 : L'Hritage

    L'hritage est un mcanisme par lequel une classe drive (ou classe fille) hrite de toutes les caractristiques desa classe de base (ou classe mre). En bref, il est possible de crer via hritage vos classes partir d'une classeexistante : 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 DeveloppeurInherits 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 DeveloppeurTom = 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 DeveloppeurTom.PiqueDuCode()

    End SubEnd Class

    Complments :

    MustInherit

    Ce mot cl indique qu'une classe ne peut tre instancie, et qu'elle ne peut donc tre utilise que commeclasse de base. Par exemple, si vous dclarez la classe Humain en tant que "MustInherit Humain", alors vousne pourrez pas crer d'objets de type Humain partir de cette classe, mais seulement partir de classesdrives.

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    14/23

    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 drivene pourra lui tre cre.

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.

    http://xo.developpez.com/tutoriel/vb.net/poo/

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    15/23

    Leon 6 : La Rdfinition

    Par dfaut, une classe drive hrite des mthodes de sa classe de base. Mais si une proprit ou une mthodedoit 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 IndienInherits 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 mthodeParle() 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 humainDim Tom as HumainTom = New Humain

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    16/23

    'Tony est humain, et plus prcisement IndienDim Tony as IndienTony = New Indien

    'Voici un appel la mthode Parle() de la classe Humain :Tom.Parle()

    'Et un appel de la mthode Parle() de la classe IndienTony.Parle()

    End SubEnd 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 devraredfinir cette mthode.

    NotOverridable

    A l'inverse, ce mot-cl indique que cette procdure ne peut tre redfinie dans une classe fille. Par exemple, sidans la classe Humain, vous dclarez la mthode Parle en tant que "NotOverridable Parle", aucune classe fillene pourra redfinir cette mthode.

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    17/23

    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 avezune classe de base nomme Humain, un objet de type Humain peut tre utilis pour contenir un objet de n'importelaquelle de ses classes drives. Quand vous appelez une mthode partir de votre objet, le systme dtermineraautomatiquement 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 classefille et redfinissons-y la mthode Parle(). Puis crez un objet de la classe fille et affectez-lui la variable de laclasse mre : maintenant, si vous faites appel la mthode Parle() partir de cette variable, ce sera celle dfiniedans 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 laclasse 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 laclasse 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 IndienInherits 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 MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    18/23

    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 SubEnd Class

    Sur le dernier appel (Tom.Parle()), quelle procdure va tre excute ? Celle de la classe Indien, ou bien celle dela classe Humain ?

    Cette question est pertinente, car Tom a t dclar en tant qu'Humain, mais un objet de type Indien lui a taffect.

    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 del'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 MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    19/23

    Leon 8 : Constructeurs et Destructeurs

    Un constructeur (Constructor) est une procdure spciale qui est automatiquement excute quand un objet estcr. Une telle procdure se nomme New(). Comme indiqu dans la leon 4, les constructeurs peuvent faire l'objetde 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 del'objet. Une telle procdure se nomme Finalize(). En VB6, ces procdures taient dj disponibles, elles senommaient Class_Initialize() et Class_Terminate().

    Dmarrons l'tude d'un exemple, avec la classe Chien :

    Imports System

    Class Chien'La variable agePrivate 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 n1Jimmy = New Chien

    'Et ceci le contructeur n2Jacky = New Chien (10)

    End Sub

    End Class

    La destruction intervient automatiquement en fin de porte ou de programme, grce au Garbage Collector. Il estpossible de faire le mnage vous-mme en dtruisant vos objets.

    Ex :

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    20/23

    Jimmy = Nothing

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    21/23

    Leon 9 : Les Proprits

    Pour grer les donnes de vos objets, vous avez le choix entre des champs ou des proprits. Mais alors que leschamps sont de simples variables publiques, les proprits utilisent des procdures pour encadrer la lecture et lamise 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 ChienJimmy = 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 SubEnd Class

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    22/23

    Leon 10 : Une petite application

    Passons maintenant l'tude d'un programme basique. Importons tout d'abord les espaces de noms requis :

    Imports SystemImports System.ComponentModelImports System.Windows.FormsImports 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 MainClassShared Sub Main()

    'Crons un objet partir de cette classe SimpleForm :Dim sf as SimpleFormsf = New SimpleForm

    'Et passons cet objet en argument la procdure Run() pour dmarrer :System.Windows.Forms.Application.Run(sf)

    End SubEnd Class

    Nous avons fait le tour...

    Maintenant, vous tes apte lire et apprhender la plupart des sources VB.Net relatives la POO, et certainementcapable de faire un bon usage des mcanismes de la POO dans vos propres programmes.

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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

    http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033
  • 8/11/2019 POO_VB_NET

    23/23

    Tlchargements

    Les sources :OOPS_In_VBNET_src.zip (FTP)ouOOPS_In_VBNET_src.zip (HTTP)

    Le tutoriel au format PDF (23 pages, 80 Ko) :POO_VB_NET.pdf (FTP)ouPOO_VB_NET.pdf (HTTP)

    Introduction la Programmation Oriente Objet en VB.NET par Anoop MadusudananXavier 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 parquelque 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.comwww.cours-ofppt.com

    ftp://xo.ftp-developpez.com/xo/tutoriel/vb.net/poo/OOPS_In_VBNET_src.ziphttp://xo.developpez.com/tutoriel/vb.net/poo/OOPS_In_VBNET_src.zipftp://xo.ftp-developpez.com/xo/tutoriel/vb.net/poo/POO_VB_NET.pdfhttp://xo.developpez.com/tutoriel/vb.net/poo/POO_VB_NET.pdfhttp://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://xo.developpez.com/tutoriel/vb.net/poo/http://xo.developpez.com/tutoriel/vb.net/poo/http://www.developpez.net/forums/profile.php?mode=viewprofile&u=61980http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=1117033http://xo.developpez.com/tutoriel/vb.net/poo/POO_VB_NET.pdfftp://xo.ftp-developpez.com/xo/tutoriel/vb.net/poo/POO_VB_NET.pdfhttp://xo.developpez.com/tutoriel/vb.net/poo/OOPS_In_VBNET_src.zipftp://xo.ftp-developpez.com/xo/tutoriel/vb.net/poo/OOPS_In_VBNET_src.zip