La programmation orienté object en C#

1- Notions de la POO 

Un objet est une entité qui est composé de membres ; parmi ces membres, on dispose de champs (les variables qui lui sont caractéristiques), de méthodes, de propriétés, 

➢ Un objet est créé selon un modèle qu’on appelle une 

classe (la famille des objets). 

➢ En C# tout est objet: le formulaire Windows est un objet, 

une chaîne de caractères est un objet… 

V- La POO en C# 

06/04/2016 

06/04/2016 

LA POO EN C# 

2- Création d’une classe 

Espace de noms – Généralement associé au projet, mais pas seulement. Peut contenir plusieurs classes. 

Qualificateur de la classe : public: visible par n’importe quel programme d’un autre espace de noms protected: pour les classes imbriquées, sera visible uniquement par la classe conteneur et ses héritiers internal :visible par les autres classes du même assembly (l’EXE ou la DLL du projet) private : visible uniquement par les classes du même espace de noms Par défaut: private si non spécifié pour la classe, attribut ou méthode 

V- La POO en C# : 

  1. Notions de la POO 
  2. Création d’une classe 
  3. Création d’un objet 
  4. Constructeur 
  5. Destructeur 
  6. Encapsulation 
  7. Propriétés 

06/04/2016 

06/04/2016 

  1. Membres statiques 
  2. Héritage 
  3. Classe abstraite 
  4. Interface 
  5. Types génériques 
  6. Gestion des Exceptions 

Implicitement toutes les classes sont héritentde la classe System.Object 

06/04/2016

private void BtnAjouter_Click(object sender, EventArgs e) 

int age=int.Parse(TxtAge.Text); Personne p; 

p= new Personne(Txtnom.Text, TxtPrenom.Text, age); 

MessageBox.Show(« Personne \ » »+p.identite()+ »\ » est ajoutée avec succès »); 

} } 

➢Méthode appelée lors de la création de l’objet ➢Permet d’initialiser les attributs de l’objet ➢Porte le même nom que la classe ➢Doit être déclarée publique ➢Possibilité de surcharger le constructeur: avoir plus qu’un constructeur mais le nombre de paramètres est différent ➢Possibilité d’appeler un constructeur dans un autre constructeur de la même classe en utilisant this(paramètres) avec paramètres vide pour appeler le constructeur par défaut 

06/04/2016

06/04/2016

06/04/2016

06/04/2016

06/04/2016

06/04/2016

Déclaration d’un objet de type Personne 

Instanciation ou création de l’objet: appel du constructeur avec new 

Appel de la méthode identite 

06/04/2016 

➢Méthode appelée lors de la création de l’objet ➢Permet d’initialiser les attributs de l’objet ➢Porte le même nom que la classe ➢Doit être déclarée publique ➢Possibilité de surcharger le constructeur: avoir plus qu’un constructeur mais le nombre de paramètres est différent ➢Possibilité d’appeler un constructeur dans un autre constructeur de la même classe en utilisant this(paramètres) avec paramètres vide pour appeler le constructeur par défaut 

➢Méthode appelée lors de la création de l’objet ➢Permet d’initialiser les attributs de l’objet ➢Porte le même nom que la classe ➢Doit être déclarée publique ➢Possibilité de surcharger le constructeur: avoir plus qu’un constructeur mais le nombre de paramètres est différent ➢Possibilité d’appeler un constructeur dans un autre constructeur de la même classe en utilisant this(paramètres) avec paramètres vide pour appeler le constructeur par défaut 

06/04/2016 

06/04/2016

06/04/2016

06/04/2016

06/04/2016

06/04/2016

06/04/2016

3- Création d’un objet 

5- Destructeur 

4- Constructeur 

6- Visibilité et encapsulation 

Attributs privés : -Interdiction d’accès en lecture ou en écriture Exp: Personne p=new Personne(); 

06/04/2016

06/04/2016

06/04/2016

06/04/2016

06/04/2016

06/04/2016

