La Programmation Oriente Objet en C 2 0
La Programmation Orientée Objet en C# 2. 0 www. supinfo. com Copyright © SUPINFO. All rights reserved
La Programmation Orientée Objet en C# 2. 0 Objectifs de ce module En suivant ce module vous allez: n Comprendre la programmation orientée objet. n Voir l’implémentation de la POO en C#2. 0. n Connaître des spécificités du C#2. 0.
La Programmation Orientée Objet en C# 2. 0 Plan du module Voici les parties que nous allons aborder: n Notions fondamentales de la Programmation Objet en C#2. 0. n Notions avancées de la Programmation Objet en C#2. 0. n Héritage en C# 2. 0. n Surcharge d’opérateurs, délégués et évènements.
La Programmation Orientée Objet en C# 2. 0 Notions fondamentales de la Programmation Orientée Objet en C#2. 0.
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 Plan de la partie Voici les chapitres que nous allons aborder: n Classes et Objets n Comparaison entre Classe et Structure n L’encapsulation n Données de l’objet, données statiques et méthodes statiques n C# 2. 0 et l’Orientation Objet n Définition de systèmes orientés objet
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 Classes et Objets Classe - Une classe est la définition d’un ensemble d’entités qui partagent les mêmes attributs, les mêmes opérations et la même sémantique.
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 Classes et Objets Exemple : Cas d’une voiture Toit ouvrant Portière Phare Ouvrir Allumer Roue Tourner
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 Classes et Objets Objet - Un objet est une instance d’une classe et est caractérisé par une identité, un état et un comportement.
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 Comparaison entre Classe et Structure Quelques Points communs o Peuvent contenir d’autres types comme membres. o Peuvent avoir des membres (constructeurs, méthodes, propriétés, champs, etc. ). o Chaque membre peut avoir un modificateurs différent (private, public, protected, etc. ). o Peuvent implémenter des interfaces. o Peuvent lever des évènements et déclarer des délégués.
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 Comparaison entre Classe et Structure Quelques Différences o Une structure est de type valeur, une classe est de type référence. o Par défaut tout membre d’une structure est public alors qu’il est privé pour une classe. o Une structure ne peut être héritée, une classe oui. o Une structure ne nécessite pas de constructeur o Tout champ d’une structure ne peut être initialisé que s’il est déclaré static ou const
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 L’encapsulation Encapsulation - Mécanisme permettant de rassembler les attributs et méthodes propres à un type donné afin d’en restreindre l’accès et/ou d’en faciliter l’utilisation et la maintenance.
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 L’encapsulation regroupe : n Modificateurs d’accès n private, public, etc. n Accessors n Permettent de récupérer la valeur d’un champ n Get. Data() { … } n Mutators n Permettent de définir la valeur d’un champ n Set. Data() { … }
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 Données de l’objet, données statiques et méthodes statiques n Chaque objet possède des données propres n Données statiques n Propres à toutes les instances de la classe n Méthodes statiques n Accessibles par toutes les instances n Peuvent utiliser des données statiques
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 Données de l’objet, données statiques et méthodes statiques Exemple: Cas d’un compte épargne Compte Epargne Solde Taux = 3, 16% 3, 14% Compte A Solde = 315€ Compte B Solde = 567€
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 C# 2. 0 et l’orientation objet Déclaration de classe : public class My. Class { Classe } private int _the. Value; Champ public void Increment() { _the. Value++; } Méthode
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 C# 2. 0 et l’orientation objet Instanciation : class Program { public static void Main() { My. Class the. Class = Déclaration et Instanciation new My. Class(); } }
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 C# 2. 0 et l’orientation objet Le mot-clé this : n Référence à l’objet en cours n Utilisable uniquement dans des méthodes nonstatiques public void Increment() { this. _the. Value++; }
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 C# 2. 0 et l’orientation objet Les classes imbriquées : n Permet de définir une classe à l’intérieur d’une classe n Seules classes pouvant avoir les modificateurs protected ou private public class My. Data. Set { protected class My. Data. Table {. . . } }
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 Définition de systèmes orientés objet – Réalisation d’une représentation orientée objet d’un élément ou d’un système.
Notions fondamentales de la Programmation Orientée Objet en C#2. 0 Définition de systèmes orientés objet Exemple de système orienté objet : public class Car { private Wheel[] _wheels; private Light[] _lights; private Door[] _doors; public void Turn() { } public void Open(Door door) { } }
La Programmation Orientée Objet en C# 2. 0 Notions avancées de la Programmation Orientée Objet en C#2. 0
Notions avancées de la Programmation Orientée Objet en C#2. 0 Plan de la partie Voici les chapitres que nous allons aborder: n Propriétés. n Indexeurs. n Attributs.
Notions avancées de la Programmation Orientée Objet en C#2. 0 Propriétés n Nouveautés de C# n Utilisé pour : n Récupérer la valeur d’un champ (get) n Définir la valeur d’un champ
Notions avancées de la Programmation Orientée Objet en C#2. 0 Propriétés Exemple de définition : public class My. Class { private int _the. Value; public int Value { get { return _the. Value; } set { _the. Value = value; } } Propriété } Accesseurs
Notions avancées de la Programmation Orientée Objet en C#2. 0 Propriétés Exemple d’utilisation : public static void Main() { My. Class the. Class = new My. Class(); int class. Value = the. Class. Value; theclass. Value = ++class. Value; } n Accesseur Get. n Accesseur Set.
Notions avancées de la Programmation Orientée Objet en C#2. 0 Indexeurs n Similaire aux propriétés n Utilisables comme une collection public class My. Class { private Array. List _the. Collection = new Array. List(); public My. Element this[int index] { get { return (My. Element) _the. Collection[index]; } set { _the. Collection[index]= value; } } }
Notions avancées de la Programmation Orientée Objet en C#2. 0 Attributs n Permet de spécifier donner plus de détails sur une méthode, une classe n Se déclare en précédant l’élément n Peut être utilisé avec des paramètres Indique l’énumération contient des nombres binaires [Flags] public enum State. Flags { With. Wheels = 0 x 0001, With. Engine = 0 x 0002, With. Lights = 0 x 0004, With. Breaks = 0 x 0008 }
La Programmation Orientée Objet en C# 2. 0 Héritage en C# 2. 0
Héritage en C# 2. 0 Plan de la partie Voici les chapitres que nous allons aborder: n Dérivation de classe. n Implémentation de méthodes. n Implémentation d’interfaces. n Utilisation de classes abstraites et scellées. n Hiérarchie des objets
Héritage en C# 2. 0 Dérivation de classe n Permet d’hériter des données et fonctionnalités d’une classe mère n Mot-clés protected et internal pour restreindre l’accès n Appel possible au constructeur de la classe mère
Héritage en C# 2. 0 Dérivation de classe Exemple de dérivation : Classe mère public class My. Class {. . . } public class My. Derived. Class : My. Class {. . . } Classe fille
Héritage en C# 2. 0 Dérivation de classe Exemple d’appel au constructeur de base : public class My. Derived. Class : My. Class { public My. Derived. Class() : base() {. . . } } Appel au constructeur de la classe mère
Héritage en C# 2. 0 Implémentation de méthodes n Virtual et Override n Uniquement pour des méthodes n Méthodes non-statiques n Méthodes non-privées n New n Redéfinir une méthode non-virtuelle n Peut être utilisé avec les méthodes virtuelles
Héritage en C# 2. 0 Implémentation de méthodes Exemple d’utilisation de virtual et override : class My. Class { protected int _my. Field; public virtual void Increment() { _my. Field++; } } class My. Derived. Class : My. Class { public override void Increment() { _my. Field += 2; } }
Héritage en C# 2. 0 Implémentation d’interfaces Interface – Contrat qu’une classe l’implémentant se doit de respecter.
Héritage en C# 2. 0 Implémentation d’interfaces n Plusieurs interfaces implémentables pour une même classe n Une classe implémentant une interface doit implémenter toutes les méthodes de l’interface public class Light : ISwitchable { public void Switch() { } }
Héritage en C# 2. 0 Utilisation d’interfaces n Mot-clé Interface n Méthodes déclarées : n Ne contiennent pas de code n Ne comporte pas de modificateur d’accès n Peut être utilisé comme type de donnée public interface ISwitchable { void Switch(); }
Héritage en C# 2. 0 Utilisation de classes abstraites et scellées Classes abstraites n Faites pour être dérivées n Ne peuvent être instanciées public abstract class Vehicule { public void Stop() {. . . } }
Héritage en C# 2. 0 Utilisation de classes abstraites et scellées Classes scellées n Ne peuvent être dérivées public sealed class Vehicule { public void Stop() {. . . } }
Héritage en C# 2. 0 Hiérarchie des objets n Toute classe dérive directement ou indirectement de System. object n Quelques méthodes : n To. String() n Equals() n Get. Type() n Finalize()
Héritage en C# 2. 0 Hiérarchie des objets n Quelques opérateurs de POO : n Type. Of n Récupérer le System. Type de l’objet n Is n Vérifier la compatibilité d’un objet avec un type n As n Vérifie la compatibilité d’un objet puis le transforme dans le type donnée
La Programmation Orientée Objet en C# 2. 0 Surcharge d’opérateurs, délégués et événements
Surcharge d’opérateurs, délégués et événements Plan de la partie Voici les chapitres que nous allons aborder: n Surcharge d’opérateurs. n Délégation. n Evènements.
Surcharge d’opérateurs, délégués et événements Surcharge d’opérateurs n Contrôler le comportement d’un objet face à un opérateur n Méthode statique n Mot-clé operator n Opérandes passés en argument n Opérateurs surchargeables : n Arithmétiques ("+", "-", “&", "++", etc. ) n De conversion de type n De comparaison
Surcharge d’opérateurs, délégués et événements Surcharge d’opérateurs Exemple de surcharge : Type de retour Opérateur public static Complex operator ++ (Complex c) { return new Complex(++c. Real, ++c. Imaginary); }
Surcharge d’opérateurs, délégués et événements Délégation n Utilisé pour déléguer l’exécution d’un morceau de programme n Peut référencer plusieurs méthodes déléguées n Déclaration d’un type delegate n Mot-clé delegate n Déclaration des arguments de la méthode déléguée n Exemple de déclaration d’un délégué : public delegate int My. Delegate. Type(int i);
Surcharge d’opérateurs, délégués et événements Délégation Exemple d’utilisation d’un délégué : Méthode déléguée public static int Increment(int value); { return ++value; } static void Main(string[] args) { My. Delegate. Type my. Delegate = Instanciation new My. Delegate. Type(Increment); my. Delegate(10); Appel }
Surcharge d’opérateurs, délégués et événements Délégation Exemple de référencement de plusieurs méthodes : public static int Increment(int value); { return ++value; } public static void Show(int value); { Console. Write. Line("Valeur : {0}", value. To. String()); } static void Main(string[] args) { My. Delegate. Type my. Delegate = new My. Delegate. Type(Increment); my. Delegate += new My. Delegate. Type(Show); my. Delegate(10); }
Surcharge d’opérateurs, délégués et événements Evènements n Permettent de capturer une action du programme n Méthode standard pour la gestion d’évènements n Basé sur la délégation n Mot-clé event n Signature fixe : void On. Event. Name(object sender, Event. Args);
Surcharge d’opérateurs, délégués et événements Evènements Déclaration du délégué : public delegate void New. Info. Handler(object sender, Event. Args e); Déclaration de l’évènement : public event New. Info. Handler; Abonnement : Info. Handler += new New. Info. Handler();
La Programmation Orientée Objet en C# 2. 0 Résumé du module Surcharger un opérateur La Programmation Orientée Objet L’implémentation objet de C#2. 0 Utiliser délégués et évènements L’héritage
Félicitations Vous avez suivi avec succès le module de cours La Programmation Orientée Objet en C# 2. 0
La Programmation Orientée Objet en C# 2. 0 Fin
- Slides: 53