Vous êtes sur la page 1sur 25

Cours POO

VB.Net

Formateur : Driouch Bouazza


Etablissement : OFPPT/CFMOTI
25/04/2010
V1.1
http://www.driouchb.0fees.net/

DRIOUCH B.

Plan











Notion d
dObjet Classe - Instanciation
Encapsulation (Propri
(Proprit et M
Mthodes d
dacc
accs)
Constructeurs (Constructeur de copie)
Destructeur(Garbage
Destructeur(Garbage Collector)
Collector)
Hritage (Surcharge M
Mthode Red
Redfinition)
Polymorphisme
Les Exceptions
Les Objets Courants(en .Net)
Objet de collection
Les Interfaces
La persistance (S
(Srialisation binaire et XML)

DRIOUCH B.

Notion dobjet


Un objet est une entit


entit coh
cohrente
rassemblant des donn
donnes et du code
travaillant sur ces donn
donnes.

DRIOUCH B.

Classe


Une classe est une description abstraite


dun objet. Elle peut tre consid
considre en
quelque sorte comme un moule
moule
Vhicule
+Marque : string(idl)
+Puissance fiscale : int
+Vitesse maximale : int
+Vitesse courante : int
+Creer un vhicule()
+Dtruire un vhicule()
+Dmarrer()
+Acclrer(entre Taux : int)

DRIOUCH B.

Nom de la classe
Description des attributs
ou donnes membres
Description des mthodes
= code associ
4

Instanciation


Chaque objet correspond une


instance de la classe laquelle il fait
rfrence.
Vhicule
+Marque : string(idl)
+Puissance fiscale : int
+Vitesse maximale : int
+Vitesse courante : int
+Creer un vhicule()
+Dtruire un vhicule()
+Dmarrer()
+Acclrer(entre Taux : int)

Marque = Peugeot
Puissance = 7
Vitesse maximale = 197
Vitesse courante = 98
Marque = Renault
Puissance = 5
Vitesse maximale = 176
Vitesse courante = 65

DRIOUCH B.

Instanciation
 La cr
cration d
dun objet est constitu
constitue de deux
phases :


Une phase du ressort de la classe : allouer de la


mmoire et un contexte d
dex
excution minimaliste.
Mthode de classe
Une phase du ressort de l
lobjet : initialiser ses
attributs d
dinstance. M
Mthode d
dinstance

 Dans les langages tels que Java, C++, VB ou


C#, ces deux phases ne sont pas diff
diffrenci
rencies.
 Appel une m
mthode sp
spciale : le constructeur
DRIOUCH B.

Encapsulation
 Abstraction de donn
donnes :

La structure d
dun objet n
nest pas visible de l
lext
extrieur.
Seule son interface est accessible par le biais de
messages invocables par le client.

 Abstraction proc
procdurale :

Linvocation d
dun message est une op
opration atomique.
Aucun lment d
dinformation sur les traitements internes
mis en uvre n
nest n
ncessaire.

 Donc pour chaque objet cr


crer en peut limiter
les acc
accs ou les contrler selon nos besoin
pour cet objet.





Int
Intrieur de l
lobjet prot
protg
Complexit
Complexit dissimul
dissimul
Maintenance simplifi
simplifi (centralisation)
Echanges avec l
lexterne sont codifi
codifis

DRIOUCH B.

Proprits
Les propri
proprits d'un objet sont d
dclar
clares, comme des variables,
l'int
l'intrieur du bloc contrl
contrl par le mot cl
cl class.
class.
Public Class NomDeLaClasse
Public
NomDeLaPropriete As TypeDeLaPropriet
TypeDeLaPropriet
' D
Dclaration des m
mthodes de l'objet
End Class


Les propri
proprits peuvent tre d
dclar
clares tout moment l'int
l'intrieur
du corps de la classe.

Chaque d
dclaration de propri
proprit est construite sur le mod
modle
suivant :
Public NomDeLaPropriete As TypeDeLaPropriet
TypeDeLaPropriet


Une propri
proprit peut tre initialis
initialise lors de sa d
dclaration :
Public NomDeLaPropriete As TypeDeLaPropriet
TypeDeLaPropriet=valeurInitiale

Les identifiants de propri
proprit par convention commencent par une
majuscule.


DRIOUCH B.

Mthodes daccs
En Programmation Orient
Oriente Objet, on vite d'acc
d'accder directement
aux propri
proprits par l'op
l'oprateur . . En effet, cette possibilit
possibilit ne
correspond pas au concept d'encapsulation. Certains langages
l'interdisent carr
carrment.
Afin d
dimplanter correctement le concept d'encapsulation, il
convient de verrouiller l'acc
l'accs aux propri
proprits et de les d
dclarer
private
L Acc
Accs aux attributs membres peut se faire par des m
mthodes
simple ou par les Property de classe
Public Property nomClient()
nomClient() as type
Get
Return iNomClient
End Get
Set(ByVal Value as type)
iNomClient = Value
End Set
End Property
DRIOUCH B.

Constructeur
Quand une instance d'une classe d'objet est cr
e au
cre
moment de l'instanciation d'une variable avec new,
new, une
fonction particuli
particulire est ex
excut
cute. Cette fonction s'appelle le
constructeur.
constructeur. Elle permet, entre autres, d'initialiser chaque
instance pour que ses propri
proprits aient un contenu coh
cohrent.
Public Sub New(ByVal numero As Integer, ByVal nom As
String)
Me.IDClient = numero
Me.NomClient = nom
End Sub
Cela va permettre d'instancier la classe Client de la fa
faon
suivante :
Dim cli As Client = New Client(12, "Sharraf
")
"Sharraf")
DRIOUCH B.

10

Constructeur de recopie
Le constructeur de recopie permet de recopier les
propri
proprits d'un objet existant vers une nouvelle
instance de mme type.
Public Sub New(ByVal
New(ByVal unClient As Client)
Me.IDClient = unClient.IDClient
Me.NomClient = unClient.NomClient
Me.CaClient = unClient.CaClient
End Sub
Dim oClient1 as new Client()
Dim oClient As Client = New Client(oClient1)
DRIOUCH B.

11

Exemple
Public Class Vehicule
Private Marque As String
Private Puissance As Integer
Private VitesseMax As Integer
Private VitesseCour As Integer
' Constructeur par defaut
Public Sub New()
Marque = "Marque
"Marque inconu"
inconu"
Puissance = 0
VitesseMax = 0
VitesseCour = 0
End Sub
'Constructeur d'initialisation
Public Sub New(ByVal M As String, ByVal P As Integer, ByVal VM As Integer)
Marque = M
Puissance = P
VitesseMax = VM
VitesseCour = 0
End Sub
'Constructeur de Copie
Public Sub New(ByVal
New(ByVal Vh As Vehicule)
Vehicule)
Marque = Vh.PMarque
Puissance = Vh.PPuissanceF
VitesseMax = Vh.PVitesseM
VitesseCour = Vh.PVitesseC
End Sub
DRIOUCH B.

12

Exemple
Public Property PMarque()
PMarque() As String
Get
Return Marque
End Get
Set(ByVal value As String)
Marque = value
End Set
End Property
Public Property PPuissanceF()
PPuissanceF() As Integer
Get
Return Me.Puissance
End Get
Set(ByVal value As Integer)
Me.Puissance = value
End Set
End Property
Public Property PVitesseM()
PVitesseM() As Integer
Get
Return Me.VitesseMax
End Get
Set(ByVal value As Integer)
Me.VitesseMax = value
End Set
End Property
DRIOUCH B.

13

Exemple
Public ReadOnly Property PVitesseC()
PVitesseC() As Integer
Get
Return Me.VitesseCour
End Get
End Property
Public Sub accelerer(
accelerer(ByVal taux As Integer)
Integer)
VitesseCour += taux
If VitesseCour > VitesseMax Then
VitesseCour = VitesseMax
End If
End Sub
Public Overrides Function ToString()
ToString() As String 'ToString
'ToString red
redfinie a partire
de la classe de base Objet
Return Me.Id & ": " & Me.PMarque & "( -P:" & Me.PPuissanceF & " -VM:"
& Me.PVitesseM & " -VC:" & Me.PVitesseC & ")"
End Function
End Class

DRIOUCH B.

14

Programme principale
Sub main()
Dim Rn As new vehicule()
vehicule()
Console.Writeline(
Console.Writeline(Rn.ToString())
Rn.ToString())
Dim Pg As new vehicule(
vehicule( Peugeot ,7,187)
Console.Writeline(
Console.Writeline(Pg.ToString())
Pg.ToString())
Pg.Accelerer(60)
Pg.Accelerer(60)
Console.Writeline(
Console.Writeline(Pg.ToString())
Pg.ToString())
Pg.Accelerer(80)
Pg.Accelerer(80)
Pg.Accelerer(60)
Pg.Accelerer(60)
Console.Writeline(
Console.Writeline(Pg.ToString())
Pg.ToString())
Console.ReadLine()
Console.ReadLine()
End Sub
DRIOUCH B.

15

Destructeur
En VB.NET on ne d
dclenche pas explicitement la destruction d'un objet. Les
instances seront d
dtruites par le syst
systme lorsqu'elles ne sont plus r
rfrenc
rences et
qu
quil sera n
ncessaire de r
rcup
cuprer des ressources m
mmoire. Le programme qui se
charge de cette tche s'appelle le Garbage Collector ou, en fran
franais, le
ramasseramasse-miettes.
miettes.

Les destructeurs ne peuvent pas tre d
dfinis dans des struct.
struct. Ils sont utilis
utiliss
uniquement avec les classes.

Une classe peut poss
possder un seul destructeur.

Les destructeurs ne peuvent pas tre h
hrit
rits ou surcharg
surchargs.

Les destructeurs ne peuvent pas tre appel
appels. Ils sont appel
appels
automatiquement.

Un destructeur n'accepte pas de modificateurs ni de param
paramtres.
Finalize()
Finalize().. Cette m
mthode s'appelle destructeur.
destructeur.
Protected Overrides Sub finalize()
lib
libration des ressources
End Sub
Dans le programme principale on peut forc
forc le Garbage Collector par la
proc
procdure: GC.Collect()
GC.Collect()
DRIOUCH B.

16

Proprits et Mthodes partag


Public class test
Public Shared Attribut As Type
Public Shared Sub NomMeth()

End Function
End Class
Lutilisation de lattribut ou la mthode se fait via la classe directement.
Test.NomMeth Ou test.Attribut
Exp :
Private Shared iCompteur As Integer
Public Sub new()
iCompteur += 1
End Sub
Protected Overrides Sub finalize()
iCompteur -= 1
End Sub
DRIOUCH B.

17

Les oprateurs daccessibilit


Mot cl

Dfinition

Public

Accessible partout

Private
Friend

Accs dans la classe uniquement


Accs Classe - Espace de nom
Assemblage

Protected

Accs classe et classes drives

DRIOUCH B.

18

Hritage
Le concept d'h
d'hritage est l'un des trois principaux fondements de
la Programmation Orient
Oriente Objet, le premier tant l'encapsulation vu
pr
prcdemment et le dernier tant le polymorphisme qui sera abord
abord
plus loin dans ce document
L'h
L'hritage consiste en la cr
cration d'une nouvelle classe dite classe
driv
rive partir d'une classe existante dite classe de base ou
classe parente.
parente.
L'h
L'hritage permet de :
Rcup
cuprer le comportement standard d'une classe d'objet (classe
parente) partir des propri
proprits et des m
mthodes d
dfinies dans
cellescelles-ci.
 Ajouter
des fonctionnalit
fonctionnalits suppl
supplmentaires en cr
crant de
nouvelles propri
proprits et m
mthodes dans la classe d
driv
rive.
 Modifier le comportement standard d'une classe d'objet (classe
parente) en surchargeant certaines m
mthodes de la classe parente
dans la classe d
driv
rive.


DRIOUCH B.

19

Reprsentation
C la s s e A
C la s s e B
C la s s e D
C la s s e E

C la s s e C

Le
diagramme
cici-dessus
constitue la repr
reprsentation
graphique de la hi
hirarchie de
classes construite partir de
ClasseA.
ClasseA.

Dans le cadre de la
conception orient
oriente objet,
la m
mthode UML ( United
Modeling
Language
)
propose
une
autre
repr
reprsentation graphique
d'une telle hi
hirarchie :
DRIOUCH B.

ClasseA

ClasseB

ClasseE

ClasseC

ClasseD
20

10

Exemple

Public Class Client


Protected NomClient As String
Protected CAClient As Single
Public Sub New()
End Sub
Public Sub New(ByVal nom As String, ByVal ca As Single)
Me.NomClient = nom
Me.CAClient = ca
End Sub
Public Property Nom() As String
Get
Return Me.NomClient
End Get
Set(ByVal value As String)
Me.NomClient = value
End Set
End Property
Public WriteOnly Property CA() As Single
Set(ByVal value As Single)
Me.CAClient = value
End Set
End Property
Public Overridable Function finance() As Single
Return Me.CAClient
End Function
Public Overrides Function ToString()
ToString() As String
Return "Id: " & Me.Id & " Nom: " & Me.Nom & " CA : " & Me.finance()
Me.finance()
End Function
End Class
DRIOUCH B.

21

Exemple
Public Class Grossiste
Inherits client
Private TxRemiseClient As Single
Public Sub New()
MyBase.New()
MyBase.New()
End Sub
Public Sub New(ByVal nom As String, ByVal ca As Single, ByVal rm As Single)
MyBase.New(nom,
MyBase.New(nom, ca)
ca)
Me.TxRemise = rm
End Sub
Public Property TxRemise()
TxRemise() As Single
Get
Return Me.TxRemiseClient
End Get
Set(ByVal value As Single)
Me.TxRemiseClient = value
End Set
End Property
Public Function calrm()
calrm() As Single
Return Me.CAClient * Me.TxRemise
End Function
Public Overrides Function finance() As Single
Return Me.CAClient * (1 - Me.TxRemise)
Me.TxRemise)
End Function
End Class
DRIOUCH B.

22

11

Surcharge des mthodes


Overloads Public Sub Add(A
Add(A as Integer,
Integer, B as Integer)
Integer)
Console.Writeline ("Adding
("Adding Integers:
Integers: " + Convert.ToString(a
Convert.ToString(a + b))
End Sub
Overloads Public Sub Add(A
Add(A as String, B as String)
Console.Writeline ("Adding
("Adding Strings: " + a + b)
End Sub

Le mot cl
cl Overrides indique une surcharge avec la mme
signature ou bien une red
redfinition dans l
lhritage.
Le mot cl
cl Overloads est utilis
utilis pour pr
prciser une
surcharge avec une signature diff
diffrente : le nombre ou le type
des param
paramtres de la m
mthode diff
diffrent.

DRIOUCH B.

23

Exemple
' m
mthode que l'on peut red
redfinir
Public Overridable Function Finance() As String
' m
mthode cr
cre pour exemple de red
redfinition
' renvoie le CA pour un Client
' renvoie le CA + le taux de remise pour un Grossiste
Return "Le CA est : " + Me.caClient
End Function
Public Class Grossiste Inherits Client
Private TxRemise As Double
' le taux de remise appliqu
appliqu au CA du client permet de calculer la remise
Public Function GetTauxRemise()
GetTauxRemise() As Double
Return TxRemise
End Function
Public Function CalculRemise()
CalculRemise() As Double ' calcul de la remise
Return TxRemise * Me.GetCAClient
End Function
Public Overrides Function Finance() As Single
Return MyBase.ca * (1(1-Me.txRemise)
End Function
End Class
DRIOUCH B.

24

12

Rutilisation des mthodes


' constructeur par d
dfaut
Public Sub New()
MyBase.New()'
MyBase.New()' appel constructeur par d
dfaut de la classe de base
End Sub
' constructeur d'initialisation le CA est augment
augment par la m
mthode AugmenterCA
Public Sub New(ByVal numero As Integer, ByVal nom As String, ByVal txRemise As Double)
MyBase.New(numero,
MyBase.New(numero, nom)
Me.txRemise = txRemise
End Sub
Mthode Finalize:
Finalize: le destructeur vu pr
prcdemment.
Mthode ToString:
ToString:
Pour la classe fraction
Public Overrides Function ToString()
ToString() As String
return numerateur + "/" + denominateur
End Function
Mthode Equals:
Equals:
Public Overloads Function Equals(ByVal fr As Fraction) As Boolean
Dim c1, c2 As Long
c1 = Me.numerateur * (fr.denominateur
(fr.denominateur))
c2 = Me.denominateur * (fr.numerateur
(fr.numerateur))
If c1 = c2 Then
Return True
Else
Return False
End If
End Function
DRIOUCH B.

25

Complment hritage(Modificateur)


MustInherit : Ce mot cl
cl indique qu'une classe ne
peut tre instancier, et qu'elle ne peut donc tre
utilis
utilise que comme classe de base, une classe
abstret.
abstret.
NotInheritable : A l'inverse, ce motmot-cl
cl indique que
cette classe ne peut pas tre h
hrit
rite, et peut etres
instancier, c'estc'est--dire servir de classe de base.
Overridable : ce motmot-cl
cl indique que cette m
mthode
peut tre red
redfinie dans une classe d
driv
riv.
MustOverride : Ce mot cl
cl indique qu'une m
mthode
doit tre red
redfinie pour chaque classe d
driv
riv.
NotOverridable : A l'inverse, ce motmot-cl
cl indique que
cette m
mthode ne peut tre red
redfinie dans une classe
driv
riv.
Shadows : Sp
Spcifie qu'un lment de classe d
dclar
clar
red
redclare et masque un lment de classe de base de
mme nom.

DRIOUCH B.

26

13

Polymorphisme
Le polymorphisme est un m
mcanisme via lequel un objet
peut prendre plus d'une forme. Par exemple, si vous avez une
classe de base nomm
nomme Client, une r
rfrence de type Client
peut tre utilis
utilis pour contenir un objet de n'importe laquelle
de ses classes d
driv
rives. Quand vous appelez une m
mthode
partir
de
votre
objet,
le
syst
d
systme
dterminera
automatiquement le type de l'objet afin d'appeler la m
mthode
appropri
approprie.
Dim x As Client
Dim cl As New Client("Ali", 1000)
Dim clg As New Grossiste("Ahmed", 7000, 0.2)
x = cl
Console.WriteLine(x.ToString)
x = clg
Console.WriteLine(x.ToString)
DRIOUCH B.

27

Les Interfaces (Implements)


Une interface est une collection de prototypes repr
reprsentant les membres (propri
(proprits,
proc
procdures et vnements) que l'interface encapsule. Les interfaces contiennent
uniquement les dclarations des membres, les classes et les structures impl
implmentent
ces membres
Exp:
Exp:
Interface TestInterface
Property Prop1() As Integer
Sub Method1(ByVal X As Integer)
End Interface
Class ImplementationClass
Implements TestInterface
Private pval As Integer
Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1
TestInterface.Method1
MsgBox("The X parameter for Method1 is " & X)
End Sub
Public Property Prop1() As Integer Implements TestInterface.Prop1
TestInterface.Prop1
Get
Return pval
End Get
Set(ByVal value As Integer)
pval = value
End Set
End Property
End Class

DRIOUCH B.

28

14

Les Exceptions(Gestion Erreur)


Il y a plusieurs types d'erreurs :
Les erreurs de syntaxe : Elle surviennent en mode conception quand on tape le code.
Exp: A+1=B Erreur daffectation
2 For... et un seul Next
Les erreurs de logique : quand la conception du programme (logiciel) qui est incorrect, des
donnes justes nous donnes des rsultats faut. Donc il faut revoir la conception.
Les erreurs d'excution : Elle surviennent en mode Run ou lors de l'utilisation de l'excutable,
une instruction ne peut pas tre effectue. Le logiciel s'arrte brutalement, c'est trs gnant!!
Pour l'utilisateur c'est un 'BUG
division par zro
dim a(3) as string ;  a(5)= A
Soit une erreur de l'utilisateur, Il faut toujours vrifier ce que fait l'utilisateur et prvoir
toutes les possibilits.
Exp: On lui demande de taper un chiffre, il tape une lettre ou rien puis valide
Pour viter ces derniers il faut capt lerreur avec Try Catch finally
Syntaxe :
Dim X as integer = 0
try
dim y as double= 100/x
catch e as ArithmeticException
Console.WriteLine("ArithmeticException Handler: {0}", e.ToString()); }
catch (Exception e) { Console.WriteLine("Generic Exception Handler: {0}", e.ToString()); }
finally { Console.WriteLine("
Executing finally block."); }
Console.WriteLine("Executing
DRIOUCH B.

29

Les Exceptions


Cette classe est la classe de base pour toutes les


exceptions. Lorsqu'une erreur se produit, le
syst
systme ou l'application en cours d'ex
d'excution la
signale en levant une exception qui contient des
informations sur l'erreur. Une fois lev
leve, une
exception est g
gre par l'application ou par le
gestionnaire d'exceptions par d
dfaut.
Exp:
Exp:

ArithmeticException
DivideByZeroException
NotFiniteNumberException
OverflowException

DRIOUCH B.

30

15

Exceptions (Exemple)
Public Class Personne
Private _Nom As String
Private _Age As Integer
Public Property Nom() As String
Get
Return _Nom
End Get
Set(ByVal value As String)
_Nom = value
End Set
End Property
Public Property Age() As Integer
Get
Return _Age
End Get
Set(ByVal value As Integer)
If value < 0 Then
Throw New AgeException("Erreur : Age N
Ngatif")
Else
_Age = value
End If
End Set
End Property
Public Sub New(ByVal No As String, ByVal Ag As Integer)
Me.Nom = No
Me.Age = Ag
End Sub
Public Overrides Function ToString() As String
Return Me.Nom & " (Age :" & Me.Age.ToString & ")"
End Function
End Class

Public Class AgeException


Inherits Exception
Public Sub New()
MyBase.New()
End Sub
Public Sub New(ByVal msg As String)
MyBase.New(msg)
End Sub
Public Sub New(ByVal msg As String, ByVal Inner As
Exception)
MyBase.New(msg, Inner)
End Sub
End Class
Dim p As Personne
Try
p = New Personne("Ali", 0)
'p.Age = -5
p.Age = "A"
Catch ex As AgeException
Console.WriteLine(ex.Message)
Catch ex As Exception
Console.WriteLine("Error : " & ex.Message)
End Try
Console.ReadKey()

DRIOUCH B.

31

Objets String
Dim str as string
Avec a on a un objet str de type string et chaque objet a des mthodes et des attributs
Length : Taille dune chane en nombre de caractre.
Chars(i) : retourne le caractre la position i.
ToUpper : Mettre en majuscules une chane de caractre.
ToLower : transforme par contre la chane en minuscule.
Trim : Permet de supprimer des caractres en dbut et fin de chane.
Insert (n,str1) : Insre une chane dans une autre.
Remove(N,L) : Supprime la sous-chaine partir de la position N et de longueur L.
Replace (str1,str2) : Remplace partout dans une chane de dpart, une chane par une
autre.

IndexOf & LastIndexOf : Indique le numro du caractre, la position (la


premire occurrence) ou une chane chercher est trouve dans une
autre.
Substring(n,l) : Extrait une partie dune chane

Exp :
Dim str as string =
= Bonjour
Console.write(
Console.write(str.length)
str.length)  7
Console.write(
Console.write(str.replace(
str.replace( jour , soir ))  Bonsoir
DRIOUCH B.

32

16

Public ReadOnly Property Length As Integer

nombre de caractres de la chane

Public Default ReadOnly Property Chars(ByVal


index As Integer) As Char

proprit indexe par dfaut. [String].Chars(i) est le caractre n i de la


chane

Public Function EndsWith(ByVal value As String) As Boolean

rend vrai si la chane se termine par value

Public Function StartsWith(ByVal value As String) As Boolean

rend vrai si la chane commence par value

Overloads Public Function Equals(ByVal value As String) As


Boolean

rend vrai si la chane est gale value

Overloads Public Function IndexOf(ByVal value As String) As


Integer

rend la premire position dans la chane de la chane value la recherche


commence partir du caractre n 0

Overloads Public Function IndexOf(ByVal value As String,ByVal


startIndex As Integer) As Integer

rend la premire position dans la chane de la chane value la recherche


commence partir du caractre n startIndex

Overloads Public Shared Function Join(ByVal separator As


String,ByVal value() As String) As String

mthode de classe - rend une chane de caractres, rsultat de la


concatnation des valeurs du tableau value avec le sparateur separator

Overloads Public Function Replace(ByVal oldChar As


Char,ByVal newChar As Char) As String

rend une chane copie de la chane courante o le caractre oldChar a t


remplac par le caractre newChar

Overloads Public Function Split(ByVal ParamArray


separator() As Char) As String()

la chane est vue comme une suite de champs spars par les caractres
prsents dans le tableau separator. Le rsultat est le tableau de ces
champs

Overloads Public Function Substring(ByVal startIndex As


Integer,ByVal length As Integer) As String

sous-chane de la chane courante commenant la position startIndex et


ayant length caractres

Overloads Public Function ToLower() As String

rend la chane courante en minuscules

Overloads Public Function ToUpper() As String

rend la chane courante en majuscules

Overloads Public Function Trim() As String

rend la chane courante dbarrasse de ses espaces de dbut et fin

DRIOUCH B.

33

LObjet Regex
La classe Regex permet l'utilisation d'expression r
rguli
gulires.
CellesCelles-ci permettent de tester le format d'une cha
chane de
caract
caractres. Ainsi on peut v
vrifier qu'une cha
chane repr
reprsentant
une date est bien au format jj/mm/
aa.. On utilise pour cela un
jj/mm/aa
mod
modle et on compare la cha
chane ce mod
modle. Ainsi dans cet
exemple, j m et a doivent tre des chiffres. Le mod
modle d'un
format de date valide est alors "\
"\d\d/\
d/\d\d/\
d/\d\d" o
o le symbole
\d d
dsigne un chiffre.
' une expression r
rguli
gulire mod
modle
Dim mod
modle1 As String = "\
"\d\d/\
d/\d\d/\
d/\d\d"
Dim regex1 As New Regex(mod
le1)
Regex(mod
' comparer un exemplaire au mod
modle
Dim exemplaire1 As String = " 123 "
If regex1.IsMatch(exemplaire1) Then
affiche(("[" + exemplaire1 + "] correspond au mod
modle [" + mod
modle1 + "]"))
Else
affiche(("[" + exemplaire1 + "] ne correspond pas au mod
modle [" + mod
modle1 +
"]"))
End If
DRIOUCH B.

34

17

Caractre

Description

Marque le caractre suivant comme caractre spcial ou littral. Par exemple, "n" correspond au caractre "n". "\n" correspond un caractre
de nouvelle ligne. La squence "\\" correspond "\", tandis que "\(" correspond "(".

Correspond au dbut de la saisie.

Correspond la fin de la saisie

Correspond au caractre prcdent zro fois ou plusieurs fois. Ainsi, "zo*" correspond "z" ou "zoo".

Correspond au caractre prcdent une ou plusieurs fois. Ainsi, "zo+" correspond "zoo", mais pas "z".

Correspond au caractre prcdent zro ou une fois. Par exemple, "a?ve?" correspond "ve" dans "lever".

Correspond tout caractre unique, sauf le caractre de nouvelle ligne.

(modle)

Recherche le modle et mmorise la correspondance. La sous chane correspondante peut tre extraite de la collection Matches obtenue,
l'aide d'Item [0]...[n]. Pour trouver des correspondances avec des caractres entre parenthses ( ), utilisez "\(" ou "\)".

x|y

Correspond soit x soit y. Par exemple, "z|foot" correspond "z" ou "foot". "(z|f)oo" correspond "zoo" ou "foo".

{n}

n est un nom bre entier non ngatif. Correspond exactement n fois le caractre. Par exemple, "o{2}" ne correspond pas "o" dans "Bob,"
mais aux deux premiers "o" dans "fooooot".

{n,}

n est un entier non ngatif. Correspond au moins n fois le caractre. Par exemple, "o{2,}" ne correspond pas "o" dans "Bob", mais tous
les "o" dans "fooooot". "o{1,}" quivaut "o+" et "o{0,}" quivaut "o*".

{n,m}

m et n sont des entiers non ngatifs. Correspond au moins n et au plus m fois le caractre. Par exemple, "o{1,3}" correspond aux trois
premiers "o" dans "foooooot" et "o{0,1}" quivaut "o?".

[xyz]

Jeu de caractres. Correspond l'un des caractres indiqus. Par exemple, "[abc]" correspond "a" dans "plat".

[^xyz]

Jeu de caractres ngatif. Correspond tout caractre non indiqu. Par exemple, "[^abc]" correspond "p" dans "plat".

[a-z]

Plage de caractres. Correspond tout caractre dans la srie spcifie. Par exemple, "[a-z]" correspond tout caractre alphabtique
minuscule compris entre "a" et "z".

[^m-z]

Plage de caractres ngative. Correspond tout caractre ne se trouvant pas dans la srie spcifie. Par exemple, "[^mz]" correspond tout
caractre ne se trouvant pas entre "m" et "z".

\b

Correspond une limite reprsentant un mot, autrement dit, la position entre un mot et un espace. Par exemple, "er\b" correspond "er"
dans "lever", mais pas "er" dans "verbe".

DRIOUCH B.

35

\B

Correspond une limite ne reprsentant pas un mot. "en*t\B" correspond "ent" dans "bien entendu".

\d

Correspond un caractre reprsentant un chiffre. quivaut [0-9].

\D

Correspond un caractre ne reprsentant pas un chiffre. quivaut [^0-9].

\f

Correspond un caractre de saut de page.

\n

Correspond un caractre de nouvelle ligne

\r

Correspond un caractre de retour chariot.

\s

Correspond tout espace blanc, y compris l'espace, la tabulation, le saut de page, etc. quivaut "[ \f\n\r\t\v]".

\S

Correspond tout caractre d'espace non blanc. quivaut "[^ \f\n\r\t\v]".

\t

Correspond un caractre de tabulation

\v

Correspond un caractre de tabulation verticale.

\w

Correspond tout caractre reprsentant un mot et incluant un trait de soulignement. quivaut "[A-Za-z0-9_]".

\W

Correspond tout caractre ne reprsentant pas un mot. quivaut "[^A-Za-z0-9_]".

\num

Correspond num, o num est un entier positif. Fait rfrence aux correspondances mmorises. Par exemple, "(.)\1" correspond deux
caractres identiques conscutifs.

\n

Correspond n, o n est une valeur d'chappement octale. Les valeurs d'chappement octales doivent comprendre 1, 2 ou 3 chiffres. Par
exemple, "\11" et "\011" correspondent tous les deux un caractre de tabulation. "\0011" quivaut "\001" & "1". Les valeurs
d'chappement octales ne doivent pas excder 256. Si c'tait le cas, seuls les deux premiers chiffres seraient pris en compte dans
l'expression. Permet d'utiliser les codes ASCII dans des expressions rgulires

\xn

Correspond n, o n est une valeur d'chappement hexadcimale. Les valeurs d'chappement hexadcimales doivent comprendre deux
chiffres obligatoirement. Par exemple, "\x41" correspond "A". "\x041" quivaut "\x04" & "1". Permet d'utiliser les codes ASCII
dans des expressions rgulires

DRIOUCH B.

36

18

Les collections
Une alternative aux tableaux est lusage de Collection. Qui fait partie de lespace de nom
System.Collections
Une collection fonctionne plutt comme un groupe d'lments dans laquelle il est possible
dajouter ou denlever un lment nimporte quel endroit sans avoir se proccuper de sa
taille ni ou se trouve l'lment.
Le nombre d'lment n'est pas dfini au dpart comme dans un tableau. Dans une
collection il n'y a que les lments que l'on a ajout.
Une fois que vous avez cr une collection, vous pouvez effectuer l'une des actions
suivantes :
ajouter un lment par le biais de la mthode Add ;

supprimer un lment avec la mthode Remove ;

supprimer tous les lments via la mthode Clear ;

Connatre le nombre d'lments contenus dans la collection avec la proprit Count.

Vrifier la prsence d'un lment spcifique avec la mthode Contains.

Retourner un lment spcifique de la collection avec la proprit Item.

parcourir la collection entire l'aide de For Each...Next, instruction (Visual Basic).


Les lments sont reprs grce un index ou avec une Cl unique


Dim Col As New Collection
Col.Add ("Toto") : Ajoute dans la collection
Col.Add("Lulu") :
Col.Add("Titi") :
Col.Remove(1) : supprime lelement Lulu
Col.Item(1) : contient "Titi" (le second Item de la collection)
NB: lindex du premier lment et 1
DRIOUCH B.

37

Array
La classe Array implmente un tableau. Nous utiliserons dans notre
exemple les proprits et mthodes suivantes :

Public ReadOnly Property Length As Integer

proprit - nombre d'lments du tableau

Overloads Public Shared Function BinarySearch(ByVal array As


Array,ByVal index As Integer,ByVal length As Integer, ByVal
value As Object) As Integer

mthode de classe - rend la position de value dans le


tableau tri array - cherche partir de la position index et
avec length lments

Overloads Public Shared Sub Copy(ByVal sourceArray As


Array,ByVal destinationArray As Array,ByVal length As Integer)

mthode de classe - copie length lments de sourceArray


dans destinationArray - destinationArray est cr pour
l'occasion

Overloads Public Shared Sub Sort(ByVal array As


Array)

mthode de classe - trie le tableau array - celui doit


contenir un type de donnes ayant une fonction d'ordre par
dfaut (chanes, nombres).

DRIOUCH B.

38

19

ArrayList
Public Sub New()

construit une liste vide

Public Overridable ReadOnly Property Count As Integer


Implements ICollection.Count

nombre d'lments de la collection

Public Overridable Function Add(ByVal value As Object) As


Integer Implements IList.Add

ajoute l'objet value la fin de la collection

Public Overridable Sub Clear() Implements IList.Clear

efface la liste

Overloads Public Overridable Function IndexOf(ByVal value


As Object) As Integer Implements IList.IndexOf

indice de l'objet value dans la liste ou -1 s'il n'existe pas

Overloads Public Overridable Function IndexOf(ByVal value


As Object, ByVal startIndex As Integer) As Integer

idem mais en cherchant partir de l'lment n startIndex

Overloads Public Overridable Function LastIndexOf(ByVal


value As Object) As Integer

idem mais rend l'indice de la dernire occurrence de value dans


la liste

Overloads Public Overridable Function LastIndexOf(ByVal


value As Object, ByVal startIndex As Integer) As Integer

idem mais en cherchant partir de l'lment n startIndex

Public Overridable Sub Remove( ByVal obj As Object)


Implements IList.Remove

enlve l'objet obj s'il existe dans la liste

Public Overridable Sub RemoveAt(ByVal index As Integer)


Implements IList.RemoveAt

enlve l'lment index de la liste

Overloads Public Overridable Function BinarySearch(ByVal


value As Object) As Integer

rend la position de l'objet value dans la liste ou -1 s'il ne s'y


trouve pas. La liste doit tre trie

DRIOUCH B.

39

Hashtable
La classe Hashtable permet d'implmenter un dictionnaire. On peut voir un
dictionnaire comme un tableau deux colonnes :

Public Sub New()

cre un dictionnaire vide

Public Overridable Sub Add(ByVal key As Object,ByVal


value As Object) Implements IDictionary.Add

ajoute une ligne (key,value) dans le dictionnaire o key et


value sont des rfrences d'objets.

Public Overridable Sub Remove(ByVal key As Object)


Implements IDictionary.Remove

limine du dictionnaire la ligne de cl=key

Public Overridable Sub Clear() Implements


IDictionary.Clear

vide le dictionnaire

Public Overridable Function ContainsKey(ByVal key As


Object) As Boolean

rend vrai (true) si la cl key appartient au dictionnaire.

Public Overridable Function ContainsValue (ByVal value


As Object) As Boolean

rend vrai (true) si la valeur value appartient au dictionnaire.

Public Overridable ReadOnly Property Count As Integer


Implements ICollection.Count

proprit : nombre d'lments du dictionnaire (cl,valeur)

Public Overridable ReadOnly Property Keys As


ICollection Implements IDictionary.Keys

proprit : collection des cls du dictionnaire

Public Overridable ReadOnly Property Values As


ICollection Implements IDictionary.Values

proprit : collection des valeurs du dictionnaire

Public Overridable Default Property Item(ByVal key As


Object) As Object Implements IDictionary.Item

proprit indexe : permet de connatre ou de fixer la valeur


associe une cl key

DRIOUCH B.

40

20

Sortedlist
La s
squence d'index est bas
base sur la s
squence de tri.
Quand un lment est ajout
ajout, il est ins
insr dans SortedList
dans l'ordre de tri ad
adquat(une impl
implmentation sp
spcifique de
IComparer),
IComparer), et l'indexation s'ajuste en cons
consquence. Quand
un lment est supprim
supprim, l'indexation s'ajuste aussi en
cons
consquence. Par cons
consquent, l'index d'une paire cl
cl/valeur
sp
spcifique peut changer en fonction de l'ajout ou de la
suppression d'
d'lments dans l'objet SortedList.
SortedList.
 Les op
oprations sur un objet SortedList ont tendance tre
plus lentes que les op
oprations sur un objet Hashtable en
raison du tri. Cependant, un objet SortedList est plus flexible,
car il permet l'acc
l'accs aux valeurs par l'interm
l'intermdiaire des cl
cls
associ
associes ou des index.
 Il est possible d'acc
d'accder aux lments de cette collection
en utilisant un index d'entiers. Les index de cette collection
sont des index de base z
zro.


DRIOUCH B.

41

Exercice


crire un programme pour la gestion des


comptes bancaire(NumCompte
bancaire(NumCompte,, Solde,
Client) et les Clients(Nom, Pr
Prnom)
un client peut avoir plusieurs comptes)

Ajouter
Rechercher (NumCompte
(NumCompte))
Supprimer (NumCompte
(NumCompte))
Affichage (Tableau)

DRIOUCH B.

42

21

La persistance des objets




Cette illustration affiche le


processus
global
de
la
srialisation :
L'objet est s
srialis
rialis un flux
qui contient non seulement les
donn
donnes, mais galement des
informations
sur
le
type
d'objet, notamment sa version,
sa
culture
et
son
nom
d'assembly
d'assembly.. partir de ce flux,
il peut tre stock
stock dans une
base de donn
donnes, dans un
fichier ou en m
mmoire.

DRIOUCH B.

43

Srialisation binaire et XML


Srialisation binaire : La s
srialisation binaire utilise le
codage binaire afin de produire une s
srialisation compacte
destin
destine notamment au stockage ou au flux r
rseau socket.
socket. Il
n'est pas convenable de faire passer les donn
donnes dans un
parepare-feu mais les performances sont meilleures lors du
stockage des donn
donnes.


Srialisation XML : La s
srialisation XML s
srialise les
champs et les propri
proprits publics d'un objet, ou les
param
paramtres et valeurs de retour des m
mthodes, en un flux
XML conforme un document de langage XSD (XML Schema
Definition)
Definition) sp
spcifique. La s
srialisation XML favorise des
classes fortement typ
types avec des propri
proprits et des champs
publics convertis en XML. System.Xml.Serialization contient
les classes n
ncessaires pour la s
srialisation et la
dsrialisation XML


DRIOUCH B.

44

22

Srialisation binaire (Exemple)


Pour lire ou crire dans un fichier, on utilise les deux objets StreamReader et StreamWriter dans
lespace de nom System.IO.
Pour criture:
Dim ligne As String = Nothing ' une ligne de texte
Dim fluxInfos As StreamWriter = Nothing ' le fichier texte
Try
' cr
cration du fichier texte
fluxInfos = New StreamWriter("C
StreamWriter("C:\infos.txt", True)
Do
Console.Write("ligne (rien pour arrter) : ")
' lecture ligne tap
tape au clavier
ligne = Console.ReadLine().Trim()
fluxInfos.WriteLine(ligne)
Loop Until ligne = ""
Catch e As Exception
Console.WriteLine("L'erreur suivante s'est produite : " & e.Message
e.Message))
Finally
Try
fluxInfos.Close()
Catch
End Try
End Try
DRIOUCH B.

45

Srialisation binaire (Exemple)


Pour lecture:
Dim ligne As String = Nothing
Dim fluxInfos As StreamReader = Nothing
' lecture contenu du fichier
Try
fluxInfos = New StreamReader("C:\infos.txt")
Do
ligne = fluxInfos.ReadLine()
Console.WriteLine(ligne)
Loop Until (ligne Is Nothing)
Catch e As Exception
Console.WriteLine("L'erreur suivante s'est produite : " & e.Message)
Finally
Try
fluxInfos.Close()
Catch
End Try
End Try
Console.ReadLine()

DRIOUCH B.

46

23

Srialisation XML Exemple (XML)


Class
Public Class Employee
Public EmpName As String
Public EmpID As String
Public Sub New()
End Sub
Public Sub New(ByVal newName As String, ByVal newID As
String)
EmpName = newName
EmpID = newID
End Sub
End Class

DRIOUCH B.

47

Public Class Employees


Implements ICollection
Public CollectionName As String
Private empArray As ArrayList = New ArrayList()
Default Public Overloads ReadOnly Property Item(ByVal index As Integer) As Employee
Get
Return CType(empArray(index), Employee)
End Get
End Property
Public Sub CopyTo(ByVal a As Array, ByVal index As Integer) Implements ICollection.CopyTo
empArray.CopyTo(a, index)
End Sub
Public ReadOnly Property Count() As Integer Implements ICollection.Count
ICollection.Count
Get
Count = empArray.Count
End Get
End Property
Public ReadOnly Property SyncRoot() As Object Implements ICollection.SyncRoot
ICollection.SyncRoot
Get
Return Me
End Get
End Property
Public ReadOnly Property IsSynchronized() As Boolean Implements
Implements ICollection.IsSynchronized
Get
Return False
End Get
End Property
Public Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
IEnumerable.GetEnumerator
Return empArray.GetEnumerator()
End Function
Public Function Add(ByVal newEmployee As Employee) As Integer
Integer
empArray.Add(newEmployee)
Return empArray.Count
End Function
DRIOUCH B.
48
End Class

24

Exemple (Suite) : Main()


Dim Emps As Employees = New Employees()
' Note that only the collection is serialized -- not the
' CollectionName or any other public property of the class.
Emps.CollectionName = "Employees"
Dim John100 As Employee = New Employee("John0", "100xxx")
Emps.Add(John100)
Dim John101 As Employee = New Employee("John1", "101xxx")
Emps.Add(John101)
Dim x As XmlSerializer = New XmlSerializer(GetType(Employees))
Dim writer As TextWriter = New StreamWriter("coll.xml")
x.Serialize(writer, Emps)
writer.Close()

XML :
<?xml
<?xml version="1.0" encoding="utf
encoding="utf--8"?>
<ArrayOfEmployee xmlns:
XMLSchema--instance"
xmlns:xsi="http://www.w3.org/2001/
xsi="http://www.w3.org/2001/XMLSchema
instance"
xmlns:
XMLSchema">
">
xmlns:xsd="http://www.w3.org/2001/
xsd="http://www.w3.org/2001/XMLSchema
<Employee>
Employee>
<EmpName>John0</
EmpName>
>
EmpName>John0</EmpName
<EmpID>100xxx</
EmpID>
>
EmpID>100xxx</EmpID
</Employee
>
</Employee>
<Employee>
Employee>
<EmpName>John1</
EmpName>
>
EmpName>John1</EmpName
<EmpID>101xxx</
EmpID>
>
EmpID>101xxx</EmpID
</Employee
>
</Employee>
</ArrayOfEmployee
>
</ArrayOfEmployee>
DRIOUCH B.

49

25

Vous aimerez peut-être aussi