~Personne() {

p.nom = « Mohamed »; →Besoin de méthodes spécifiques pour pouvoir manipuler l’objet: les accesseurs et les modificateurs Exp: p.setNom(« Mohamed »); 

→Phénomène d’encapsulation 

06/04/2016

06/04/2016

06/04/2016 

06/04/2016 

06/04/2016

06/04/2016

7- Propriétés (1/2) 

8- Membres statiques 

-Il existe une autre façon d’avoir accès aux attributs d’une classe c’est de créer des propriétés. – Celles-ci permettent de manipuler des attributs privés comme s’ils étaient publics. -Une propriété permet de lire (get) ou de fixer (set) la valeur d’un attribut. 

Utilisation de la méthode set de la propriété nom 

Utilisation de la méthode get de la propriété prenom 

06/04/2016 

06/04/2016 

7- Propriétés (2/2) 

9- Héritage (1/4) 

-Possibilité de rendre une propriété en lecture seule en enlevant la méthode set – Possibilité de garder seulement la méthode set et d’enlever la méthode get. -Propriété auto-implémentée: au lieu de déclarer un attribut et une propriété de l’attribut, déclarer une propriété auto- implémentée 

 

new Redéfinition de la méthode sans tenir compte du polymorphisme: cacher la méthode de la classe mère 

9- Héritage (2/4) 

9- Héritage (4/4) 

Classe Mère Personne 

Polymorphisme: 

06/04/2016 

06/04/2016 

Classe fille Enseignant : pour spécifier 

l’héritage 

base Appel d’un membre de la classe 

:base Appel du constructeur de la classe mère mère 

Le résultat a changé 

Méthode abstraite 

9- Héritage (3/4) 

Instanciation: 

10- Classe abstraite 

06/04/2016 

06/04/2016 

Classe Abstraite 

override obligatoire 

P2 est un objet d’instance Enseignant mais de référence Personne, donc appel de la méthode identite de Personne et non de Enseignant. 

Comment réaliser le polymorphisme? 

Rectangle hérite de Figure 

06/04/2016

T remplacé par int 

T remplacé par Personne 

11- Interface 

12- Types génériques (2/6) 

Méthode générique: déclarée avec <T> pour indiquer qu’elle est générique – Lors de l’appel, il faut spécifier le type voulu – Le <T> peut être omis si la classe où est déclarée la méthode est générique – Peut prendre plus qu’un type générique séparés par , exp <T,U> 

06/04/2016 

06/04/2016 

Objet de référence interface Casting ou 

forçage de type 

12- Types génériques (1/6) 

La différence consiste en le type T des paramètres: dans echanger1 int et dans echanger2 Personne. 

12- Types génériques (3/6) 

Problématique: Besoin d’une méthode echanger1 qui permute deux entiers et d’une autre méthode echanger2 qui permute deux références sur des objets de type Personne 

Classe générique: Déclarée avec <T> pour indiquer qu’elle est générique – Méthode paramétrée avec le même type T peut ne pas spécifier <T> 

Peut contenir des restrictions sur le type générique T avec la clause where

06/04/2016 

06/04/2016 

Méthode générique: De type générique T 

06/04/2016

N’est pas de type référence 

12- Types génériques (4/6) 

12- Types génériques (6/6) 

Restrictions sur les types génériques 

Exemple de l’interface IComparable 

06/04/2016 

06/04/2016 

12- Types génériques (5/6) 

13- Gestion des Exceptions (1/4) 

Exemples de types génériques dans le framework .NET – Classe List<T>: pour créer une liste fortement typée à la 

différence de la classe ArrayList qui permet de créer une liste d’objets différents. 

-Interface générique Icomparable<T>: contient une méthode générique int CompareTo(T other) pour créer une méthode de comparaison spécifique au type et permettant de trier les instances. 

-La méthode retourne un entier: 

– Valeur 1 si l’objet courant est supérieur à l’objet other. -Valeur -1 si l’objet courant est inférieur à l’objet other. – Valeur 0 si les 2 objets sont égaux. 

Comment prévoir les cas d’erreurs et éviter le plantage? →Gérer les exceptions: surveiller le code susceptible de générer des erreurs et en cas d’erreur, attraper (catch) l’exception et afficher un message puis passer au traitement suivant sans plantage. 

06/04/2016 

06/04/2016 

06/04/2016

  1. Définir l’exception 

AgeNonValideException 

  1. Ecrire une méthode qui lève cette 

exception 

13- Gestion des Exceptions (2/4) 

13- Gestion des Exceptions (4/4) 

Exception personnalisée Le langage C# offre la possibilité de définir des exceptions personnalisées et de les lever en utilisant le mot clé throw, Une exception personnalisée hérite de la classe Exception Exemple : 

06/04/2016 

  1. Traiter l’exeption 

13- Gestion des Exceptions (3/4) 

06/04/2016 

06/04/2016

Télécharger gratuitement La programmation orienté object en C#

 

Quitter la version mobile