Académique Documents
Professionnel Documents
Culture Documents
CS.Net
Formateur : Driouch
(cfmoti.driouch@gmail.com) Etablissement : OFPPT/DRGC/CFMOTI 24/06/2011 http://www.istahttp://www.ista-ntic.net/ http://www.driouchb.0fees.net/ http://www.driouchb.0fees.net/
www.istawww.ista-ntic.net
Plan
Notion dObjet Classe - Instanciation Encapsulation (Proprit et Mthodes daccs) Constructeurs (Constructeur de copie) Destructeur(Garbage Collector) Hritage (Surcharge Mthode/Oprateur Redfinition) Polymorphisme Les Exceptions Les Objets Courants(en .Net) Objet de collection Les Interfaces La persistance (Srialisation binaire, Objet et XML)
www.istawww.ista-ntic.net 2
Notion dobjet
Un objet est une entit cohrente rassemblant des donnes et du code travaillant sur ces donnes.
www.istawww.ista-ntic.net
Classe
Une classe est une description abstraite dun objet. Elle peut tre considre en quelque sorte comme un 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)
www.istawww.ista-ntic.net
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
www.istawww.ista-ntic.net
Instanciation
La cration dun objet est constitue de deux phases :
Une phase du ressort de la classe : allouer de la mmoire et un contexte dexcution minimaliste. Mthode de classe Une phase du ressort de lobjet : initialiser ses attributs dinstance. Mthode dinstance
Dans les langages tels que Java, C++, VB ou C#, ces deux phases ne sont pas diffrencies. Appel une mthode spciale : le constructeur
www.istawww.ista-ntic.net 6
Encapsulation
Abstraction de donnes :
La structure dun objet nest pas visible de lextrieur. Seule son interface est accessible par le biais de messages invocables par le client.
Abstraction procdurale :
Linvocation dun message est une opration atomique. Aucun lment dinformation sur les traitements internes mis en uvre nest ncessaire.
Donc pour chaque objet crer en peut limiter les accs ou les contrler selon nos besoin pour cet objet.
Intrieur de lobjet protg Complexit dissimul Maintenance simplifi (centralisation) Echanges avec lexterne sont codifis
www.istawww.ista-ntic.net 7
Proprits
Les proprits d'un objet sont dclares, comme des variables, l'intrieur du bloc contrl par le mot cl class. class. Public Class NomDeLaClasse { Public TypeDeLaPropriet NomDeLaPropriete; // Dclaration des mthodes de l'objet } Les proprits peuvent tre dclares tout moment l'intrieur du corps de la classe. Chaque dclaration de proprit (Attributs) est construite sous le modle suivant : Public TypeDeLaPropriet NomDeLaPropriete; Une proprit peut tre initialise lors de sa dclaration : Public TypeDeLaPropriet NomDeLaPropriete=valeurInitiale; Les identifiants de proprit par convention commencent par une majuscule.
www.istawww.ista-ntic.net 8
Mthodes daccs
En Programmation Oriente Objet, on vite d'accder directement aux proprits par l'oprateur . . En effet, cette possibilit ne correspond pas au concept d'encapsulation. Certains langages l'interdisent carrment. Afin dimplanter correctement le concept d'encapsulation, il convient de verrouiller l'accs aux proprits et de les dclarer private L Accs aux attributs membres peut se faire par des mthodes simple(Getter et Setter) ou par les Property de classe public type nomClient{ get{ return iNomClient; } set{ iNomClient = value; } }
www.istawww.ista-ntic.net 9
Constructeur
Quand une instance d'une classe d'objet est cre au moment de l'instanciation d'une variable avec new, une new, fonction particulire est excute. Cette fonction s'appelle le excute. constructeur. constructeur. Elle permet, entre autres, d'initialiser chaque instance pour que ses proprits aient un contenu cohrent. cohrent. Public Client(int numero, string nom){ this.IDClient = numero; this.NomClient = nom; } Cela va permettre d'instancier la classe Client de la faon suivante : Client cli = New Client(12, "Sharraf");
www.istawww.ista-ntic.net 10
Constructeur de recopie
Le constructeur de recopie permet de recopier les proprits d'un objet existant vers une nouvelle instance de mme type. type. Public Client(Client unClient){ this.IDClient = unClient.IDClient; this.NomClient = unClient.NomClient; this.CaClient = unClient.CaClient; } Client oClient1 = new Client(); Client oClient = New Client(oClient1);
www.istawww.ista-ntic.net 11
public class Vehicule{ private string Marque; private int Puissance; private int VitesseMax; private int VitesseCour; // Constructeur par defaut public Vehicule(){ Marque = "Marque inconu"; Puissance = 0; VitesseMax = 0; VitesseCour = 0; } //Constructeur d'initialisation public Vehicule(String M, int P, int VM){ Marque = M; Puissance = P; VitesseMax = VM; VitesseCour = 0; } //Constructeur de Copie public Vehicule (Vehicule Vh){ Marque = Vh.PMarque; Puissance = Vh.PPuissanceF; VitesseMax = Vh.PVitesseM; VitesseCour = Vh.PVitesseC; }
Exemple
public string PMarque { get{ return Marque; } set{ Marque = value; } } public int PPuissanceF{ get{ return this.Puissance; } set{ this.Puissance = value; } } public int PVitesseM{ get{ return this.VitesseMax; } set{ this.VitesseMax = value; } }
12
www.istawww.ista-ntic.net
Exemple
//mthode daccs en lecture seul public int PVitesseC{ get{ return this.VitesseCour; } } public void Accelere(int v) { this.VitesseCour += v; if (this.PVitesseC > this.PVitesseM) this.VitesseCour = }
this.PVitesseM;
public override string ToString() { return "Vehicule : " + Convert.ToString(this.PMarque) + " " + Convert.ToString(this.PPuissanceF) + " - Vitesse : " + Convert.ToString(this.PVitesseC) + "/" + Convert.ToString(this.PVitesseM); } } }
www.istawww.ista-ntic.net
13
Programme principale
using System; class Program { static void Main(string[] args) { Vehicule rn=new Vehicule() ; Console.WriteLine(rn.ToString()); Vehicule pg = new Vehicule("Peugeut", 7, 187); Console.WriteLine(pg.ToString()); pg.Accelere(60); Console.WriteLine(pg.ToString()); pg.Accelere(80); pg.Accelere(60); Console.WriteLine(pg.ToString()); Console.ReadKey(); } }
www.istawww.ista-ntic.net 14
Destructeur
En C# on ne dclenche pas explicitement la destruction d'un objet. Les objet. instances seront dtruites par le systme lorsqu'elles ne sont plus rfrences et quil sera ncessaire de rcuprer des ressources mmoire. Le programme mmoire. qui se charge de cette tche s'appelle le Garbage Collector ou, en franais, le ramasse-miettes. ramasse-miettes. Les destructeurs ne peuvent pas tre dfinis dans des struct. Ils sont utiliss uniquement avec les classes. Une classe peut possder un seul destructeur. Les destructeurs ne peuvent pas tre hrits ou surchargs. Les destructeurs ne peuvent pas tre appels. Ils sont appels automatiquement. Un destructeur n'accepte pas de modificateurs ni de paramtres. ~NomClass() // Cette mthode s'appelle destructeur. destructeur. { //programme (Exp: libration des ressources) } Dans le programme principale on peut forc le Garbage Collector par la procdure: GC.Collect()
www.istawww.ista-ntic.net 15
www.istawww.ista-ntic.net
16
Hritage
Le concept d'hritage est l'un des trois principaux fondements de la Programmation Oriente Objet, le premier tant l'encapsulation vu prcdemment et le dernier tant le polymorphisme qui sera abord plus loin dans ce document L'hritage consiste en la cration d'une nouvelle classe dite classe drive partir d'une classe existante dite classe de base ou classe parente. parente. L'hritage permet de : Rcuprer le comportement standard d'une classe d'objet (classe parente) partir des proprits et des mthodes dfinies dans celles-ci. celles-ci. Ajouter des fonctionnalits supplmentaires en crant de nouvelles proprits et mthodes dans la classe drive. drive. Modifier le comportement standard d'une classe d'objet (classe parente) en surchargeant certaines mthodes de la classe parente dans la classe drive. drive.
www.istawww.ista-ntic.net
18
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 ci-dessus ciconstitue la reprsentation graphique de la hirarchie de classes construite partir de ClasseA. ClasseA.
ClasseA
Dans le cadre de la conception oriente objet, la mthode UML ( United Modeling Language ) propose une autre reprsentation graphique d'une telle hirarchie :
www.istawww.ista-ntic.net
ClasseB
ClasseC
ClasseE
ClasseD
19
public class Client { protected string NomClient; protected double CAClient; public Client() { } public Client(string nom, double ca) { this.NomClient = nom; this.CAClient = ca; } public string Nom { get {return this.NomClient; } set {this.NomClient = value; } } public double CA { set {this.CAClient = value; } } public virtual double finance() { return this.CAClient; } public override string ToString() { return " Nom: " + this.Nom + " CA : " + Convert.ToString(this.finance()); } }
www.istawww.ista-ntic.net 20
Exemple
10
Exemple
public class Grossiste:Client { private double TxRemiseClient; public Grossiste():base(){ } public Grossiste(string nom, double ca, double rm):base(nom,ca){ this.TxRemise = rm; } public double TxRemise{ get{ return this.TxRemiseClient; } set{ this.TxRemiseClient = value; } } public double calrm(){ return this.CAClient * this.TxRemise; } public override double finance() { return this.CAClient * (1 - this.TxRemise); } }
www.istawww.ista-ntic.net 21
Surcharge (mthodes/Oprateur)
public int Add(int A, int B){ return A+B;} public string Add(string A, string B){ return A+B;}
La surcharge des mthodes avec le mme nom, se fait par le changement de leur signature (le nombre de paramtre, le type des paramtre) En peut aussi avoir une surcharge des oprateurs (+,-,x,/ ): (+,public class Complex { public int real; public int imaginary; public Complex(int real, int imaginary) //constructor { this.real = real; this.imaginary = imaginary; } public static Complex operator +(Complex c1, Complex c2) { //test si c1 et c2 ne sont pas vide (null). return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary); } }
www.istawww.ista-ntic.net 22
11
double c1, c2; //test si fr est null (fr==null) c1 = Me.numerateur * (fr.denominateur); c2 = Me.denominateur * (fr.numerateur); If (c1 = c2){ return true;} Else{ return False;} }
www.istawww.ista-ntic.net 23
Complment hritage(Modificateur)
Abstract (Class): Ce mot cl indique qu'une classe ne peut tre (Class): instancier, et qu'elle ne peut donc tre utilise que comme classe de base, une classe abstret. abstret. Abstract (Mthode): utilis pour les mthodes quon veut forc (Mthode): leur redfinition dans les classes driv, en dfini seulement la signature sans corps. corps. Sealed (Class): A l'inverse de abstract, ce mot-cl indique que (Class): motcette classe ne peut pas tre hrite, et peut etres instancier, c'estc'est--dire servir de classe de base. base. Virtual (Mthode): ce mot-cl indique que cette mthode peut (Mthode): mottre redfinie dans une classe driv. driv. Sealed (Mthode): A l'inverse, ce mot-cl indique que cette (Mthode): motmthode ne peut tre redfinie dans une classe driv. driv. New (Mthode-Attribut): le mot cl new masque explicitement (Mthode-Attribut): un membre hrit d'une classe de base(avec signateur diffrente et mme nom). Lorsque vous masquez un membre hrit, la nom). version drive du membre remplace la version de classe de base. base.
www.istawww.ista-ntic.net 24
12
Polymorphisme
Le polymorphisme est un mcanisme via lequel un objet peut prendre plus d'une forme. Par exemple, si vous avez une classe de base nomme Client, une rfrence de type Client peut tre utilis pour contenir un objet de n'importe laquelle de ses classes drives. Quand vous appelez une mthode partir de votre objet, le systme dterminera automatiquement le type de l'objet afin d'appeler la mthode approprie. Client x; Client cl = New Client("Ali", 1000); Grossiste clg = New Grossiste("Ahmed", 7000, 0.2); x = cl; Console.WriteLine(x.ToString()); x = clg; Console.WriteLine(x.ToString());
www.istawww.ista-ntic.net 25
13
www.istawww.ista-ntic.net
27
Les Exceptions
Cette classe (Exception) est la classe de base pour toutes les exceptions. Lorsqu'une erreur se exceptions. produit, le systme ou l'application en cours d'excution la signale en levant une exception qui contient des informations sur l'erreur. Une fois l'erreur. leve, une exception est gre par l'application ou par le gestionnaire d'exceptions par dfaut. dfaut. Exp:
ArithmeticException DivideByZeroException NotFiniteNumberException OverflowException
www.istawww.ista-ntic.net 28
14
www.istawww.ista-ntic.net
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. ToCharArray() : retourne un tableau de caractre. 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 la position N une sous chane str1. 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 : string str = Bonjour Console.Write(str.length); 7 Console.Write(str.replace( jour , soir )); Bonsoir
www.istawww.ista-ntic.net 30
15
Clone Compare Concat Contains Copy CopyTo EndsWith Equals Finalize Format IndexOf Insert IsNullOrEmpty Join LastIndexOf PadLeft PadRight Remove Replace Split StartsWith Substring ToCharArray ToLower ToString ToUpper Trim TrimEnd TrimStart
Retourne une rfrence cette instance de String. Surcharg. Compare deux objets String spcifis et retourne un entier qui indique la relation entre ces deux objets dans l'ordre de tri. Surcharg. Concatne une ou plusieurs instances de String ou les reprsentations String des valeurs d'une ou de plusieurs instances de Object. Retourne une valeur qui indique si l'objet String spcifi apparat dans cette chane. Cre une nouvelle instance de String ayant la mme valeur qu'un String spcifi. Copie un nombre spcifi de caractres partir d'une position dfinie dans cette instance vers une position spcifie dans un tableau de caractres Unicode. Surcharg. Dtermine si la fin d'une instance de String correspond une chane spcifie. Surcharg. Dtermine si deux objets String ont la mme valeur. Autorise Object tenter de librer des ressources et d'excuter d'autres oprations de nettoyage avant que Object soit rcupr par l'opration garbage collection. (Hrit de Object.) Surcharg. Remplace chaque lment de mise en forme dans un Stringspcifi par l'quivalent textuel de la valeur d'un objet correspondant. Surcharg. Signale l'index de la premire occurrence d'un String, ou d'un ou de plusieurs caractres de cette chane. Insre une instance spcifie de String au point d'index indiqu dans cette instance. Indique si l'objet String spcifi est null ou une chane Empty. Surcharg. Concatne un sparateur spcifi de String entre chaque lment d'un tableau String indiqu, donnant lieu une chane concatne unique. Surcharg. Signale le point d'index de la dernire occurrence d'un caractre Unicode spcifi ou String dans cette instance. Surcharg. Aligne les caractres de cette instance droite et, gauche, remplit en ajoutant des espaces ou un caractre Unicode spcifi pour une longueur totale spcifie. Surcharg. Aligne les caractres de cette instance gauche et, droite, remplit en ajoutant des espaces ou un caractre Unicode spcifi pour une longueur totale spcifie. Surcharg. Supprime de cette instance le nombre spcifi de caractres. Surcharg. Remplace toutes les occurrences d'un caractre Unicode spcifi ou String dans cette instance par un autre caractre Unicode spcifi ou String. Surcharg. Retourne un tableau de chanes qui contient les sous-chanes de cette instance, dlimites par les lments d'une chane ou d'un tableau de caractres Unicode spcifi. Surcharg. Dtermine si le dbut d'une instance de String correspond une chane spcifie. Surcharg. Rcupre une sous-chane de cette instance. Surcharg. Copie les caractres dans cette instance vers un tableau de caractres Unicode. Surcharg. Retourne une copie de String en minuscules. Surcharg. Convertit la valeur de cette instance en String. Surcharg. Retourne une copie de String en majuscules. Surcharg. Supprime, de l'objet String actuel, toutes les occurrences-situes au dbut et la fin d'un jeu de caractres spcifis. www.istawww.ista ntic.net Supprime, de l'objet String actuel, toutes les occurrences situes la fin d'un jeu de caractres spcifis dans un tableau. Supprime, de l'objet String actuel, toutes les occurrences situes au dbut d'un jeu de caractres spcifis dans un tableau.
31
Exercices
crire un programme qui lit une chane STR au clavier et un caractre C de cette chane, qui va cherch le nombre doccurrence et le supprime dans la chane STR. Inverser une chane de caractre. Remplacer le premier caractre de chaque mot dans une phrase par le majuscule.
www.istawww.ista-ntic.net 32
16
LObjet Regex
La classe Regex (System.Text.RegularExpressions) permet l'utilisation System.Text.RegularExpressions) d'expression rgulires. Celles-ci permettent de tester le format d'une chane rgulires. Cellesde caractres. Ainsi on peut vrifier qu'une chane reprsentant une date est caractres. bien au format jj/mm/aa. On utilise pour cela un modle et on compare la jj/mm/aa. chane ce modle. Ainsi dans cet exemple, j m et a doivent tre des modle. chiffres. chiffres. Le modle d'un format de date valide est alors "\d\d/\d\d/\d\d" o le d/\ d/\ symbole \d dsigne un chiffre. chiffre.
// une expression rgulire modle string modle1 = @"\d\d/\d\d/\d\d"; @"\ d/\ d/\ Regex regex1 = new Regex(modle1); // comparer un exemplaire au modle string exp1 = " 123 "; if (regex1.IsMatch(exp1)) Console.WriteLine(("[" + exp1 + "] correspond au modle [" + modle1 + "]")); else Console.WriteLine(("[" + exp1 + "] ne correspond pas au modle [" + modle1 + "]")); string exp2 = "01/02/10"; //" 123 "; if (regex1.IsMatch(exp2)) Console.WriteLine(("[" + exp2 + "] correspond au modle [" + modle1 + "]")); exp else Console.WriteLine(("[" + exp2 + "] ne correspond pas au modle [" + modle1 + "]")); Console.ReadKey();
www.istawww.ista-ntic.net 33
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. 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 "\)". Correspond soit x soit y. Par exemple, "z|foot" correspond "z" ou "foot". "(z|f)oo" correspond "zoo" ou "foo". 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 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*". 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?". Jeu de caractres. Correspond l'un des caractres indiqus. Par exemple, "[abc]" correspond "a" dans "plat". Jeu de caractres ngatif. Correspond tout caractre non indiqu. Par exemple, "[^abc]" correspond "p" dans "plat". Plage de caractres. Correspond tout caractre dans la srie spcifie. Par exemple, "[a-z]" correspond tout caractre alphabtique minuscule compris entre "a" et "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". 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". www.istawww.ista-ntic.net 34
17
\B \d \D \f \n \r \s \S \t \v \w \W \num \n
Correspond une limite ne reprsentant pas un mot. "en*t\B" correspond "ent" dans "bien entendu". Correspond un caractre reprsentant un chiffre. quivaut [0-9]. Correspond un caractre ne reprsentant pas un chiffre. quivaut [^0-9]. Correspond un caractre de saut de page. Correspond un caractre de nouvelle ligne Correspond un caractre de retour chariot. Correspond tout espace blanc, y compris l'espace, la tabulation, le saut de page, etc. quivaut "[ \f\n\r\t\v]". Correspond tout caractre d'espace non blanc. quivaut "[^ \f\n\r\t\v]". Correspond un caractre de tabulation Correspond un caractre de tabulation verticale. Correspond tout caractre reprsentant un mot et incluant un trait de soulignement. quivaut "[A-Za-z0-9_]". Correspond tout caractre ne reprsentant pas un mot. quivaut "[^A-Za-z0-9_]". Correspond num, o num est un entier positif. Fait rfrence aux correspondances mmorises. Par exemple, "(.)\1" correspond deux caractres identiques conscutifs. 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
www.istawww.ista-ntic.net
35
Regex (exemple)
www.istawww.ista-ntic.net
36
18
Les collections
Le .NET Framework fournit des classes spcialises pour le stockage et la rcupration des donnes. Ces classes fournissent la prise en charge des piles, files d'attente, listes et tables de hachage. La plupart des classes de collection implmentent les mmes interfaces. lusage de Collection est Une alternative aux tableaux. Fait partie de lespace de nom System.Collections ou Systeme.Collections.Generic 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. Les lments sont reprs grce un index ou avec une Cl unique Type collection Array : Dcrit les fonctionnalits des tableaux qui leur permettent d'tre traits comme des collections. Types collection ArrayList et List : Dcrit les fonctionnalits des listes gnriques et non gnriques, qui constituent les types de collection les plus frquemment utiliss. Types collection Hashtable et Dictionary : Dcrit les fonctionnalits des types de dictionnaires gnriques et non gnriques bass sur le hachage. Types collection SortedList et SortedDictionary : Dcrit les types de dictionnaire tri et les types hybrides qui associent les fonctionnalits d'un dictionnaire celles d'une liste. Types collection Queue : Dcrit les fonctionnalits des files d'attente gnriques et non gnriques. Types collection Stack : Dcrit les fonctionnalits des piles gnriques et non gnriques.
www.istawww.ista-ntic.net 37
La classe Array : Fournit des mthodes pour la cration, la manipulation, la recherche ainsi que le tri des tableaux et sert de classe de base pour tous les tableaux.
static void Main(string[] args) { // Cration et initialisation d'un tableau d'entier et un tableau d'objet int[] myIntArray = new int[5] { 1, 2, 3, 4, 5 }; Object[] myObjArray = new Object[5] { 26, 27, 28, 29, 30 }; // Affichage des valeur initial pour les deux tavleaux. Console.WriteLine("Initialement,"); Console.Write("Tableau d'entier:");PrintValues(myIntArray); Console.Write("Tableau d'Objet:");PrintValues(myObjArray); // Copies les deux premiers lments du premier tableau dans le deuxime. Array.Copy(myIntArray, myObjArray, 2); // Prints the values of the modified arrays. Console.WriteLine("\nAprs la fin du copie,"); Console.Write("Tableau d'entier:"); PrintValues(myIntArray); Console.Write("Tableau d'Objet:"); PrintValues(myObjArray); // Copies les deux derner lments du premier tableau dans le deuxime. Array.Copy(myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2); //GetUpperBound : retourne la position du dernier lment du dimention spcifi // Prints the values of the modified arrays. Console.WriteLine("\nAfter copying the last two elements of the Object array to the integer array,"); Console.Write("Tableau d'entier:"); PrintValues(myIntArray); Console.Write("Tableau d'Objet:"); PrintValues(myObjArray); } public static void PrintValues(Object[] myArr) { foreach (Object i in myArr) {Console.Write("\t{0}", i);} Console.WriteLine();} public static void PrintValues(int[] myArr) { foreach (int i in myArr) {Console.Write("\t{0}", i);} Console.WriteLine();} www.istawww.ista-ntic.net
Array
38
19
ArrayList
using System; using System.Collections; static void Main(string[] args) { // Creates and initializes a new ArrayList. ArrayList myAL = new ArrayList(); myAL.Add("Hello"); myAL.Add("World"); myAL.Add("!"); // Displays the properties and values of the ArrayList. Console.WriteLine("myAL"); Console.WriteLine(" Count: {0}", myAL.Count); Console.WriteLine(" Capacity: {0}", myAL.Capacity); //Capacity : Obtient ou dfinit le nombre d'lments que ArrayList peut contenir Console.Write(" Values:"); PrintValues(myAL); Console.ReadKey(); } public static void PrintValues(IEnumerable myList) { foreach (Object obj in myList) Console.Write(" {0}", obj); Console.WriteLine(); www.istawww.ista-ntic.net }
39
Hashtable
Reprsente une collection de paires cl/valeur qui sont organises en fonction du code de hachage de la cl. Nom
Add Clear Contains ContainsKey ContainsValue Equals GetType KeyEquals Remove ToString Count Item Keys Values
Description
Ajoute un lment avec la cl et la valeur spcifies dans Hashtable. Supprime tous les lments de Hashtable. Dtermine si Hashtable contient une cl spcifique. Dtermine si Hashtable contient une cl spcifique. Dtermine si Hashtable contient une valeur spcifique. Dtermine si l'objet Object spcifi est gal l'objet Object en cours. (Hrit de Object.) Obtient le Type de l'instance actuelle. (Hrit de Object.) Compare un Object spcifique avec une cl spcifique dans Hashtable. Supprime de Hashtable l'lment ayant la cl spcifie. Retourne un String qui reprsente le Object en cours. (Hrit de Object.) Obtient le nombre de paires cl/valeur contenues dans Hashtable. Obtient ou dfinit la valeur associe la cl spcifie. Obtient ICollection contenant les cls de Hashtable. Obtient ICollection contenant les valeurs de Hashtable.
www.istawww.ista-ntic.net 40
20
static void Main(string[] args) { // Creation et initiation d'un nouveau Hashtable. Hashtable myHT = new Hashtable(); myHT.Add(0, "zero"); myHT.Add(1, "one"); myHT.Add(2, "two"); myHT.Add(3, "three"); Console.WriteLine("le Hashtable contien les valeur suivant:"); PrintIndexAndKeysAndValues(myHT); // Affichage des valeurs du Hashtable. string rep1= "est dans le Hashtable"; Hashtable"; string rep2= " n'est pas dans le Hashtable"; Hashtable"; // Recherche d'une Cl spcifique. int myKey = 2; Console.WriteLine("la Cl \"{0}\" {1}.", myKey, myHT.ContainsKey(myKey) ? rep1:rep2); "{0}\ rep1:rep2); myKey = 6; Console.WriteLine("la Cl \"{0}\" {1}.", myKey, myHT.ContainsKey(myKey) ? rep1 : rep2); "{0}\ rep2); String myValue = "three"; // Recherche d'une valeur spcifique. Console.WriteLine("la valeur \"{0}\" {1}.", myValue, myHT.ContainsValue(myValue) ? rep1 : rep2); "{0}\ rep2); myValue = "nine"; Console.WriteLine("la valeur \"{0}\" {1}.", myValue, myHT.ContainsValue(myValue) ? rep1 :rep2); "{0}\ rep2); Console.ReadKey();} public static void PrintIndexAndKeysAndValues(Hashtable myHT) { int i = 0; Console.WriteLine("\ INDEX- KEY- VALUEConsole.WriteLine("\t-INDEX-\t-KEY-\t-VALUE-"); foreach (DictionaryEntry de in myHT) Console.WriteLine("\t[{0}]:\t{1}\ Console.WriteLine("\t[{0}]:\t{1}\t{2}", i++, de.Key, de.Value); Console.WriteLine();}
www.istawww.ista-ntic.net 41
21
www.istawww.ista-ntic.net
43
44
22
www.istawww.ista-ntic.net
46
23
24
public class Employees:ICollection { public string CollectionName; private ArrayList empArray = new ArrayList(); public Employee this[int index] { get { return (Employee)empArray[index]; } } public void CopyTo(Array a, int index) { empArray.CopyTo(a, index); } public int Count { get { return empArray.Count; } } public object SyncRoot { get { return this; } } public bool IsSynchronized { get { return false; } } public IEnumerator GetEnumerator() { return empArray.GetEnumerator(); } public void Add(Employee newEmployee) { empArray.Add(newEmployee); } }
www.istawww.ista-ntic.net 49
25