Upload
elgarrai-
View
86
Download
2
Tags:
Embed Size (px)
DESCRIPTION
POO C#
Citation preview
5/22/2018 Poly Copie Poo
1/39
La Programmation Oriente Objet (Avec C#)
1-Introduction
Dans une approche fonctionnelle (Programmation Structurelle):les programmes
sont composs d'une srie de fonctions, qui assurent ensemble certains services. Ils'agit d'une approche logique, cohrente et intuitive de la programmation.
Avantage : la factorisation des comportements (c'est dire que pour crer unefonction d'une application, on peut utiliser un autre ensemble de fonctions (qui sont
donc djcrites)).
Dfauts: une maintenance complexe en cas d'volution de lapplication (une simplemise jour de l'application un point donnpeut impacter en cascade sur d'autres
fonctions de lapplication).Ainsi; L'approche fonctionnelle n'est pas adapte au dveloppement d'applicationsqui voluent sans cesse et dont la complexit croit continuellement (plusieursdizaines de milliers de lignes de code).
2- La P.O.O
Dfinition: La P.O.O peut se dfinir comme l'art de dcomposer une application enun certain nombre d'objets qui ont des caractristiques communes et quicommuniquent entre eux afin de raliser une ou plusieurs tches.
Le but de la POO est de rduire la difficultde la tche accomplir en la divisanten un grand nombre de petits problmes qui sont plus simples comprendre et rsoudre.
3-Avantages de la P.O.O
- Rendre plus facile le dveloppement des applications informatiques- Rendre plus facile la maintenance de ces applications
- Modularit: introduire la notion de module (regrouper les lments homognesdans un seul module)
- Minimiser le cout
- Minimiser le temps de ralisation- la rutilisabilit- lextensibilit- L'approche objet a tinvente pour faciliter l'volution d'applications complexes.
4- Langages OrientObjet
Simula a tle premier langage de programmation implmenter le concept declasses en 1967 ! . En 1976, Smalltalk implmente les concepts dencapsulation,dagrgation, et dhritage (les principaux concepts de lapproche objet).Dautre part,de nombreux langages orients objets ont tmis au point (Object Pascal, C++,
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
2/39
Java, VB.Net,C#,etc.).
5- Concept de Classe et Objet
5-1 Concept de classe
Une classe, est un type de donnes abstrait, caractris par des proprits (sesattributs) et des mthodes) communes des objets.La classe :elle dfini un "moule", un "modle", un plan selon lequel seront conusles objets.
Une Classe est un modle informatique reprsentant une famille dobjets ayant :- la mme structure de donnes (mme liste dattributs)
- les mmes mthodes (mmes comportements).Exemples :
Classe : Livre (titre,nbrepage,editeur,auteur)
Classe Voiture(marque,puissance,annee,couleur)
5-2 Concept d'Objet
Un Objet est une instance dune classe, cest la concrtisation dune classeUn objet informatique, au sens de lorient objet, est une unit atomiquepossdant :- une identit;
- un tat, dfini par un ensemble de donnes (attributs, ou donnes membres) ;- un comportement, dfini par un ensemble de fonctions (mthodes, ou fonctionsmembres).
Ainsi: Objet = identit+ tat (attributs) + comportement (mthodes)
Un Objet peut correspondre : objet concret du monde rel, ayant une ralitphysique, ou a un concept abstrait;
6-Instanciation
La Classe par elle-mme ne contient pas les valeurs des donnes : cest un type dedonnes abstrait.La cration dun objet en tant quexemplaire concret (contenant des donnes) duneclasse sappelle une INSTANCIATION. Chaque objet (instance dune classe) donne
des valeurs aux attributs de la classe.
Exemple :
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
3/39
7- Proprits et mthodes :
- Attributs : objet est dfini par des attributs (aussi appels variables d'instance).La valeur des attributs d'un objet correspond l'tat de cet objet.- Une mthode d'instance (non static) est une mthode qui s'applique sur unobjet.
Remarque: un attribut dun objet peut etre un objet
Exemple :
Objet Comptebancaire(numero, solde,client) avec client(num, nom, prenom)
ATTENTION : il faut viter d'utiliser les mthodes de classe. La programmationoriente objet consiste plutot crer des objets et leur appliquer des mthodes.
Exemple :
Classe: Maison
- Prorits : CouleurPorte,couleurmur,nbreChambre,type,- Mthode: RepeindrePorte(couleur): permet de changer la couleur de la porte- Objets:
Maison1 (avec 2 chambres, porte en rouge, mur en blancs )
Maison2(3 chambres,porte en noirs, murs en blanc)
8- Les fondements de la P.O.O
La Programmation Oriente Objet est dirige par trois principes : encapsulation,
hritageet polymorphisme.
8-1 L'encapsulation :
L'encapsulation est un mcanisme qui consiste rassembler les donnes et lesmthodes au sein d'une classe en cachant l'implmentation de l'objet.Le principe dencapsulation permet aux objets de se prsenter sous deux vuespossibles :
- la vue externe : celle utilise par leprogrammeur utilisateur de la classe. Elledfinit les services accessibles aux utilisateurs de lobjet et ne fournit aucun accs
aux mcanismes internes de lobjet (donnes et mthodes) ;- la vue interne : celle duprogrammeur concepteur de lobjet .Elle donne tous les
dtails sur la constitution interne de lobjet, comment il est construit ;
La vue externe dfinit linterface de lobjet (comment on lutilise), sans apporter dedtail sur la manire dont lobjet est rellement constitu.Lencapsulation (des attributs et des mthodes) permet de dissimuler lutilisateurdun objet des dtails dimplmentation susceptibles dvoluer avec le temps, ou neprsentant pas dintrt pour lutilisation externe de lobjet.Linterface propose par la vue externe est la seule partie de lobjet qui ne DOIT pastre modifi dans le temps, tout en proposant suffisamment dinteraction avec
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
4/39
lobjet.
Intrts de lencapsulation :
1- facilite lvolution dune application
on peut modifier des dtails internes dune classes (nombre, nature et noms desattributs, dtails des traitements) sans modifier son interface.
2- favorise lintgrit des donnes : elle permet dinterdire laccs direct auxdtails internes.une classe peut compltement modifier la manire dont elle modlise et stocke sesdonnes, mais tant quelle continue offrir les mmes mthodes pour les manipuler,les autres objets nen sauront rien et ne sen proccuperont pas
Les programmes doivent interagir avec les donnes d un objet uniquement par l
intermdiaire des mthodes de l objet.
8-2 L'Hritage
Lhritage traduit la relation "est un". Exemple : Un roman est un livre,Une voitureest un Vhicule
Lhritage est le mcanisme de transmission des proprits (attributs et mthodes)dune classe une autre ;La classe de base (classe mre, parente) transmet toutes ses propritstransmissibles aux classes drives (classe fille, enfant);
La classe drive possde ses propres attributs et mthodes, que la classe de base neconnat pas ;La classe drive peut redfinir (amliorer, spcialiser, ....) les mthodes transmisespar la classe de base ;
Tout ce que la classe de base sait faire, la classe drive sait le faire .ventuellement, la classe drive sait le faire "mieux" ou "diffremment" ;
8-3 Le Polymorphisme
Une sous-classe (fille, drive) peut implmenter les mthodes hrites de manirediffrente si ncessaire tout en gardant le mme nom que la mthode hriteLors de lexcution du programme, cest la mthode redfinie par la sous-classe qui
est excute et non celle de la classe mre
9- P.O.O en C#
Une classe en c# peut etre dfinit comme suit :
class NomClass {
1- //Attributs
2- //Mthodes
}
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
5/39
Exemple :
class Personne
{
string Nom;
int Age;string Adresse;
public void AfficherInfos()
{
System.Console.WriteLine(''Le nom est : ''+nom)
System.Console.WriteLine(''votre prenom est : ''+prenom)
System.Console.WriteLine(''Votre age est : ''+age)
}
}
1- Attributs
Syntaxe: visibilit type nomAttribut ;Exemple:
public string Nom;
public int Age;
public string Adresse;
2-Mthodes
Visibilit TypeRetour nomMethode(arguments ) {
Corps Return ValeurdeRetour ;
}
-Notion de Visibilit
La visibilit dun attribut ou dune opration permet de dterminer qui pourra yaccder.C'est une notion fondamentale pour le concept objet dencapsulation. On a 3types de visibilit:
1- + ou public : tout le monde peut y accder2- # ou protected : seules la classe possdant llment et les classes filles
peuvent y accder (voir notion dhritage)3- - ou private : seule la classe possdant llment peut y accder
Rgle :
- Les attributs doivent tre privs- Les oprations dfinissant linterface dune classe doivent tre publique (servicesofferts)
- Des oprations peuvent aussi tre prives si elles ne participent quaufonctionnement interne de la classe
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
6/39
Exemple :
class Personne
{
//Attributs
Private int age ;
Private string nom ;Private string prenom ;
//MthodesPublic Void DonnerInfos(int a,string n,string p)
{
This.age=a ;
This.nom=n ;
This.prenom=p ;
}
-Cration d'un Objet :
On passe au programme de test , et on cre les objets. Pour crer un objet duneclasse donne, il faut:
1- dclarer une rfrence lobjet et2- linstancier
Exemple :
Personne p; // rfrencep = new Personne(); // instanciation
Cela a pour effet de crer un objet de type Personne non encore initialis.
-Accs aux champs :
On peut accder aux caractristiques ( publiques) en utilisant l'oprateur '.'Exemple :
p1.DonnerInfos("SALIM", 40,Place F N 6 casa) ;
p2.age=20 ; //Faux
P2.nom=''nom1 '' ;//Faux
P2.prenom= ''prenom2'' ;//Faux
-Constructeur :
Dfinition : Cest une mthode sans type de retour qui porte le meme nom de laclasse, et qui peut prendre des paramtresSi une classe n'a aucun constructeur, elle en a un par dfaut qui est le constructeursans paramtres.Une classe peut comporter plusieurs constructeursExemple :
//constructeur par dfaut
Public Personne()
{ }
//constructeur d'initialisation
Public Personne(String pr,String nom, int age)
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
7/39
{
this.prenom = pr ;
this.nom = nom ;
this.age = age ;
}
- Le constructeur de recopiepermet de recopier les proprits d'un objet existantvers une nouvelle instance de mme type.Exemple:
Public Personne(Personne p)
{
this.age = p.age ;
This.nom=p.nom ;
This.prenom=p.prenom ;
}
-Getters et Setters :Comme les attributs sont privs,on doit crer des mthodes qui permettent laccs
( pour connatre la valeur de lattribut , pour modifier cette valeur)
- Les Getters (Accesseurs) : mtodes qui permettent de connatre les valeurs desattributs
- Les Setters(Modifieurs) : sont des mthodes qui permettent de modifier lesattributs .
Exemples : ' accesseurs
Public string getPrenom() { Return this.prenom; }
Public string getNom() { Return this.nom; }
Public int getAge() { Return age ; }
//Modifieurs
Public void setPrenom(String P) { this.prenom = P; }
Public void setNom(String N) { this.nom = N }
Public void setAge(int age) { this.age = age ;}
//Test
Main(){
Personne P= New Personne("Jean", "Michelin", 34) ;
Console.WriteLine(("P=(" + P.getPrenom() + "," + P.getNom() + "," + P.getAge() +
")")) ;
P.setAge(56) ;
Console.WriteLine(("P=(" + P.getPrenom() + "," + P.getNom() + "," + P.getAge() +
")")) ;
}
-Les proprits
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
8/39
Il est possible de dfinir les acces aux attributs dune classe par des proprits la place des mthodes Get et Set.
class Example
{ int _number;
public int Number
{
Get { return this._number; }
Set { this._number = value; } } }
class Program
{
static void Main()
{ Example example = new Example();
example.Number = 5; // set { }
Console.WriteLine(example.Number); // get { }
} }
-Attributs et Mthodes Static
1- Attribut de classe:
Jusqu'prsent, les attributs dclares taient des attributs d'instance. C'est direque les attributs de chaque objet, instancipartir de la mme classe, peuvent avoirdes valeurs diffrentes ( numero, nom, etc ).Problme :
Supposons que dans la classe Stagiaire, il soit ncessaire de disposer d'uncompteur
d'instance, dont la valeur serait le nombre d'instances cres
Solution: En C# il est possible de crer des attributs de classe.
Dfinition: un attribut de classe est un attribut dont la valeur est la mme pourtoutes les instances d'une mme classe. Pour dclarer un tel attribut, on utilise lemot-clStatic.
Exemple: Public Static int compteur= 0La proprit de classe compteur, initialise 0 lors de sa dclaration, seraincrmente de 1 dans tous les constructeurs dvelopps pour la classe. Sa valeursera le nombre d'instances valides un instant donn.
Dfinition : Une variable de classe est accessible comme une variabled'instance(selon sa visibilit), mais aussi sans avoir instancier un objet de la classe, uniquement en rfrenant la variable par le nom de la classe
Exemple :
Classe Personne
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
9/39
{
Public static int compteur=0 ;
.}
Programme de test
Main()
{ Console.WriteLine(''Le nombre de personnes est : '' + Personne.compteur ) ;..
}.
2- Mthode de Classe:
Dfinition: Une mthode de classe ne doit pas tre envoye une instance donnede cette classe, mais plutt la classe elle-mme.
Syntaxe : Une mthode de classe est dclare par le mot-clStatic.
Exemple: La mthode GetCompteur() qui permet d obtenir le nombre d'instances declasse Client
Public Static int GetCompteur()
{ Return compteur ; }
Dans le programme de test, on utilise le nom de la classe pour faire appel aux
mthodes static.
Rsum :
Les mthodes de classe ne peuvent travailler qu'avec des variables de classe, alors
que les mthodes d'instances peuvent utiliser les deux catgories de variables- Une variable de classe (prcde du mot clef static) est partage par tous les objetsde la mmeClasse.
Une mthode de classe (prcde du mot clef static) ne peut appeler (invoquer) quedes
mthodes de classe (prcdes du mot clef static)
-Principe d'Hritage en C# :
Supposons qu'on veut crer deux classes Personne et Stagiaire de la faon suivante :Une personne a un nom, prenom et une date de naissance. Un stagiaire est unepersonne. il a aussi un numro d'inscription et une moyenne. Donc la classestagiaire hrite de la classe Personne.La classe Personne est la classe mre. La classe stagiaire est une classe fille de laclasse personne
Syntaxe :
En C# , pour indiquer la drivation (hritage) partir d'une autre classe,on utilise lesymbole deux points ':'
Dclaration : class ClasseFille : ClasseMere { }
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
10/39
signifie que la classe ClasseFille dispose de tous les attributs et de toutes les
mthodes de la classe ClasseMere.Exemple : Pour exprimer que la classe stagiaire hrite des proprits de la classe
personne, on crira :Exemple :
Public Class Stagiaire : PersonneLhritage vite la duplication et facilite la rutilisation. Une classe fille peutdfinir de nouveaux champs et de nouvelles mthodes qui lui sont propres.
Remarque : En C# lhritage multiple est interdit
1-Cration d'une classe mre
Si on utilise Private pour les attributs , ils seront invisibles pour les classes filles.
Donc,on utilise Protected (les attributs seront visibles pour la classe mre et sesclasses filles)
2-Cration d'une classe fille
- Dfinition des attributs :On dclare juste les attributs propres la classe filleExemple : Class Stagiaire:Personne {
//Attributs
Private int muninscrip ;
Private float moyenne ;
}
-Dfinition des constructeurs* Constructeur par dfaut : On utilise la mme syntaxepublic Stagiaire ()
{ }
* Constructeur d'initialisation :
public Stagiaire (string n, string p, DateTime d, int N,float M):base(n,p,d)
{ This.NumInscrip = N;
This.Moyenne=M ; }
-Dfinition des getters et des Setters : On ajoute juste les getters et les setters desattributs propres de la classe fille
Exemple :
//Get du numInsrip
Public int GetNuminscrip()
{ return this.NumInscrip ; }
Public void SetNumInscrip(int n)
{ this.NumInscrip=n ; }
-Dfinir des mthodes : Une classe fille peut dfinir des nouvelles mthodes,modifier
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
11/39
les mthodes hrites ou utiliser juste les mthodes de la classe mre
- Redfinition des mthodes dans la classe Fille : Une classe fille peut redfinir unemthode hrite.Exemple : La classe salariet la classe contractuel
La classe mre a une mthode description() qui permet de retourner la descriptiond'un salari. La classe fille, Contractuel, redfinit cette mthode de la faconsuivante :
public string description()
{ Return base. description() + "" + this.getdateContrat + " " + this.gettype ; }
Le mot clef base est utilispour accder tous les membres visibles de la classemre partir d'une classe fille drive directement de cette classe mre .
Exemple :
static void Main(){ Stagiaire s = new Stagiaire("SALIMI", "Hayat", 20, "tdi");
Console.WriteLine(s.afficheInfo());
Personne p = new Personne("ALAMI", "SOUMAYA", 20);
Console.WriteLine(p.afficheInfo());
Personne q = new Stagiaire ("DALIL", "Jalal", 23, "TRI");
Console.WriteLine(q.afficheInfo());
Console.ReadKey(); }
Lobjet q est dclare Personne mais cre Stagiaire chose qui est tout a fait correcte(voir polymorphisme). MAIS, pour le compilateur C#, q est une personne mme sielle est cre avec le constructeur de la classe Stagiaire.le compilateur se base sur la dfinition stricte de q et fait ds lors excuterafficheInfo de la classe Personne . Le compilateur na pas tenu compte du vritabletype de q qui est stagiaire .
Pour tenir compte du vritable type de q au moment dexcuter q.afficheInfo() , ilfaut :
qualifier la mthode afficheInfo de virtual dans la classe de base (Personne);
qualifier la mthode a fficheInfo de override dans la classe fille (Stagiaire).
Dans la Classe fille: OverrideIndique que cette mthode substitue une autre demme nom dans une classe de base. Le nombre et les types de donnes desarguments doivent correspondre exactement ceux de la mthode de la classe debase.
Dans la Classe mre:Virtual Indique que cette mthode peut tre substitue parune autre de mme nom dans une classe drive. Overridable est le paramtre pardfaut.
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
12/39
- Hritage Successif:Une classe peut hriter d'une classe qui en hrite d'une autre. Prenons l'exemplesuivant : C hrite de B qui hrite de A, les membres sont hrits sils sontOverridable.
Class A{Public virtual void F() { Console.WriteLine("A.F");}
Public virtual void G(){ Console.WriteLine("A.G"); }
}
Class B: A{
Public override void F(){ Console.WriteLine("B.F"); }
Public override void G(){ Console.WriteLine("B.G"); }
}
Class C :B{Public void G(){ Console.WriteLine("C.G"); }
}
- Classe Abstraite, Classe finale et Interface
1- Classe finale
Une classe est dite finale, si elle ne peut tre hrite. Pour empcher lhritage partir dune classe on ajoute le mot clsealed.
Exemple :
sealed class Stagiaire : Personne
{ . }
class Developpeur : Stagiaire //Incorrect car la classe Stagiaire est finale
{.. }
2- Classe abstraite :
Une classe est dite abstraite, si elle ne peut tre instancie. Une classe est abstraitesi elle a au moins une mthode abstraite .
Une mthode abstraite est une mthode qui na pas de corps (traitement) ,on dfinitjuste la signature (le prototype de la mthode).
Chaque classe fille doit redfinir la mthode abstraite.
abstract class A
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
13/39
{ private int i;
public A(int ai) {i = ai;}
public abstract void F(); //pas de code }
// Classe B qui hrite de A
class B : A
{public B(int i) : base(i) {}
public override void F() {Console.WriteLine("F de B "); }
}
3-Interface
Une interface contient juste les signatures des mthodes . les classes quiimplmentent cette interface doivent les implmenter.
Les interfaces constituent souvent une alternative aux classes abstraites et lhritage multiple.
On ne peut pas non plus trouver de qualificatif comme public , private ou protected
car cest la classe implmentant linterface de dcider. Si une fonction de linterface
(dont on ne donne pourtant que le prototype)
Exemple :
Interface Int1{
void m1(int a);
void m2();
}
Interface Int2{ string m3();}
class C1 : Int1 // classe C1 implmentant linterface Int1
{ // propriets et mthodes propres la classe C1
void m1(int a) { Console.WriteLine("m1 de C1 "); }
void m2() { Console.WriteLine("m2 de C1 "); } }
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
14/39
class C2 : Int1, Int2
{ // propriets et mthodes propres la classe C1
void m1(int a) { Console.WriteLine("m1 de C2 "); }
void m2() { Console.WriteLine("m2 de C2 "); }
string m3() { return "m2 de C2 "; }}
-Le principe de polymorphisme en C# :
Dfinition: Le polymorphisme est la facultdune classe prendre plusieurs formes
Le polymorphisme est la possibilitde rfrencer un objet de la classe drive avecune variable dont le type est la classe de base. Exemple: Personne p = New
Employe () ;
Le polymorphisme a pour objectifs de:
1. Prsenter plusieurs formes.2. Offrir la possibilitde considrer des instances de classes diffrentes d'un mmepoint de vue.
3. Offrir la possibilitd'envoyer des rfrences de mme type un mme message et
d'obtenir des comportements diffrents (c'est--dire ceux des objets rfrencs et nonceux des rfrences).4. Manipuler de faon homogne des objets htrognes.
On a trois types de polymorphisme :
- Le polymorphisme ad hoc: permet d'avoir des fonctions de mme nom, avec desfonctionnalits similaires, dans des classes sans aucun rapport entre elles.Exemple : la classe Int32, la classe Double et la classe Date peuvent avoir chacune
une fonction Equals
- Le polymorphisme de surcharge:Ce polymorphisme reprsente la possibilitde dfinir plusieurs mthodes de mme nom maispossdant des paramtres diffrents (en nombre et/ou en type)Exemple : Dans une classe , une mthode Cacul() , Calcul(int a)- Le polymorphisme d'hritage : Quand une classe hrite d'une autre classe, ellehrite des mthodes. On peut redfinir ou substituer une mthode de la classe mrepar une mthode de mme nom dans la classe fille. Il est alors possible d'appeler lamthode d'un objet sans se soucier de son type intrinsque: il s'agit dupolymorphisme d'hritage.
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
15/39
Exemple : AfficherInfos() dans la classe Personne et la Classe Stagiaire
-Les Collections
Dfinition : Une collection est un groupe d'lments dans laquelle il est possible
d'ajouter ou d'enlever un lment n'importe quel endroit sans avoir seproccuper de la taille de la collection, ni o se trouve l'lment. Le nombred'lment n'est pas dfini au dpart. Les lments dune collection sont reprsgrce un indice ou avec une clunique.
1-ArrayList
La ArrayList est une liste (les lments sont reprs par un indice) o on peutmettre des objets : chanes, nombres, etc. Rien n'empche que le premier lmentsoit un entier, le second une chane, etc.
Comme toute collection , une ArrayList est initialement vide. Lindice du premier
lment est 0.
Il faut utiliser le namespace : Imports System.Collections:
Syntaxede dclaration: ArrayList L = new ArrayList() ;
Accder un lment dune ArrayList : L.Item(indice) ou L(indice)
Exemple : L.Item(0) retourne la valeur du premier lment de la liste.
Mthodes But
Count correspond au nombre des lments de la liste.Add(objet) ajouter un objet la fin de la liste.Remove(objet) enlve lobjet de la liste.RemoveAt(indice) enlve lobjet qui existe lindice passen paramtre.Clear() vide la liste
Contains(objet) retourne True si la liste contient lobjet passen paramtre.Insert(indice , objet) insert un objet lindice spcifi.
-Parcourir une collection :
- Avec lindice de litem
For (i=0;i< L.Count;i++)
{ A=L.Item(i) ; }
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
16/39
- Avec foreach
Foreach(Object o in L)
A = o ;
-Avec lobjet IEnumerator (numrateur)
Un numrateur est un objet qui effectue une itration sur la collection qui lui estassocie. Il peut tre considr comme un pointeur mobile vers un lmentquelconque de la collection. On utilise deux mthodes pour un numrateur
MoveNext : avance d'un lment dans la collection. S'il ne peut plus avancer (s'ilest djaprs le dernier) il retourne False.
Current : dsigne llment courant.
ArrayList L = new ArrayList() ;
IEnumerator C= L.GetEnumerator() ;
While (C.MoveNext())
{ A = C.Current;}
2- La classe Hashtable
La HashTable est un dictionnaire (les lments sont reprs par une cl) quicomporte des paires cl-valeur. Ces couples sont de type Objet-Objet.
Comme toute collection, une hashTable est initialement vide.
La cltoujours unique (c.--d. deux lments de la HashTable ne peuvent avoir lamme cl).
Elle permet de retrouver la valeur et ne doit pas tre vide.
La classe Hashtable permet d'implmenter un dictionnaire. On peut voir undictionnaire comme un tableau deux colonnes :
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
17/39
- Syntaxe de cration dune HashTable : HashTable ht = new HashTable() ;
- Pour avoir le nombre de paires cl/valeur contenues dans Hashtable. : ht.Count() ;
- Pour avoir la liste des cls de ht : ht.keys;
- Pour avoir la liste des valeurs de ht : ht.values;
- Accder un lment dune HashTable : ht.Item(cl)
Mthode But
H.Add(Cl,aleur! A"ou#e un l$en#H.I#e$(Cl! Re#ourne l%l$en# &orrespondan# ' une &l.
H.Con#ainse)(Cl! Re#ourne True si la Cl es# dans la #able.
H.Con#ainsalues(aleur!Re#ourne True si la *aleur es# dans la #able.H.Clear E++a&e #ous les l$en#s
H.Re$o*e(Cl! Suppri$e l%l$en# a)an# une &l sp&i+ie.
Exemple :
' Creation d'une Hashtable.
HashTable myHt = new HashTable() ;
'Mettre des lments dans la HashTable
myHT.Add("un", "premier")
myHT.Add("deux", "second")
myHT.Add("trois", "troisime")
myHT.Add("quatre", "quatrime")
'Recherche la valeur correspondant la cl"trois"
myReponse=myHT.Item("trois") 'Retourne "troisime"
-Parcourir une HashTable :
- Avec foreach : on parcourt la collection des cls
foreach (DictionaryEntry de in myHT )
Console.WriteLine( "\t CLE : " + de.Key + "\t VALEUR: " +de.Value );
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
18/39
- Lnumrateur :
IDictionaryEnumerator e= myHT.GetEnumerator() ;
While (e.MoveNext())
{ 'Afficher clet valeur
Console.WriteLine( e.Key+ e.Value) ;
}
-Gestion des Exceptions
Dfinition :Une Exception est une erreur qui se produit dans un programme et qui conduit le
plus souvent l'arrt de celui-ci. Autrement dit, Une exception est une erreurd'excution.
En C#, L'exception est une classe, qui si une erreur d'excution se produit, vagnrer un objet d'un type en rapport avec l'erreur.
1- Capture des exceptions :
Aprs avoir crit une routine, il est toujours souhaitable de penser aux exceptionsque la routine pourrait provoquer (erreurs anticipes), aux exceptions inattenduesque la routine pourrait gnrer (erreurs non anticipes) et toutes les rgles mtier
que la routine pourrait violer (violations de rgles mtier ).
Exemple : je veux que l'utilisateur saisie un age 18
* Erreur anticip:saisie nom valide (sting, n'importe quoi..)* Erreur non anticip: ?* Violation des rgles mtier : saisie d'une valeur
5/22/2018 Poly Copie Poo
19/39
Si une exception intervient dans le bloc Try, le bloc Catch capture l'exception et le
code l'intrieur du bloc Catch s'excute
Remarque : Types des exceptions prdfinies
Nom du Type Nature de l'erreur
NullRe+eren&eE&ep#ion Le*e lors-ue *ous essa)e de r+ren&er un ob"e# don# la *aleur es#
nulle./i*ide0)ZeroE&ep#ion Le*e ' l%o&&asion d%une #en#a#i*e de di*ision d%une *aleur in#1rale par
ro.
Inde2u#2+Ran1eE&ep#ion Indi&e en3de4ors d%un #ableauAri#4$e#i&E&ep#ion Classe de base pour les e&ep#ions -ui se produisen# pendan# des
opra#ions ari#4$#i-ues
3- le bloc FinallyOn peut ajouter la structure try catch un bloc Finally, qui indique desinstructions excuter quel qu'il soit le cas pass, qu'une erreur soit survenue ounon :
Try
{
instructions susceptibles de provoquer une erreur
}
Catch (TypedException variable){ instructions excuter en cas d'erreur}
Finally
{ instructions finales excuter dans tous les cas}
Le code dans le bloc Finally sera excutaprs l'excution complte du bloc Try,aprs l'excution du bloc Catch, ou aprs l'excution de toutes instructions Returndans les blocs Try ou Catch. Tout code qui a besoin d'tre excutavant de quitter laroutine doit tre ajoutau bloc Finally.
4-Crer une Exception personnalise :Pour crer une exception; On va donc crer une classe qui hrite la classe Exception.
Public Class NomNouvelleException : Exception
{ //On peut ajouter un constructeur
public NomNouvelleException(string message):base(message) {}
}
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
20/39
5-Lever une exception:Throw
L'instruction throw permet de gnrer une exception. Pour l'utiliser, il faut luifournir une rfrence vers un objet de type Exception. Exemple:Try
{
Int a ;a=int.Parse(Console.ReadLine()) ;
if(a==0)
Throw new NonPositiveException(''Valeur nulle'') ;
}
catch(NonPositiveException ex)
{
Console.WriteLine(''Erreur :''+ex) ;
}
-Utiliser les fichiersLa manipulation de fichiers peut tre utile dans la ralisation d'applications .Net, ilest trs frquent d'avoir besoin de stocker des informations dans un fichier.
le Framework. Net possde toutes les classes ncessaires la ralisationd'oprations de bases voir mme dautres oprations plus complexes. On prcise quel'espace de noms concernest System.IO, on doit donc l'importer pour utiliser sesdiffrentes classes. Pour cela, il faut ajouter cette ligne de code : using System.IO
System.IO permet la lecture et l'criture de fichiers et de flux de donnes.On va utiliser deux classes de l'espace de noms System.IO : StreamReader et
StreamWriter.
1-Lecture d'un fichier
* On doit utiliser un objet de la classe streamreader :
StreamReader monSR= New StreamReader("a.txt" ) ;
* Pour la lecture dune ligne dun fichier , on utilise la mthode read ou readline :
console.writeline( monsr.readline)
* Pour la lecture du fichier (toute les lignes), on peut utiliser une boucle
* A la fin, on doit fermer le streamreader: monsr.close
Exemple :
Code permettant la lecture du contenu d'un fichier texte :
StreamReader msr= New StreamReader("a.txt" ) ;
String ligne ;
do{
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
21/39
ligne = monSR.ReadLine() ;
Console.WriteLine(ligne) ;
Console.Write("") ;
}while( ligne!=null) ;
monSR.Close() ;
2- Ecriture sur un fichier
On doit utiliser un objet de la classe streamWriter
* Cration dun objet de la classe streamWriter : StreamWriter monSw = NewstreamWriter("a.txt" ) ;
* criture dune ligne sur un fichier , on utilise la mthode write ou writeline:monsw.writeline( console.readline)
* On peut crire plusieurs lignes dans le fichier
* A la fin, on doit fermer lestreamWriter:monsw.close
Exemple :
StreamWriter monSW= New StreamWriter("a.txt")
monSW.WriteLine("Ma toute premire ligne...") ;monSW.WriteLine("Ma seconde ligne...") ;
monSW.WriteLine("Ma troisime ligne...") ;monSW.Close() ;
3- Importer les informations d'un fichier
on suppose que chaque ligne du fichier contient les infos d'un seul objet sparespar ;
Code :
StreamReader sr=new StreamReader(''a.txt'') ;
String[] t ;
t=sr.ReadLine().Split('' ;''.ToCharArray()) ;
Formateur f1=new Formateur() ;
F1.setMatricule(int.Parse(t[0])) ;
F1.setnom(t[1]) ;
F1.setprenom(t[2]) ;
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
22/39
F1.setechelle(int.Parse(t[3])) ;
Console.WriteLine(f1.ToString()) ;
Remarque : pour lire plusieurs lignes, utiliser une boucle.
Annexes : Exemples de classes
Exemple : classe simple avec les proprits +attributet mthode static
programme de test
class Stagiaire
{
private int _m;
private string _n, _p, _f;
private double _n1, _n2, _n3;
private static int i = 0;
public Stagiaire()//EX2-1:
{
i++;
this._m = i;
}
public Stagiaire(string a,string b,string c)
{
this._n = a; this._p = b;
this._f = c;
i++;
}
//les proprietes
public int m
{
get
{
return this._m;
}
set
{
this._m = value;
}
}
public string n
{
get
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
23/39
{
return this._n;
}
set
{
this._n = value; }
}
public string f
{
get
{
return this._f;
}
set
{ this._f= value;
}
}
public string p
{
get
{
return this._p;
}
set
{
this._p = value;
}
}
public double n1
{
get
{
return this._n1; }
set
{
this._n1 = value;
}
}
public double n2
{
get
{
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
24/39
return this._n2;
}
set
{
this._n2 = value;
} }
public double n3
{
get
{
return this._n3;
}
set
{
this._n3 = value; }
}
public int Geti()
{
return i;
}
public static void RAZ()
{
i = 0;
}
public bool EQUAL(Stagiaire x)//methode de comparaison
{
bool z;
if (this.m == x.m)
{
z = true;
}
else
{ z = false;
}
return z;
}
public double CALCUL()//methode pour calculer la moyenne
{
return (this.n1 + this.n2 + this.n3) / 3;
}
public void afficher()// methode d'affichage
{
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
25/39
Console.WriteLine("les infos de stagiaire sont :");
Console.WriteLine("Matricule:" + m);
Console.WriteLine("Nom:" + n);
Console.WriteLine("Prenom:" + p);
Console.WriteLine("Filiere:" + f);
Console.WriteLine("Note1:" + n1); Console.WriteLine("Note2:" + n2);
Console.WriteLine("Note3:" + n3);
}
}
//Programme de test
static void Main(string[] args)
{
Stagiaire s1=new Stagiaire(), s2=new Stagiaire(),s3=new Stagiaire(),s4=new
Stagiaire();
//remplissage des infos de chaque stagiaires s1.m = 1;
s1.n = "karami";
s1.p = "Loubna";
s1.f=s2.f="TDI";
s2.m = 2;
s2.n = "Jamal";
s2.p = "Youssef";
s3.m = 3;
s3.n = "Ilham";
s3.p = "Fayrouz";
s3.f = "TRI";
s3.n1 = 12;
s3.n2 = 13;
s3.n3 = 15;
s1.afficher();
Console.WriteLine("================================ :");
s2.afficher();
Console.WriteLine("================================ :");
s3.afficher(); Console.WriteLine("la moyenne:" + s3.CALCUL());
Console.WriteLine("================================ :");
s4.m = 4;
s4.afficher();
Console.WriteLine("================================ :");
Stagiaire.RAZ();
Stagiaire s5=new Stagiaire();
s5.n = "karami";
s5.p = "Loubna";
s5.f = "TDI";
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
26/39
s5.n1 = 13;
s5.n2 = 14;
s5.n3 = 12;
s5.afficher();
Console.WriteLine("la moyenne:" + s5.CALCUL());
Console.WriteLine("================================ :"); if (s1.EQUAL(s5) == true)
{
Console.WriteLine("les deux stagiaires:1 et 5 sont les mme"); }
else
{
Console.WriteLine("les deux stagiaire:1 et 5 sont diffrant"); }
Console.ReadLine();
}
Exemple : Classe Point et classe Vecteur et un main avec Menu
class Point
{
private double x;
private double y;
public Point()
{ }
public Point(double a, double b)
{
this.x = a;
this.y = b;
}
public void SetX(double a)
{
this.x = a;
}
public void SetY(double b)
{
this.y = b;
}
public double GetX()
{
return this.x;
}
public bool Identique(Point a)
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
27/39
{
bool c;
if (this.x == a.GetX() && this.y == a.GetY())
{
c = true;
} else
{
c = false;
}
return c;
}
public bool symetric(Point a)
{
bool k;
if (Math.Abs(this.x) == Math.Abs(a.GetX()) || Math.Abs(this.y) ==Math.Abs(a.GetY()))
{
k = true;
}
else
{
k = false;
}
return k;
}
public void trans(double dx,double dy)
{
this.x = this.x + dx;
this.y = this.y + dy;
}
public double GetY()
{
return this.y;
} public void Afficher()
{
System.Console.WriteLine("X= " + x);
System.Console.WriteLine("Y= " + y);
}
}
//
class GeoVecteur
{
private Point ExtremiteA;
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
28/39
private Point ExtremiteB;
bool i;
public GeoVecteur()
{
}
public GeoVecteur(Point a,Point b) {
this.ExtremiteA = a;
this.ExtremiteB= b;
}
public void SetExtremiteA(Point a)
{
this.ExtremiteA = a;
}
public void SetExtremiteB(Point b)
{ this.ExtremiteB = b;
}
public Point GetExtremiteA()
{
return this.ExtremiteA;
}
public Point GetExtremiteB()
{
return this.ExtremiteB;
}
public string Afficher()
{
return "ExtremiteA:[ " + ExtremiteA.GetX() + "," + ExtremiteA.GetY() + "]"+
" ExtremiteB:[ " + ExtremiteB.GetX() + "," + ExtremiteB.GetY() + "]";
}
public double longueur()
{
return Math.Pow(this.ExtremiteA.GetX() - this.ExtremiteB.GetX(),2) +Math.Pow(this. ExtremiteA.GetY()-this.ExtremiteB.GetY(),2);
}
}
}
//Programme de Test :
static void Main(string[] args)
{
GeoVecteur g = new GeoVecteur();
double Xa;
double Ya;
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
29/39
double Xb;
double Yb;
int op;
double dx, dy;
Point m1, m2;
System.Console.WriteLine("donner les coordonnes de l'extremite A:[Xa,Ya]"); Xa = System.Convert.ToDouble(System.Console.ReadLine());
Ya = System.Convert.ToDouble(System.Console.ReadLine());
m1 = new Point(Xa, Ya);
System.Console.WriteLine("donner les coordonnes de l'extremite B:[Xb,Yb]");
Xb = System.Convert.ToDouble(System.Console.ReadLine());
Yb = System.Convert.ToDouble(System.Console.ReadLine());
m2 = new Point(Xb, Yb);
g.SetExtremiteA(m1); g.SetExtremiteB(m2);
do
{
Console.WriteLine("===========================================
=============================");
Console.WriteLine("1-tester si les point sont identique 2-tester si les point
sont symetric ");
Console.WriteLine("3-affichage 4-appliquer une translation 5-afficher la
longueur 0-Quiter");
Console.WriteLine("===========================================
=============================");
op=Convert.ToInt32(Console.ReadLine());
switch (op)
{
case 1:
if (m1.Identique(m2) == true)
{
Console.WriteLine(" ==> les points sont egaux"); }
else
{
Console.WriteLine(" ==> les points non egaux");
}
break;
case 2:
if (m1.symetric(m2) == true)
{
Console.WriteLine(" ==> les points sont symetric");
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
30/39
}
else
{
Console.WriteLine(" ==> les points non symetric");
}
break; case 3:
Console.WriteLine(g.Afficher());
break;
case 4:
Console.WriteLine("donner le valeur de translation:[dx,dy]");
dx = System.Convert.ToDouble(System.Console.ReadLine());
dy = System.Convert.ToDouble(System.Console.ReadLine());
m1.trans(dx, dy);
m2.trans(dx, dy);
Console.WriteLine("apres translation:" + g.Afficher()); break;
case 5:
System.Console.WriteLine("Le longeur est : " + g.longueur());
break;
case 0:
break;
default:
System.Console.WriteLine("cette operation n'existe pas");
break;
}
}while(op!=0);
System.Console.ReadLine();
}
Exemple : Hritage et Polymorphisme
class Client
{
protected int numC;
protected string nom;
protected string prenom;
protected string adresse;
public Client()
{
}
public Client(int n, string no, string p, string a)
{
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
31/39
this.numC = n;
this.nom = no;
this.prenom = p;
this.adresse = a;
}
public int getnum() {
return this.numC;
}
public string getnom()
{
return this.nom;
}
public string getprenom()
{
return this.prenom; }
public string getadresse()
{
return this.adresse;
}
public void setnum(int n)
{
this.numC = n;
}
public void setnom(string no)
{
this.nom = no;
}
public void setprenom(string p)
{
this.prenom = p;
}
public void setadresse(string a)
{ this.adresse = a;
}
public bool Equals(Client C)
{
if (this.getnum() == C.getnum() && this.getnom() == C.getnom() &&
this.getprenom() == C.getprenom() && this.getadresse() == C.getadresse())
{
return true;
}
else
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
32/39
{
return false;
}
}
public override string ToString()
{ return "le numero de client:" + this.getnum()+"\nle nom:"+this.getnom()
+"\nle prenom:"+this.getprenom()+"\nadresse:"+this.getadresse();
}
}
//Classe fille
class ClientR:Client
{
private string RaisonSocial;
public ClientR()
{ }
public ClientR(int n, string no, string p, string a, string r)
: base(n, no, p, a)
{
this.RaisonSocial = r;
}
public string getRaisonSocial()
{
return this.RaisonSocial;
}
public void setRaisonSocial(string r)
{
this.RaisonSocial = r;
}
public override string ToString()
{
return base.ToString()+ "Raison Social:" + this.getRaisonSocial();
} public string verifiernom(ClientR C)
{
if(this.getnom()==C.getnom())
{
return "les deux clients ayant le meme nom";
}
else
{
return "les deux client sont differants";
}
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
33/39
}
public bool verifiernom(string n)
{
if (this.getnom()==n)
{
return true; }
else
{
return false;
}
}
}
//Programme de Test
static void Main(string[] args) {
ClientR C = new ClientR();
ClientR V = new ClientR();
Console.WriteLine(" Donner les Infos de Client 1 [ Num
,nom,prenom,adrese,Raison Social ]");
C.setnum(int.Parse(Console.ReadLine()));
C.setnom(Console.ReadLine());
C.setprenom(Console.ReadLine());
C.setadresse(Console.ReadLine());
C.setRaisonSocial(Console.ReadLine());
Console.WriteLine(" Donner les Infos de Client 2 [ Num
,nom,prenom,adrese,Raison Social ]");
V.setnum(int.Parse(Console.ReadLine()));
V.setnom(Console.ReadLine());
V.setprenom(Console.ReadLine());
V.setadresse(Console.ReadLine());
V.setRaisonSocial(Console.ReadLine());
Console.WriteLine(" ============== Les Infos Client 1 ============");
Console.WriteLine(C.ToString()); Console.WriteLine(" ============== Les Infos Client 2 ============");
Console.WriteLine(V.ToString());
Console.WriteLine(" ============== Comparaison ============");
if (C.Equals(V) == true)
{
Console.WriteLine("les deux client sont identique");
}
else
{
Console.WriteLine("les deux client sont differants");
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
34/39
}
if (C.verifiernom(V.getnom()))
{
Console.WriteLine("les deux clients ayant le meme nom");
}
else {
Console.WriteLine("les deux client ayant differant nom");
}
Console.ReadLine();
}
Exemple : Hashtable+Menu
static void Main(string[] args)
{ Hashtable h = new Hashtable();
int k;
int drap = 0;
do
{
Console.WriteLine("1:ajouter un element");
Console.WriteLine("2:le nombre des element");
Console.WriteLine("3:accede un element");
Console.WriteLine("4:supprimer un element");
Console.WriteLine("5:rechercher un element"); Console.WriteLine("6:vider un HashTable");
Console.WriteLine("7:Quitter");
Console.WriteLine("donner votre choix");
k = int.Parse(Console.ReadLine());
switch (k)
{
case 1:
h.Add(1, "safi");
h.Add(2, "agadir"); h.Add(3, "marrakech");
h.Add(4, "tanger");
h.Add(5, "rabat");
drap = 1;
foreach (DictionaryEntry de in h)
Console.WriteLine("cle: " + de.Key + " , valeur :" + de.Value);
break;
case 2:
Console.WriteLine("est :"+ h.Count);
break;
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
35/39
case 3:
int c;
c = int.Parse(Console.ReadLine());
Console.WriteLine("la ville est " + h[c]);
break; case 4:
int s;
s = int.Parse(Console.ReadLine());
h.Remove(s);
foreach (DictionaryEntry de in h)
Console.WriteLine("cle: " + de.Key + " , valeur :" + de.Value);
break;
case 5: Console.WriteLine("donner votre le numero de cle rechercher");
int a;
a = int.Parse(Console.ReadLine()); if (h.ContainsKey(a))
Console.WriteLine("le cle existe");
else
{
Console.WriteLine("le cle n'existe pas");
}
Console.WriteLine("donner votre la valeur rechercher");
string e;
e = Console.ReadLine();
if (h.ContainsValue(e))
Console.WriteLine("la valeur existe");
else
Console.WriteLine("la valeur n'existe pas");
break;
case 6:
if (drap == 1)
h.Clear();
else Console.WriteLine("l'HashTable est deja vide");
break;
case 7: Console.WriteLine("Quiter");
break;
default: Console.WriteLine("erreur");
break;
}
}
while (k != 7);
Console.ReadLine();
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
36/39
}
Exemple : Hashtable comme attribut
class etudiant
{
//attributs private int NumI;
private string nom;
private string prenom;
private DateTime daten;
//constructeur par dfaut public etudiant()
{
}
//constructeur d'initialisation
public etudiant(int N, string n, string p, DateTime d)
{
this.NumI = N;
this.nom = n;
this.prenom = p;
this.daten = d;
}
//getters
public int getNumI()
{ return this.NumI;
}
public string getnom()
{
return this.nom;
}
public string getprenom()
{
return this.prenom;
} public DateTime getdaten()
{
return this.daten;
}
//setters
public void setNumI(int N)
{
this.NumI = N;
}
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
37/39
public void setnom(string n)
{
this.nom = n;
}
public void setprenom(string p)
{ this.prenom = p;
}
public void setdaten(DateTime d)
{
this.daten = d;
}
//mthode public override string ToString()
{
return "le num d'inscription " + this.getNumI() + " , le nom :" + this.getnom()+ " , le prenom :" + this.getprenom() + "la date :" + this.getdaten();
}}
//classe avec attribut Hashtable
class classeEt
{
//attribut
private Hashtable listeEtudiant = new Hashtable();
//constructeur par defaut
public classeEt()
{
}
//constructeur d'initialisation
public classeEt(Hashtable l)
{
this.listeEtudiant = l;
}
//getters
public Hashtable getlisteEtudiant() {
return this.listeEtudiant;
}
//methode
public void ajouteE(etudiant e)
{
this.listeEtudient.Add(e.getNumI(),e);
}
public void supprimerE(int n)
{
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI
5/22/2018 Poly Copie Poo
38/39
this.listeEtudiant.Remove(n);
}
public override string ToString()
{
string res = " ";
foreach (DictionaryEntry i in this.listeEtudiant) {
res += "infos de l'etudiant :" +((etudiant) i.Value).ToString();
}
return res;
}
Exemple : utiliser les exceptions
class Etudiant
{
private int numero;
private DateTime date;
public Etudiant()
{ }
public Etudiant(int n, DateTime d)
{ this.numero = n;
this.date = d;
} public void setnumero(int n)
{ this.numero = n; }
public int getnumero()
{ return this.numero; }
public void setdate(DateTime d)
{ this.date = d; }
public DateTime getdate()
{ return this.date; }
public void VerifierAge()
{
int age=(DateTime.Now.Year)-(this.getdate().Year);
if(age
5/22/2018 Poly Copie Poo
39/39
public NegatifException(string message)
: base(message)
{ }
}
//Programme de test
Console.WriteLine("donner les info [ numero , DateNaissance jj/mm/aaaa ]"); Etudiant e = new Etudiant(int.Parse(Console.ReadLine()),
DateTime.Parse(Console.ReadLine()));
try
{
e.VerifierAge();
}
catch (NegatifException ex)
{
Console.WriteLine("ereur "+ex);
}
Cours propos par : ELGARRAI Zineb ISTA NTIC SAFI