Académique Documents
Professionnel Documents
Culture Documents
M14-POO VBNet V1-2
M14-POO VBNet V1-2
VB.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
DRIOUCH B.
Classe
DRIOUCH B.
Nom de la classe
Description des attributs
ou donnes membres
Description des mthodes
= code associ
4
Instanciation
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 :
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.
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
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
Dfinition
Public
Accessible partout
Private
Friend
Protected
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
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
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
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
DRIOUCH B.
28
14
29
Les Exceptions
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
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.
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
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
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 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".
(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
\D
\f
\n
\r
\s
Correspond tout espace blanc, y compris l'espace, la tabulation, le saut de page, etc. quivaut "[ \f\n\r\t\v]".
\S
\t
\v
\w
Correspond tout caractre reprsentant un mot et incluant un trait de soulignement. quivaut "[A-Za-z0-9_]".
\W
\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).
37
Array
La classe Array implmente un tableau. Nous utiliserons dans notre
exemple les proprits et mthodes suivantes :
DRIOUCH B.
38
19
ArrayList
Public Sub New()
efface la liste
DRIOUCH B.
39
Hashtable
La classe Hashtable permet d'implmenter un dictionnaire. On peut voir un
dictionnaire comme un tableau deux colonnes :
vide le dictionnaire
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
Ajouter
Rechercher (NumCompte
(NumCompte))
Supprimer (NumCompte
(NumCompte))
Affichage (Tableau)
DRIOUCH B.
42
21
DRIOUCH B.
43
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
45
DRIOUCH B.
46
23
DRIOUCH B.
47
24
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