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
V
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# :
- Notions de la POO
- Création d’une classe
- Création d’un objet
- Constructeur
- Destructeur
- Encapsulation
- Propriétés
06/04/2016
06/04/2016
- Membres statiques
- Héritage
- Classe abstraite
- Interface
- Types génériques
- Gestion des Exceptions
Implicitement toutes les classes sont héritentde la classe System.Object
06/04/20161
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/20162
06/04/20162
06/04/20162
06/04/20162
06/04/20162
06/04/20162
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/20162
06/04/20162
06/04/20162
06/04/20162
06/04/20162
06/04/20162
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/20162
06/04/20162
06/04/20162
06/04/20162
06/04/20162
06/04/20162
~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/20162
06/04/20162
06/04/2016
06/04/2016
06/04/20162
06/04/20162
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/20164
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/20165
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/20166
- Définir l’exception
AgeNonValideException
- 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
- 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/20167
Télécharger gratuitement La programmation orienté object en C#