Programmation Orientée Objet
Notion d’objet     Un objet est une entité cohérente     rassemblant des données et du code     travaillant sur ces donné...
Une classe     Une classe est une description abstraite     d’un objet. Elle peut être considérée en     quelque sorte co...
L’instanciation       Chaque objet correspond à une instance       de la classe à laquelle il fait référence.            ...
L’instanciation    La création d’un objet est constituée de deux     phases :       • Une phase du ressort de la classe :...
L’instanciation                  Classe                                Constructeur                  Les objets instanciés
Le principe d’encapsulation    Abstraction de données :      La structure d’un objet n’est pas visible de l’extérieur.   ...
Encapsulation    Intérieur de l’objet protégé    Complexité dissimulé    Maintenance simplifié (centralisation)    Ech...
Classification : Hiérarchie d’héritage                            Véhicule     Classes abstraites        VéhiculeTerrestre...
Exemple de hiérarchie d’héritage                           Image      Classes abstraites             Bitmap               ...
Principe de généralisation Consiste à factoriser les éléments communs  d’un ensemble de classe dans une classe  plus géné...
Principe de spécialisation Permet de définir les particularités d’un ensemble d’objets non prises en compte par les class...
La classificationGénéralisation                                         Spécialisation                                Véhi...
Classification Les classes de plus bas niveau (terminales)  sont des classes concrètes Les classes non terminales sont s...
Héritage : Exprime une relation EST         Compte  +Crédit : double  +Débit : double                                 Comp...
Association : Exprime une dépendance  Client   -Passe   -Appartient   Commande           *               0..* Association ...
Agrégation : Une relation Tout-Partie    Commande   -Comporte   -partie de     Ligne de Commande               1          ...
Polymorphisme via héritage d’interface                             Employé         La même                               ...
Autres formes de polymorphisme   Par substitution de méthodes :    La méthode dans la classe dérivée se substitue à    ce...
Définition d’une classe1.   Ajouter une classe au projet2.   Attribuer un nom à la classe (nom du fichier)3.   Créer le ou...
Création d’un constructeurPublic Sub New()  Constructeur simple    intValeur = 1  End Sub  Public Sub New(ByVal i As Integ...
Définition des méthodesPublic Sub MaMethode(ByVal i As Integer)    ...  End Sub  Public Function MaFonction(ByVal i As Int...
Définition des propriétésPublic Property Nom() As String    Get       Return sNom  Retourne valeur variable locale    End ...
Restriction sur usage des propriétésPublic ReadOnly Property Age() As String    Get       Return iAge.ToString    End Get ...
Définition des évènementsPublic Event Evenement(ByVal message As String)  Public Property Nom() As String      Set(ByVal V...
Les modificateurs d’accessibilité Mot clé        Définition Public         Accessible partout Private        Accès dans la...
Utilisation de destructeurs   Sub finalize utilisée pour nettoyer des ressources   Code exécuté par le garbage collector...
Garbage collection   Processus en tâche de fond qui nettoie les    références inutilisées   varObjet = Nothing permet d’...
L’héritage   Une classe dérivée hérite d’une classe de base   Les propriétés, méthodes, évènements pourront être    héri...
Substitution et surcharge Une classe dérivée peut remplacer une  méthode ou une propriété héritée  –   Overridable : rend...
Exemples d’héritagePublic MustInherit Class ClasseBase  Private sNom As String  Public Property Nom() As String    Get    ...
Exemples d’héritagePublic Class ClasseDerivee  Inherits ClasseBase  Private sPrenom As String  Public Sub New() End Sub  P...
Exemples d’héritage   Mot clé MyBase fait référence à la classe de base    immédiate dans la hiérarchie      – Souvent ut...
Mise en œuvre du polymorphisme   Trois approches possibles    – La liaison tardive. A la compilation, on ne spécifie pas ...
Liaison tardiveDim oMaClasse As Object  Sub Instancier(ByVal typeObjet As String)    If typeObjet = "Chat" Then      oMaCl...
Définition d’une interface   Les interfaces définissent des signatures de    méthodes, d’évènements et de propriétés   D...
Implémentation d’une interface     Si une classe implémente une interface, elle doit      implémenter l’ensemble des memb...
Données membres partagées Permettre          à plusieurs instances de partager  une même variable de classePublic Class C...
La persistance  La sérialisation Un  objet doit vivre au-delà de la portée  de l’instance de ce dernier Permettre de sto...
Prochain SlideShare
Chargement dans…5
×

POO

995 vues

Publié le

Programmation orientée objet

Publié dans : Formation
2 commentaires
2 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
995
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
0
Commentaires
2
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

POO

  1. 1. Programmation Orientée Objet
  2. 2. Notion d’objet  Un objet est une entité cohérente rassemblant des données et du code travaillant sur ces données.
  3. 3. Une classe  Une classe est une description abstraite d’un objet. Elle peut être considérée en quelque sorte comme un moule… Véhicule Nom de la classe +Marque : string(idl) +Puissance fiscale : int +Vitesse maximale : int Description des attributs +Vitesse courante : int ou données membres +Creer un véhicule() +Détruire un véhicule() Description des méthodes +Démarrer() = code associé +Accélérer(entrée Taux : int)
  4. 4. L’instanciation  Chaque objet correspond à une instance de la classe à laquelle il fait référence. Marque = Peugeot Véhicule Puissance = 7 +Marque : string(idl) Vitesse maximale = 197 +Puissance fiscale : int Vitesse courante = 98 +Vitesse maximale : int +Vitesse courante : int Marque = Renault +Creer un véhicule() Puissance = 5 +Détruire un véhicule() Vitesse maximale = 176 +Démarrer() Vitesse courante = 65 +Accélérer(entrée Taux : int)
  5. 5. L’instanciation La création d’un objet est constituée de deux phases : • Une phase du ressort de la classe : allouer de la mémoire et un contexte d’exécution minimaliste. Méthode de classe • Une phase du ressort de l’objet : initialiser ses attributs d’instance. Méthode d’instance Dans les langages tels que Java, C++, VB ou C#, ces deux phases ne sont pas différenciées. Appel à une méthode spéciale : le constructeur
  6. 6. L’instanciation Classe Constructeur Les objets instanciés
  7. 7. Le principe d’encapsulation Abstraction de données : La structure d’un objet n’est pas visible de l’extérieur. Seule son interface est accessible par le biais de messages invocables par le client. Abstraction procédurale : L’invocation d’un message est une opération atomique. Aucun élément d’information sur les traitements internes mis en œuvre n’est nécessaire. Cette notion est déjà mise en œuvre dans l’établissement des routines (fonctions ou procédures) dans les langages classiques.
  8. 8. Encapsulation Intérieur de l’objet protégé Complexité dissimulé Maintenance simplifié (centralisation) Echanges avec l’externe sont codifiés
  9. 9. Classification : Hiérarchie d’héritage Véhicule Classes abstraites VéhiculeTerrestre Véhicule Aérien Voiture Camion Avion HélicoptèrePermet de gérer la complexité en ordonnant les classes ausein d’arborescences de classes d’abstraction croissante
  10. 10. Exemple de hiérarchie d’héritage Image Classes abstraites Bitmap MetaFile La classe image ne peut être instanciée MustInherit Public Class Image Instanciation d’une image bitmap ou metafile Public Class Bitmap Inherits Image
  11. 11. Principe de généralisation Consiste à factoriser les éléments communs d’un ensemble de classe dans une classe plus générale On parle alors de super-classe ou sur-classe • la propriété Height • la méthode Save appartiennent à la classe image
  12. 12. Principe de spécialisation Permet de définir les particularités d’un ensemble d’objets non prises en compte par les classes déjà identifiées. • la méthode SetPixel est une méthode spécifique de la classe BitMap • la méthode PlayRecord est une méthode spécifique de la classe MetaFile d’où la nécessité d’avoir des sous-classes spécialisées
  13. 13. La classificationGénéralisation Spécialisation Véhicule Classes abstraites VéhiculeTerrestre Véhicule Aérien Voiture Camion Avion Hélicoptère Détermination des sur-classes et sous-classes
  14. 14. Classification Les classes de plus bas niveau (terminales) sont des classes concrètes Les classes non terminales sont souvent abstraites Eviter une trop grande profondeur de décomposition La décomposition doit être stable
  15. 15. Héritage : Exprime une relation EST Compte +Crédit : double +Débit : double Compte Epargne +déposer() +retirer() +Crédit : double +calculerSolder() : long +Débit : double +Taux Intérêts : long +déposer() Compte Epargne +retirer() +calculerSolder() : long +Taux Intérêts : long +calculerIntérêts() : long +CalculerIntérêts() : long  Une sous classe hérite des propriétés et méthodes de la sur-classe
  16. 16. Association : Exprime une dépendance Client -Passe -Appartient Commande * 0..* Association Multiplicité  Une classe dépend d’une autre classe pour accomplir une fonction spécifique  La multiplicité détermine le nombre d’objets pouvant participer à une relation
  17. 17. Agrégation : Une relation Tout-Partie Commande -Comporte -partie de Ligne de Commande 1 * Agrégation  Classe complexe comprenant d’autres classes  La ligne commande est une partie de la commande
  18. 18. Polymorphisme via héritage d’interface Employé  La même opération se «utilise» +Creer() +Supprimer() comporte «interface» différemment IPersonne quand elle+Creer()+Supprimer() s’applique à des «utilise» Client objets basés sur des classes +Creer() différentes +Supprimer()
  19. 19. Autres formes de polymorphisme Par substitution de méthodes : La méthode dans la classe dérivée se substitue à celle définie dans la classe de base Par liaison tardive Late Binding : On n’indique pas au compilateur la classe spécifique utilisée. On déclare un objet générique. On utilise lors de l’instanciation une classe spécifique. A éviter pour des problèmes de performances et une mise en oeuvre délicate.
  20. 20. Définition d’une classe1. Ajouter une classe au projet2. Attribuer un nom à la classe (nom du fichier)3. Créer le ou les constructeurs4. Créer un destructeur si nécessaire5. Déclarer les propriétés6. Déclarer les méthodes7. Déclarer les évènements
  21. 21. Création d’un constructeurPublic Sub New() Constructeur simple intValeur = 1 End Sub Public Sub New(ByVal i As Integer) S 1 intValeur = i End Sub Public Sub New(ByVal i As Integer, ByVal s As String) S 2 intValeur = i strValeur = s End Sub
  22. 22. Définition des méthodesPublic Sub MaMethode(ByVal i As Integer) ... End Sub Public Function MaFonction(ByVal i As Integer) As Boolean ... End Function Public Function MaFonction(ByVal s As String) As Boolean ... End Function
  23. 23. Définition des propriétésPublic Property Nom() As String Get Return sNom Retourne valeur variable locale End Get Set(ByVal Value As String) sNom = Value Affecte valeur à variable locale End Set End Property
  24. 24. Restriction sur usage des propriétésPublic ReadOnly Property Age() As String Get Return iAge.ToString End Get Lecture seule End Property Public WriteOnly Property Lecture() As String Set(ByVal Value As String) strValeur = Value Ecriture seule End Set End Property
  25. 25. Définition des évènementsPublic Event Evenement(ByVal message As String) Public Property Nom() As String Set(ByVal Value As String) sNom = Value Affecte valeur à variable locale RaiseEvent Evenement("Le nom a été renseigné") End Set End Property
  26. 26. Les modificateurs d’accessibilité Mot clé Définition Public Accessible partout Private Accès dans la classe uniquement Friend Accès Classe - Espace de nom Assemblage Protected Accès classe et classes dérivées
  27. 27. Utilisation de destructeurs Sub finalize utilisée pour nettoyer des ressources Code exécuté par le garbage collector La destruction peut ne pas être immédiate Peut être utilisé pour nettoyer d’autres ressources ouvertes Protected Overrides Sub finalize() oCon.Close() ferme la connexion End Sub
  28. 28. Garbage collection Processus en tâche de fond qui nettoie les références inutilisées varObjet = Nothing permet d’indiquer que l’objet peut être supprimé Les objets ou autre mémoire qui sont hors d’atteinte (hors de portée) sont nettoyés La destruction de l’objet est autorisée mais … – Aucune garantie quant au moment où elle aura lieu – La collecte des objets inaccessibles peut être forcée par le recours directe à la classe système GC : GC.Collect(). Ce processus n’est toutefois pas recommandé.
  29. 29. L’héritage Une classe dérivée hérite d’une classe de base Les propriétés, méthodes, évènements pourront être hérités Mots clés précisant les conditions d’héritage – Inherits : dans la classe dérivée à partir d’une classe de base – NotInheritable : Impossible d’hériter – MustInherit : Impossible de créer des instances de cette classe
  30. 30. Substitution et surcharge Une classe dérivée peut remplacer une méthode ou une propriété héritée – Overridable : rend la substitution possible – MustOverride : substitution obligatoire – Overrides : remplacement de méthodes – NotOverridable : substitution impossible Utiliser Overloads pour surcharger une méthode dans une classe héritée avec une signature différente
  31. 31. Exemples d’héritagePublic MustInherit Class ClasseBase Private sNom As String Public Property Nom() As String Get Return sNom Retourne valeur variable locale End Get …. End Property Public overridable sub Methode() End SubEnd Class
  32. 32. Exemples d’héritagePublic Class ClasseDerivee Inherits ClasseBase Private sPrenom As String Public Sub New() End Sub Public Overrides Sub Methode() Méthode substituée End SubEnd Class
  33. 33. Exemples d’héritage Mot clé MyBase fait référence à la classe de base immédiate dans la hiérarchie – Souvent utilisé pour créer une instance de la classe de base – Permet aussi d’accéder à une méthode de la classe de basePublic Class ClasseDerivee2 Inherits ClasseBase2 Public Sub New(ByVal nom As String) MyBase.New(nom) …. End Sub End Class
  34. 34. Mise en œuvre du polymorphisme Trois approches possibles – La liaison tardive. A la compilation, on ne spécifie pas la nature de la classe mais on travaille avec un objet indéterminé. Pose de nombreux soucis – la substitution de membres d’une classe de base dans une classe dérivée – Les interfaces Interface – Les signatures des méthodes et propriétés sont définies dans l’interface – L’implémentation du code se fait dans la classe qui implémente les méthodes
  35. 35. Liaison tardiveDim oMaClasse As Object Sub Instancier(ByVal typeObjet As String) If typeObjet = "Chat" Then oMaClasse = New ClasseDerivee Else oMaClasse = New ClasseDerivee2 End If oMaClasse.Mordre() Doit être implémentée dans les 2 classes End Sub
  36. 36. Définition d’une interface Les interfaces définissent des signatures de méthodes, d’évènements et de propriétés Définie au sein d’un module avec les mots clés Interface – End Interface Surchage possible des membres Peut hériter d’une autre interface : InheritsInterface MonInterface Function TraiterNom(ByVal Nom As String) As String Sub MethodeX(ByVal I As Integer) Sub MethodeX(ByVal S As String)End Interface
  37. 37. Implémentation d’une interface  Si une classe implémente une interface, elle doit implémenter l’ensemble des membres de l’interfacePublic Class ClasseImplementation Implements MonInterface Public Sub MethodeX(ByVal I As Integer) Implements MonInterface.MethodeX ... code implémentation End Sub Public Sub MethodeX1(ByVal S As String) Implements MonInterface.MethodeX End Sub Public Function TraiterNom(ByVal Nom As String) As String Implements MonInterface.TraiterNom End FunctionEnd Class
  38. 38. Données membres partagées Permettre à plusieurs instances de partager une même variable de classePublic Class CompeEpargne Private dMontant As Double Public Shared TauxInteret As Double Public Function CalculInterets() As Double Return dMontant * TauxInteret End FunctionEnd Class
  39. 39. La persistance La sérialisation Un objet doit vivre au-delà de la portée de l’instance de ce dernier Permettre de stocker nos objets dans une mémoire non volatile… Plusieurs mécanismes peuvent être mis en œuvre Recours fréquent à XML aujourd’hui

×