Académique Documents
Professionnel Documents
Culture Documents
com
I. Introduction II. Dfinition d'une classe III. Constructeurs et destructeur IV. Instanciation V. Exemple VI. Mthodes et variables de classe VII.Hritage VIII.Classe et mthodes abstraites IX. Les classes sealed X. Les mthodes virtual XI. Classes .NET d'usage courant XII.La gestion des erreurs XIII.Srialisation et Desrialisation dobjets XIV.Les interfaces XV.Le polymorphisme XVI.Les namespace
Programmation Oriente Objet en C# 2
I. Introduction Notion dObjet Les objets reprsentent la notion fondamentale pour comprendre la technologie de lorient objet. Dans la nature, tout est objet: arbres, montagnes, maisons, avions, voitures. Tous les objets du monde rel partagent deux caractristiques fondamentales: ils ont tous un tat (attributs ou proprits) et un comportement. -L tat permet de dcrire un objet dans son aspect statique ou dynamique. -Le comportement renseigne les actions quun objet peut faire ou subir et qui peuvent tre lorigine dun changement dtat.
Programmation Oriente Objet en C# 3
La Programmation Oriente Objet (POO) La programmation oriente objet consiste crire des programmes informatique bass sur la dfinition et lutilisation dobjets. Les objets logiciels sont similaires aux objets du monde rel: Dans un programme informatique, un objet possde un tat dfini dans des variables et un comportement dfini dans des mthodes ou fonctions.
Notion de Classe Une classe est une unit du code (programme) dans lequel on dfini un objet. Chaque classe possde un nom, un dbut, une fin et contient des variables (tat de lobjet) et des mthodes (comportement de lobjet). Une classe est donc un moule partir duquel sont construits des objets.
Reprsentation schmatique dune classe Nom de la classe Attributs ou proprits de la classe
Mthodes de la classe
Variables membres: Syntaxe gnrale de dclaration d'une variable : [Modificateur _d_accs] Type nom_de_variable ; On peut citer trois catgories de variables: Variables dclares dans une classe: reprsentent les attributs ou proprits de la classe Variables dclares dans une mthode: variables locales. Variables faisant partie de la dclaration dune mthode: appeles paramtres de la mthode.
Toute variable doit avoir un type (exception pour var). Le type peut tre un type valeur ou primitif (int, bool, double) Comme il peut tre un type rfrence (class, interface, delegate)
Mthodes membres: Syntaxe gnrale de dclaration d'une mthode : [Modif_accs] Type_retourn Nom_de_la_mthode(Liste_paramtres ) { // instructions de la mthode } Une mthode est un sous programme identifi par un nom, pouvant recevoir ou non des paramtres et ayant ou non un type de retour (si la mthode ne
retourne aucune valeur le type de retour est void). Chaque mthode est caractrise par sa signature. La signature est constitue du nom de la mthode et la liste de ses paramtres. La surcharge de mthode consiste dfinir plusieurs mthode qui ont le mme nom mais qui diffrent par le type et le nombre de paramtres
Modificateurs daccs:
Les modificateurs daccs dterminent si dautres classes peuvent utiliser un attribut ou invoquer une fonction (principe dencapsulation). Dans C# les modificateurs d'accs permettent de spcifier les cinq niveaux d'accessibilit suivants : public : l'accs n'est pas restreint. protected : l'accs est limit la classe conteneur ou aux types drivs de la classe conteneur. Internal : l'accs est limit l'assembly actuel. protected internal : l'accs est limit l'assembly actuel ou aux types drivs de la classe conteneur. private : l'accs est limit au type conteneur.
Les accesseurs ou (Proprits) Les proprits sont des membres offrant un mcanisme souple pour la lecture, l'criture ou le calcul des valeurs de champs privs. Elles peuvent tre utilises comme si elles taient des membres de donnes publiques, mais en fait, ce sont des mthodes spciales appeles accesseurs. Elles facilitent l'accs aux donnes tout en prservant la scurit et la souplesse des mthodes. Syntaxe gnrale de dclaration d'un accesseur : public type_attribut nom_proprit { get { return valeur; } set { . .. nom_attribut = value ; } Programmation Oriente Objet en C# }
10
III. Constructeurs et destructeur Un constructeur est la premire mthode appele lors de la cration (instanciation) dun objet. -Une classe peut avoir plusieurs constructeurs qui diffrent par leurs paramtres -Un constructeur par dfaut est cr automatiquement Un destructeur est une mthode sans paramtres appele automatiquement lors de la destruction de lobjet (rarement utilis)
Syntaxe gnrale de dclaration d'un constructeur : public Nom_de_la_classe(Liste_paramtres ) { // instructions de la mthode }
11
Linstanciation est lopration qui consiste crer une instance (exemplaire) dun objet partir de sa classe. Pour crer un objet, on instancie une classe en appelant l'oprateur new. Celui ci appelle le constructeur adquat. Un objet est une variable ayant pour type celui de sa classe
Syntaxe gnrale de dclaration et instanciation dun objet : [Modificateur _d_accs] nom_classe nom_variable= new nom_classe() ; On peut egalement dclarer un objet et linstancier aprs :
12
V. Exemple: Partie I
Soit un objet Avion caractris par les attributs: marque, modle, vitesse maximale, altitude maximale, vitesse en cours et altitude en cours. Un avion peut dcoller, atterrir, voler 1. Ecrire le code de la classe Avion 2. La classe Avion possde deux constructeurs: -Un constructeur par dfaut permettant dinitialiser tous les attributs -Un constructeur recevant trois paramtres pour initialiser la marque, la vitesse maximale et laltitude maximale 3. La mthode decoller() augmente la vitesse_en_cours de 10 sans dpasser la vitesse maximale. Elle augmente laltitude en cours de 200 quand la vitesse en cours est >=300 sans dpasser laltitude maximale. 4. La mthode atterrir fait linverse
13
Nom de la classe
14
15
16
17
VII. Hritage
Certains objets ont des attributs ou des mthodes en commun. Ces proprits et ces mthodes sont dfinis dans une classe mre partir de laquelle on drive les autres classes. Le fait de driver une classe partir dune classe de base permet la classe drive dhriter les attributs et les mthodes dclares public ou protected La programmation oriente objet permet des classes dhriter ltat et le comportement dautres classes.
18
19
Exemple
Mq
Avion
Avion_de_ligne
nombre_de_places nombre_de_voyageur
embarquer_voyageur() embarquer_voyageur(int n) debarquer_voyageur(int n) debarquer_tout()
type_armes quantite
charger_armes(int q) bombarder()
Programmation Oriente Objet en C#
20
21
Mthode abstraite: abstract Les classes abstraites peuvent galement dfinir des mthodes abstraites. Une mthode abstraite est une mthode qui doit tre rcrite et redfinie dans les classes drives. Les mthodes abstraites n'ont pas d'implmentation. Ainsi, la dfinition de la mthode est suivie d'un point-virgule au lieu d'un bloc de mthode normal. Les classes drives de la classe abstraite doivent implmenter toutes les mthodes abstraites en utilisant le mot override. Les dclarations de mthodes abstraites sont autorises uniquement dans les classes abstraites.
Syntaxe gnrale de dclaration dune mthode abstraite :
public abstract nom_de_la_methode(..parametres..);
22
Exemple
Mthodes abstraites
Figure
nom couleur_trait couleur_remplissage abstract surface() abstract perimetre() abstract tracer_figure()
Classe abstraite
Cercle
rayon
surface() perimetre() tracer_figure()
Lorsqu'il est appliqu une classe, le modificateur sealed empche les autres classes d'en hriter . Une classe dclare avec sealed ne peut pas tre utilise dans une relation dhritage. On peut galement utiliser le modificateur sealed sur une mthode ou une proprit qui substitue une mthode ou une proprit virtuelle dans une classe de base. Cela permet d'autoriser les classes driver de votre classe et de les empcher de substituer des mthodes ou des proprits virtuelles spcifiques.
25
-Pour accder aux mthodes static utiliser le nom de la classe (c a d String) -Pour accder aux mthodes dinstance utiliser le nom de la variable de type string
26
On notera un point important : lorsqu'une mthode rend une chane de caractres, celle-ci est une chane diffrente de la chane sur laquelle a t applique la mthode. Ainsi S1.Trim() rend une autre chane diffrente de S1.
Une chane C peut tre considre comme un tableau de caractres. Ainsi C[i] est le caractre i de C C.Length est le nombre de caractres de C 2.Les tableaux: La classe Array
Les tableaux drivent de la classe Array :
28
La classe Dictionary<TKey,TValue>
La classe System.Collections.Generic.Dictionary<TKey,TValue> permet d'implmenter un dictionnaire. On peut voir un dictionnaire comme un tableau deux colonnes :
cl valeur cl1 valeur1 cl2 valeur2 .. ...
Dans la classe Dictionary<TKey,TValue> les cls sont de type Tkey, les valeurs de type TValue. Les cls sont uniques, c.a.d. qu'il ne peut y avoir deux cls identiques. Lors de son dclaration Tkey et TValue peuvent tre de type quelconque Syntaxe gnrale de dclaration dun Dictionary :
Dictionary<nom_type_cl, nom_type_valeur> nom_liste=new Dictionary<nom_type_cl, nom_type_valeur> ();
29
Exemple: dclaration dun Dictionary nomme lp contenant des objets Pays ayant comme cl le nom du pays
Un Dictionary peut tre manipul comme un tableau. Ainsi on peut accder un lment par la valeur de sa cl et non par son indice. Exemple: Lp["Finland" ] renvoi le pays ayant dans la valeur de la cl Finland
30
La classe ArrayList
Syntaxe gnrale de dclaration dun objet ArrayList :
31
Exemple dun programme qui cre 100 objets de type Pays et les stock dans une collection ArrayList: .. Pays p; ArrayList lp=new ArrayList(); int i; for(i=1;i<=100;i++) { p=new Pays(); // instanciation dun pays p.nom= pays + i; lp.Add(p); //Ajout la collection }
32
Extraction et affichage des pays stocks dans la collection ArrayList: .. int i; Pays p; for(i=0;i<lp.count;i++) { p=(Pays)lp[i]; // extraction dun pays de la collection //noter lutilisation dun cast (Pays) Console.Write(p.nom); } La classe HashTable
Permet de crer des collection sous forme de cl et dune valeur .
33
Toutes les collections offrent des mthodes permettant de manipuler leurs lments savoir: ajouter, inserer, supprimer
4.Les classes Math et Random
a. La classe Math Toute une srie de fonctions mathmatiques sont regroupes dans la classe Math de lespace de noms System. Cette classe Math contient notamment : la dnition de deux constantes, toutes deux de type double : Math.E pour la valeur du nombre nprien ( 2.718...) et Math.PI pour la valeur du nombre Pi (3.1415...) ; des fonctions de calcul mathmatique : calcul de puissance, fonctions trigonomtriques, etc. Les constantes et fonctions de cette classe sont qualies de static, ce qui permet de les utiliser sans devoir crer un objet Math.
Programmation Oriente Objet en C# 34
a. La classe Random
La classe Random contient les fonctions ncessaires la gnration de nombres alatoires. Cette classe possde une mthode nomme Next ayant trois surcharges, permettant de gnrer un nombre alatoire. . Next(): retourne un nombre alatoire entre zro inclus et la limite suprieur dun int. . Next(int n): retourne un nombre alatoire entre zro inclus et infrieur au nombre pass en paramtre. . Next(int n1, int n2): retourne un nombre alatoire >= n1 et < n2.
35
La structure DateTime permet deffectuer diverses oprations sur les dates : dterminer le jour de la semaine, calculer une date x jours, dterminer si une date est antrieure ou postrieure une autre, etc. Un objet DateTime peut contenir une date comprise entre le premier janvier de lan un midi et le 31 dcembre 9999. Il comprend la fois une date et une heure avec accs la milliseconde. On parle de classe DateTime bien quil sagisse plus prcisment dune structure.
a. La structure TimeSpan
La structure TimeSpan intervient dans les calculs sur dates (plus prcisment dans les intervalles entre dates). Ici aussi, nous parlons de classe alors quil sagit plus prcisment dune structure.
36
6.Classes de manipulation de fichiers, dossiers Toutes les classes permettant de manipuler les fichiers et les dossiers Existent dans le namespace System.IO
37
38
try{ code susceptible de gnrer une exception } catch (Exception e){ traiter l'exception e } instruction suivante
Programmation Oriente Objet en C# 39
Exemple:
static void Main(string[] args) { int age = 0; Console.WriteLine("Quel ge avez-vous?"); //code risque try { age = int.Parse(Console.ReadLine()); Console.WriteLine("Vous avez donc " + age + " ans"); } //Le code plac ici s'execute si une exception est leve catch { Console.WriteLine("Dsol vous devez crire un nombre!"); } finally { Console.WriteLine("\n*** Merci de votre visite ***"); } Console.ReadLine(); Programmation Oriente Objet en C# }
40
[Serialiasable()]
Si on ne veut pas srialiser certaines attributs de la classe on
41
Le mot [Serialiasable()] indique que les objets crs partir de cette classe peuvent tre srialiss Lattribut agence est marqu comme tant non srialis
Programmation Oriente Objet en C# 42
b. Srialisation
Dans le corps du programme, il faut mettre:
La srialisation se fera dans un fichier qui doit tre cr. Pour cela on utilise la classe Stream et la classe File toutes les deux appartiennent System.IO Pour enregistrer lobjet dans un format binaire on utilise la classe BinaryFormatter qui appartient System.Runtime.Serialization.Formatters.binary
43
Pour dserialiser notre objet on peut utiliser le programme suivant: Compte cp; //dclaration dun Compte objet compte
if (File.Exists("c:\\compte.bin"))// on teste si le fichier existe { Stream fc = File.OpenRead("c:\\compte.bin");// ouverture du fichier BinaryFormatter bf = new BinaryFormatter(); // cration dun objet // formateur binaire nom bf cp = (Compte)(bf.Deserialize(fc));// dserialisation MessageBox.Show(cp.nom_proprietaire + cp.solde.Tostring() fc.Close(); .. }
45
46
47