Vous êtes sur la page 1sur 47

www.madness-madman.hooxs.

com

Programmation Oriente Objet en C#

Programmation Oriente Objet en C#

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.

Programmation Oriente Objet en C#

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

Programmation Oriente Objet en C#

II. Dfinition d'une classe


Syntaxe gnrale de dclaration: [Modificateurs_de_classe] class Nom_de_la_classe { Variables membres . Mthodes membres .. } Modificateurs de classe : public : une classe public est accessible depuis n'importe o. partial : Dfinit des classes partielles dans le mme assembly. abstract : une classe abstract ne peut pas tre instancie directement. Elle sert de classe de base dans une relation d'hritage. sealed : une classe sealed ne peut tre drive.
Programmation Oriente Objet en C# 6

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)

Programmation Oriente Objet en C#

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

Programmation Oriente Objet en C#

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.

Programmation Oriente Objet en C#

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 }

Programmation Oriente Objet en C#

11

IV. Dclaration et Instanciation dun objet

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 :

[Modificateur _d_accs] nom_classe nom_variable; nom_variable = new nom_classe() ;

Programmation Oriente Objet en C#

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

Programmation Oriente Objet en C#

13

Reprsentation de la classe Avion

Avion mq modele v_max altitude_max v_en_cours altitude_en_cours

Nom de la classe

Attributs ou proprits de la classe

Avion() Avion(mq,v_max,a_max) decoller() atterir()

Constructeurs Mthodes de la classe

Programmation Oriente Objet en C#

14

V. Exemple (Suite): Partie II


5. Dans la mthode Main de votre classe principale crire le code permettant de crer un avion en utilisant le constructeur par dfaut 6. Affecter en suite aux diffrents attributs les valeurs suivants:
mq: Boeing modele: 737 v_max: 900 Km/H Altitude_max: 10100 m V_en_cours:0 Altitude_en_cours:0 7. Afficher ces diffrents valeurs 8. Faire la mme chose en utilisant le deuxime constructeur 9. Crer deux avions diffrents et afficher leurs proprits 10. Faire dcoller le premier avion jusqu laltitude 6000 m

Programmation Oriente Objet en C#

15

V. Exemple (Suite): Partie III


11. Rendre private laccessibilit des attributs mq, v_max et v_en_cours 12. Afin de permettre laccs mq ajouter un accesseur en lecture criture nomm marque 13. Ajouter galement un accesseur en lecture criture nomm vitesse_maximale pour lattribut v_max. 14. Ajouter un accesseur en lecture pour lattribut v_en_cours

Programmation Oriente Objet en C#

16

VI. Mthodes et variables de classe


Les variables de classe
Quand on instancie plusieurs objets partir dune mme classe chacun de ces objets possde ses propres valeurs de variables dinstance. Dans certains cas on a besoin davoir des variables ayant des valeurs communes pour tous les objets instancis partir de la mme classe, ce genre de variables sont dites des variables de classe et sont dclares avec static

Les mthodes de classe


Les mthodes de classe sont des mthodes dclares avec le mot static. Une mthode dclare static peut tre appele sans instancier un objet de sa classe. Il suffit pour cela de prcder la mthode avec le nom de sa classe suivi dun point.

Programmation Oriente Objet en C#

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.

Programmation Oriente Objet en C#

18

Syntaxe gnrale de dclaration dune classe drive :


[Modificateurs_de_classe] class Nom_de_la_classe_drive: classe_mre { Variables membres . Mthodes membres . } Le mot cl base sert accder aux membres de la classe de base partir d'une classe drive L'accs une classe de base n'est autoris que dans un constructeur, une mthode d'instance ou un accesseur de proprit d'instance. Le fait d'utiliser le mot cl base partir d'une mthode statique constitue une erreur.

Programmation Oriente Objet en C#

19

Exemple
Mq

Avion

Avion() Avion(mq,v_max,a_max) decoller() atterir()

Avion_de_ligne

Avion_cargo charge_max charge_actuelle Avion_de_chasse charger_tout() decharger_tout()

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

VIII.Classe et mthodes abstraites


Classe abstraite: abstract Une classe abstraite est une classe qui ne peut pas tre instancie. Elle sert de classe de base dans une relation dhritage. Syntaxe gnrale de dclaration dune classe abstraite :
public abstract class Nom_de_la_classe { Variables membres . Mthodes membres . }

Programmation Oriente Objet en C#

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..);

Programmation Oriente Objet en C#

22

Exemple
Mthodes abstraites

Figure
nom couleur_trait couleur_remplissage abstract surface() abstract perimetre() abstract tracer_figure()

Classe abstraite

Cercle

Quadrilateral largeur longueur surface() perimetre() tracer_figure()

rayon
surface() perimetre() tracer_figure()

Ces mthodes doivent tre redfinies


Programmation Oriente Objet en C# 23

IX. Les classes sealed

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.

Syntaxe gnrale de dclaration dune classe sealed :


public sealed class Nom_de_la_classe { Variables membres . Mthodes membres . }
Programmation Oriente Objet en C# 24

X. Les mthodes: virtual


Le mot cl virtual sert modifier une mthode, une proprit, un indexeur ou une dclaration de l'vnement et leur permet d'tre substitus (redfinis) dans une classe drive. Les mthodes dclares virtual peuvent tre redfinies et reimplmentes dans les classes drives. Le mot cl override permet de redfinir une classe virtual.

Programmation Oriente Objet en C#

