CoursDocuments

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 

  • Méthode exécutée automatiquement par le processus de récupération de mémoire pour un objet qui n’est plus référencé. 
  • Méthode seulement autorisée dans les classes. 
  • La syntaxe d’un destructeur comporte le nom de la classe précédé du caractère ~ : Exemple 

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. 

  • Un membre statique dépend de la classe et non de l’objet instancié 
  • Appelé méthode de classe ou attribut de classe 
  • Création d’une propriété statique pour un attribut privé et statique 
  • Accès se fait en spécifiant le nom de la classe à laquelle il appartient suivi de nom de la propriété ou du nom de la méthode 
  • Une méthode statique ne peut pas manipuler des attributs d’instance (non statiques) Exemple: 

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) 

  • Technique de POO permettant de définir un classe à partir d’une autre classe en partageant ses attributs et ses méthodes 
  • En C#, la déclaration de l’héritage suit la syntaxe suivante: [modificateur d’accès] class ClasseDérivée : ClasseBase Intérêts: Spécialisation, enrichissement: une nouvelle classe réutilise les attributs et les opérations en y ajoutant des attributs et/ou des opérations particulières à la nouvelle classe. Redéfinition: une nouvelle classe redéfinit les attributs et les opérations d’une classe de manière à en changer le sens et/ou le comportement pour le cas particulier défini par la nouvelle classe. Réutilisation: évite de réécrire du code existant 

-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: 

  • Dans la classe mère, déclarer le membre à redéfinir avec le mot clé virtual • Dans la classe fille, déclarer le membre redéfini avec le mot clé override 

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 

  • Contient au moins une méthode abstraite • Déclarée avec le mot clé abstract • Une méthode abstraite est déclarée avec le mot clé abstract et annonce sa signature (sans donner de définition) • Une méthode abstraite est une méthode virtuelle qui doit être redéfinie dans toute classe héritée de cette classe abstraite • Une classe abstraite ne doit pas être instanciée 

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) 

  • Une interface contient de déclarations de méthodes qui sont automatiquement abstraites. 
  • Il est impossible de créer un objet à partir d’une interface. 
  • Une classe implémentant une interface doit fournir le code de toutes les méthodes de l’interface 
  • Une classe peut implémenter plusieurs interfaces 
  • La spécification de l’implémentation se fait avec : comme l’héritage 

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) 

  • Plusieurs méthodes en C# sont susceptibles de générer des erreurs ou des exceptions entraînant le plantage de l’application. • Exemple: méthode Parse des classes int, float, double… génère une exception de type FormatException 

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) 

  • La gestion d’exceptions se fait comme suit: try{ code susceptible de générer une exception } catch (Exception e){ traiter l’exception e } instruction suivante 
  • e : objet de type Exception ou dérivé 
  • Possibilité de spécifier le type d’exception approprié: IndexOutOfRangeException, FormatException, SystemException, etc… (Dans cet exemple, FormatException) 
  • Si le code de la clause try est susceptible de générer plusieurs types d’exceptions, gérer l’exception avec plusieurs clauses catch 

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) 

  • On peut ajouter aux clauses try/catch, une clause finallyqui n’est pas obligatoire, et qui permet de spécifier du code qui sera exécuté dans tous les cas, qu’une exception survienne ou pas. 
  • Lorsqu’on surveille un bloc de code, on commence en général par surveiller toutes les exceptions les plus fines possibles qui nous intéressent et on remonte en considérant les exceptions plus générales, jusqu’à terminer par la classe Exception 

06/04/2016 

06/04/2016

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

 

Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Bouton retour en haut de la page

Adblock détecté

S'il vous plaît envisager de nous soutenir en désactivant votre bloqueur de publicité