Академический Документы
Профессиональный Документы
Культура Документы
TP N00 Objectifs :
Notion de classe d'objet Dfinition d'une nouvelle classe d'objet en VB.Net Encapsulation des proprits et des mthodes de cet objet. Instanciation de l'objet. Dclaration et protection des proprits (donnes membres). Fonctions accesseurs, de type Get et Set : Lecture et Modification des proprits. Constructeurs et destructeur des objets Surcharge de constructeurs Proprits et mthodes de classe
Rappel :
Crer une classe consiste en la dfinition dun nouveau type de donnes. Il sagit de modliser de la manire la plus juste un objet, partir des possibilits offertes par un langage de programmation. Il faut donc numrer toutes les proprits de cet objet et toutes les fonctions qui vont permettre de dfinir son comportement. Ces dernires peuvent tre classes de la faon suivante : proprits : Les proprits de l'objet seront implantes sous la forme de donnes membres de la classe. mthodes : Les diffrentes fonctions ou mthodes seront implmentes sous la forme de fonctions membres de la classe. Lencapsulation nautorise pas laccs aux lments internes lobjet qui peuvent constituer une grande complexit mais quaux lments exposs au travers de son interface. Lencapsulation permet ainsi de protger lintgrit de lobjet et de nous masquer toute la complexit des calculs effectus en interne. Pour qu'un objet ait une existence, il faut qu'il soit instanci. Une mme classe peut tre instancie plusieurs fois, chaque instance ayant des proprits porteuses de valeurs spcifiques. Il n'existe qu'une seule manire de crer une instance d'une classe. Cette cration d'instance peut se faire en deux temps : Dclaration d'une variable du type de la classe de l'objet, Instanciation de cette variable par l'instruction New.
Dim var As ClassA var = New ClassA
La dclaration d'une variable var de classe ClassA n'est pas suffisante. En effet, lors de sa dclaration var ne contient pas une donne de type ClassA. Par dfaut, la valeur de cette rfrence est null, mot cl Nothing en Vb signifiant que la variable n'est pas rfrence. La rfrence d'un objet doit tre affecte cette variable. Cette rfrence est ralise par l'instruction New au moment de l'instanciation. Ces deux tapes peuvent tre rduites une seule instruction en instanciant lobjet dans le mme temps que sa dclaration :
Dim var As New ClassA
Afin dimplanter correctement le concept d'encapsulation, il convient de verrouiller l'accs aux proprits et de les dclarer private ou protected tout en permettant leur accs via les mthodes de type Accesseur en dclarant ces dernires public
Public Class Stagiaire Private _num As Integer Private _nom As String Private _note As Double End Class
Si les proprits sont verrouilles, on ne peut plus y avoir accs de l'extrieur de la classe. Il faut donc crer des mthodes ddies l'accs aux proprits pour chacune d'elles. Ces mthodes doivent permettre un accs dans les deux sens (Lecture/Ecriture). Accs pour lecture : pour connatre la valeur de la proprit. Ces mthodes sont appeles mthodes type Get . Accs pour modification : pour modifier la valeur d'une proprit. Ces mthodes sont appeles mthodes type Set . Il est prfrable de dfinir les accs aux attributs d'une classe par des proprits Property qui regroupe les mthodes Get et Set.
Public Property Nom() As String Get Return _nom End Get Set(ByVal value As String) _nom = value End Set End Property
On peut restreindre lutilisation des proprits la lecture ou lcriture en utilisant les mots cls ReadOnly ou WriteOnly (plus rare).
Public ReadOnly Property Numero() As Integer Get Return _num End Get End Property
Constructeurs Quand une instance d'une classe d'objet est cre au moment de l'instanciation d'une variable avec new, une fonction particulire est excute. Cette fonction s'appelle le constructeur. Elle permet, entre autres choses, d'initialiser chaque instance pour que ses proprits aient un contenu cohrent Un constructeur est dclar comme les autres fonctions membres deux diffrences prs : Le nom de l'identificateur du constructeur est New. Un constructeur ne renvoie pas de rsultat. On utilisera donc des mthodes de type Sub pour les constructeurs Il peut y avoir plusieurs constructeurs pour une mme classe, chacun d'eux correspondant une initialisation particulire. Tous les constructeurs ont le mme nom mais se distinguent par le nombre et/ou le type des paramtres passs. 1. Constructeur d'initialisation : Ce constructeur permet de procder une instanciation en initialisant les proprits, la valeur de celles-ci tant passe dans les paramtres ou dfinie sous forme de constante dans la classe. Il peut exister plusieurs constructeurs dinitialisation avec plus ou moins darguments :
Public Sub New(ByVal nomStg As String, ByVal noteStg As Double) Me.Nom = nomStg Me.Note = noteStg End Sub
3. Constructeur de recopie : Le constructeur de recopie permet de recopier les proprits d'un objet existant vers une nouvelle instance de mme type.
Public Sub New(ByVal unStagiaire As Stagiaire) Me.Numero = unStagiaire.Numero Me.Nom = unStagiaire.Nom Me.Note = unStagiaire.Note End Sub
On peut utiliser ce constructeur pour crer une copie du stagiaire Alami karim dj cre dans lexemple prcdant.
Dim stg2 As New Stagiaire(stg) stg2 est un objet diffrent de stg mais les proprits des deux objets ont les mmes valeurs.
Proprits de classe Jusqu' prsent, les proprits dclares taient des proprits d'instance. C'est dire que les proprits de chaque objet, instanci partir de la mme classe, peuvent avoir des valeurs diffrentes ( numero, nom, etc ). Supposons maintenant, que dans la classe Stagiaire, il soit ncessaire de disposer d'un compteur d'instance, dont la valeur serait le nombre d'instances en cours un instant donn. En VB.NET il est possible de crer des proprits de classe. Leur valeur est la mme pour toutes les instances d'une mme classe. Pour dclarer une telle proprit, on utilise le mot-cl Shared.
Private Shared _compteur As Integer = 0
La proprit de classe compteur, initialise 0 lors de sa dclaration, sera incrmente de 1 dans tous les constructeurs dvelopps pour la classe Client. Sa valeur sera le nombre d'instances valides un instant donn.
Public Sub New() _compteur = _compteur + 1 Me._num = _compteur End Sub Public Sub New(ByVal nomStg As String, ByVal noteStg As Double) _compteur = _compteur + 1 Me._num = _compteur Me.Nom = nomStg Me.Note = nomStg End Sub Public Sub New(ByVal unStagiaire As Stagiaire) _compteur = _compteur + 1 Me._num = _compteur Me.Nom = unStagiaire.Nom Me.Note = unStagiaire.Note End Sub
Mthodes de classe Comme pour les autres proprits dclares private, il est ncessaire de crer les mthodes d'accs associes. Pour ce compteur, seule la mthode Get est ncessaire. Une mthode de classe est dclare avec le mot-cl Shared. Pour la mthode Get d'accs au compteur d'instances on dclarerait :
ou
Public Shared ReadOnly Property Compteur() As Integer Get Return _compteur End Get End Property
Exemple excution:
Programmation Oriente Objet : TP 00 Exercice 0_1 Exemple : soit la classe Article: Article -_ID : Integer (Numero Auto) -_Libelle : String -_PU : Double +Property ID +Property Libelle +Property PU +Property PUTTC +Sub new() +Sub new(unLibelle,unPu) +Sub new(unArticle :Article) +function Remise():Double
1. Crer la classe article avec tous ces membres : a. ID : le numro de larticle cre b. PUTTC = PU + PU x 20% c. Remise = 0% si PU 500 Remise = 1% si 500 < PU 1000 Remise = 2% si PU > 1000 2. Crer un module de teste pour crer 3 articles et afficher leurs donnes.