25

XI. Classes .NET d'usage courant


La bibliothque de classe .NET Framework offre une multitude de classes, interfaces et types valeur destines faciliter la programmation et permettant d'accder aux fonctionnalits du systme. Voici quelques classes de cette plate-forme

1.Les chanes de caractres: La classe System.String


La classe prsente un ensemble de mthodes et de proprits permettant la manipulation des chanes de caractres. Noter que dans cette classe on trouvera deux types de mthodes: les mthodes de classe (static) et les mthodes dinstance

-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

Programmation Oriente Objet en C#

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 :

3.Les collections a. Les collections gnriques


Outre le tableau, il existe diverses classes pour stocker des collections d'lments. Il existe des versions gnriques dans l'espace de noms System.Collections.Generic et des versions non gnriques dans System.Collections.
Programmation Oriente Objet en C# 27

La classe gnrique List<T>


La classe System.Collections.Generic.List<T> permet d'implmenter des collections d'objets de type T dont la taille varie au cours de l'excution du programme. Un objet de type List<T> se manipule presque comme un tableau. Ainsi l'lment i d'une liste l est not l[i]. Syntaxe gnrale de dclaration dune List : List<nom_type_ou_classe> nom_liste=new List<nom_type_ou_classe> ();
Exemple: dclaration dune liste gnrique nomme lav contenant des Avions

List<Avion> lav=new List<Avion> ();

Programmation Oriente Objet en C#

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> ();

Programmation Oriente Objet en C#

29

Exemple: dclaration dun Dictionary nomme lp contenant des objets Pays ayant comme cl le nom du pays

Dictionary<string, Pays> lp=new

Dictionary<string, 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

Programmation Oriente Objet en C#

30

b. Les collections non gnriques


L'espace de noms System.Collections contient des interfaces et classes qui dfinissent diffrentes collections d'objets, par exemple, les listes, les files d'attente, les tableaux de valeurs de bit, les tables de hachage et les dictionnaires. Une collection nom gnrique peut contenir des objets de type diffrents. Pour extraire un objet de la collection il faut prciser son type par un cast. Parmi les collection non gnriques on trouve ArrayList et HachTable

La classe ArrayList
Syntaxe gnrale de dclaration dun objet ArrayList :

ArrayList lav=new ArrayList ();

Programmation Oriente Objet en C#

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 }

Programmation Oriente Objet en C#

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 .

Programmation Oriente Objet en C#

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.

Programmation Oriente Objet en C#

35

5.Classes de manipulation de dates et dheures


a. La structure DateTime

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.

Programmation Oriente Objet en C#

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

Parmi ces classes on peut citer:


Classes de manipulation de fichiers FileInfo File FileStream StreamReader StreamWriter BinaryReader BinaryWriter Classes de manipulation de dossiers Directory DirectoryInfo DriveInfo Path

Programmation Oriente Objet en C#

37

Programmation Oriente Objet en C#

38

XII. La gestion des erreurs


Dans un programme, certaines actions peuvent provoquer des erreurs lexcution et le programme est interrompu cest ce quon appelle des exceptions. En effet une simple tentative de division par zro, lcriture sur un fichier en lecture seule ou inexistant peut faire tout planter. Pour viter cette situation C# permet de mettre les instructions susceptibles de
provoquer des exceptions dans un bloc try .. Catch pour traiter les erreurs dexcution sans que le programme ne soit interrompu.

La gestion d'une exception se fait selon le schma suivant :

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

XIII. Srialisation et Desrialisation dobjets


1. Notion de Srialisation La srialisation consiste stocker les valeurs des attributs d'une instance d'un objet dans un fichier qui peut tre au format binaire, xml ou Soap.
La srialisation binaire concerne les champs publics et privs de l'objet et le nom de la classe, y compris l'assembly contenant la classe. Pour pouvoir srialiser des objets crs partir dune classe, la classe doit tre marque comme tant srialisable avec Le mot

[Serialiasable()]
Si on ne veut pas srialiser certaines attributs de la classe on

utilise le mot [NonSerialized()]

Programmation Oriente Objet en C#

41

2. Exemple de Srialisation binaire


a. Dclaration de la classe Considrons une classe nomme Compte dont la dclaration est la suivante: [Serialisable()]
Public class Compte { public int num_cpte; public string nom_proprietaire; public double solde;

[NonSerialized()] public string agence;


}

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:

using System.IO; using System.Runtime.Serialization.Formatters.binary

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

Programmation Oriente Objet en C#

43

Cration dun objet Compte et srialisation dans un fichier ..


Compte cp; //dclaration dun objet compte cp=new Compte(); // instantiation de cp // remplissage des donnes cp. num_cpte= 2000; cp. nom_proprietaire="Ali"; cp.solde=200000; cp.agence="Fes medina"; // ****************************************** Stream fcompte = File.Create("c:\\compte.bin"); // cration du fichier BinaryFormatter bf = new BinaryFormatter(); // cration dun objet formateur //binaire nom bf bf.Serialize(fcompte, cp);// srialisation de lobjet cp

fcompte.Close();// fermeture du fichier .. }


Programmation Oriente Objet en C# 44

c. Desrialisation de lobjet La .. dserialisation consiste rcupr un objet pralablement srialis.

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(); .. }

Programmation Oriente Objet en C#

45

Programmation Oriente Objet en C#

46

Programmation Oriente Objet en C#

47

Vous aimerez peut-être aussi