SlideShare ist ein Scribd-Unternehmen logo
1 von 39
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ées.
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)
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)
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
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.
      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.
Encapsulation




    Intérieur de l’objet protégé
    Complexité dissimulé
    Maintenance simplifié (centralisation)
    Echanges avec l’externe sont codifiés
Classification : Hiérarchie d’héritage

                            Véhicule
     Classes abstraites

        VéhiculeTerrestre              Véhicule Aérien




    Voiture       Camion          Avion         Hélicoptère


Permet de gérer la complexité en ordonnant les classes au
sein d’arborescences de classes d’abstraction croissante
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
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
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
La classification
Gé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
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
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
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
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
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()
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.
Définition d’une classe

1.   Ajouter une classe au projet
2.   Attribuer un nom à la classe (nom du fichier)
3.   Créer le ou les constructeurs
4.   Créer un destructeur si nécessaire
5.   Déclarer les propriétés
6.   Déclarer les méthodes
7.   Déclarer les évènements
Création d’un constructeur
Public 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
Définition des méthodes

Public 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
Définition des propriétés

Public 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
Restriction sur usage des propriétés
Public 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
Définition des évènements
Public 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
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
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
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é.
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
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
Exemples d’héritage
Public 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 Sub
End Class
Exemples d’héritage

Public Class ClasseDerivee
  Inherits ClasseBase
  Private sPrenom As String
  Public Sub New()
 End Sub
  Public Overrides Sub Methode()
    ' Méthode substituée
  End Sub
End Class
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 base

Public Class ClasseDerivee2
    Inherits ClasseBase2
    Public Sub New(ByVal nom As String)
      MyBase.New(nom)
      ….
    End Sub
 End Class
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
Liaison tardive

Dim 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
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 : Inherits
Interface MonInterface
    Function TraiterNom(ByVal Nom As String) As String
    Sub MethodeX(ByVal I As Integer)
    Sub MethodeX(ByVal S As String)
End Interface
Implémentation d’une interface
     Si une classe implémente une interface, elle doit
      implémenter l’ensemble des membres de l’interface
Public 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 Function
End Class
Données membres partagées
 Permettre
          à plusieurs instances de partager
  une même variable de classe
Public Class CompeEpargne
  Private dMontant As Double
  Public Shared TauxInteret As Double
  Public Function CalculInterets() As Double
    Return dMontant * TauxInteret
  End Function
End Class
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

Weitere ähnliche Inhalte

Was ist angesagt?

Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java HéritageNadaBenLatifa
 
Programmation orientée objet avancée
Programmation orientée objet avancéeProgrammation orientée objet avancée
Programmation orientée objet avancéeMahfoud EL HOUDAIGUI
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz Darouichi
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Faycel Chaoua
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chatTbatou sanae
 
Examen principal - PHP
Examen principal - PHPExamen principal - PHP
Examen principal - PHPInes Ouaz
 

Was ist angesagt? (20)

Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Programmation orientée objet avancée
Programmation orientée objet avancéeProgrammation orientée objet avancée
Programmation orientée objet avancée
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Java RMI
Java RMIJava RMI
Java RMI
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
 
Examen principal - PHP
Examen principal - PHPExamen principal - PHP
Examen principal - PHP
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 

Andere mochten auch

API et Mobile / Académies du Tourisme Numérique
API et Mobile / Académies du Tourisme NumériqueAPI et Mobile / Académies du Tourisme Numérique
API et Mobile / Académies du Tourisme NumériqueAlexandre Jubien
 
[FR] C'est quoi une API ?
[FR] C'est quoi une API ?[FR] C'est quoi une API ?
[FR] C'est quoi une API ?OVHcloud
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1Yassine Badri
 
Théorie de normalisation-base de données
Théorie de normalisation-base de donnéesThéorie de normalisation-base de données
Théorie de normalisation-base de donnéesYassine Badri
 
Pdf Et Livre éLectronique
Pdf Et Livre éLectroniquePdf Et Livre éLectronique
Pdf Et Livre éLectroniquelucielefebvre
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture RESTFadel Chafai
 
Formation POO & Java (2ème séance)
Formation POO & Java (2ème séance)Formation POO & Java (2ème séance)
Formation POO & Java (2ème séance)G²FOSS ENIT
 
Cours langage c
Cours langage cCours langage c
Cours langage ccoursuniv
 
Securing your API and mobile application - API Connection FR
Securing your API and mobile application - API Connection FRSecuring your API and mobile application - API Connection FR
Securing your API and mobile application - API Connection FRSebastien Gioria
 
Polymorphisme : un concept polymorphe !
Polymorphisme : un concept polymorphe !Polymorphisme : un concept polymorphe !
Polymorphisme : un concept polymorphe !Aurélien Regat-Barrel
 
L'informatique nomade et polymorphe
L'informatique nomade et polymorpheL'informatique nomade et polymorphe
L'informatique nomade et polymorpheFrederic CAVAZZA
 
Débuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJSDébuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJSFrédéric DUPERIER
 
Gestion du Temps - Time Management
Gestion du Temps - Time ManagementGestion du Temps - Time Management
Gestion du Temps - Time ManagementPSYKOPTIMAL Conseil
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
 

Andere mochten auch (19)

API et Mobile / Académies du Tourisme Numérique
API et Mobile / Académies du Tourisme NumériqueAPI et Mobile / Académies du Tourisme Numérique
API et Mobile / Académies du Tourisme Numérique
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
API pour les nuls
API pour les nulsAPI pour les nuls
API pour les nuls
 
[FR] C'est quoi une API ?
[FR] C'est quoi une API ?[FR] C'est quoi une API ?
[FR] C'est quoi une API ?
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1
 
Théorie de normalisation-base de données
Théorie de normalisation-base de donnéesThéorie de normalisation-base de données
Théorie de normalisation-base de données
 
Pdf Et Livre éLectronique
Pdf Et Livre éLectroniquePdf Et Livre éLectronique
Pdf Et Livre éLectronique
 
Gestion du temps
Gestion du tempsGestion du temps
Gestion du temps
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture REST
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 
Formation POO & Java (2ème séance)
Formation POO & Java (2ème séance)Formation POO & Java (2ème séance)
Formation POO & Java (2ème séance)
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
Securing your API and mobile application - API Connection FR
Securing your API and mobile application - API Connection FRSecuring your API and mobile application - API Connection FR
Securing your API and mobile application - API Connection FR
 
Polymorphisme : un concept polymorphe !
Polymorphisme : un concept polymorphe !Polymorphisme : un concept polymorphe !
Polymorphisme : un concept polymorphe !
 
L'informatique nomade et polymorphe
L'informatique nomade et polymorpheL'informatique nomade et polymorphe
L'informatique nomade et polymorphe
 
Débuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJSDébuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJS
 
Gestion du Temps - Time Management
Gestion du Temps - Time ManagementGestion du Temps - Time Management
Gestion du Temps - Time Management
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 

Ähnlich wie POO

Ähnlich wie POO (20)

Part1
Part1Part1
Part1
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Mgd scripting
Mgd scriptingMgd scripting
Mgd scripting
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Langage C#
Langage C#Langage C#
Langage C#
 
Csharp2014
Csharp2014Csharp2014
Csharp2014
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
chapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdfchapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdf
 
Modélisation avec UML
Modélisation avec UMLModélisation avec UML
Modélisation avec UML
 
Les nouveautés de Groovy 2 -- Mix-IT 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013Les nouveautés de Groovy 2 -- Mix-IT 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013
 

Kürzlich hochgeladen

Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationpapediallo3
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 

Kürzlich hochgeladen (20)

DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'information
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 

POO

  • 2. Notion d’objet  Un objet est une entité cohérente rassemblant des données et du code travaillant sur ces données.
  • 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. 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. 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. L’instanciation Classe Constructeur Les objets instanciés
  • 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. Encapsulation Intérieur de l’objet protégé Complexité dissimulé Maintenance simplifié (centralisation) Echanges avec l’externe sont codifiés
  • 9. Classification : Hiérarchie d’héritage Véhicule Classes abstraites VéhiculeTerrestre Véhicule Aérien Voiture Camion Avion Hélicoptère Permet de gérer la complexité en ordonnant les classes au sein d’arborescences de classes d’abstraction croissante
  • 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. 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. 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. La classification Gé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. 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. 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. 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. 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. 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. 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. Définition d’une classe 1. Ajouter une classe au projet 2. Attribuer un nom à la classe (nom du fichier) 3. Créer le ou les constructeurs 4. Créer un destructeur si nécessaire 5. Déclarer les propriétés 6. Déclarer les méthodes 7. Déclarer les évènements
  • 21. Création d’un constructeur Public 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. Définition des méthodes Public 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. Définition des propriétés Public 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. Restriction sur usage des propriétés Public 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. Définition des évènements Public 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. 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. 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. 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. 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. 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. Exemples d’héritage Public 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 Sub End Class
  • 32. Exemples d’héritage Public Class ClasseDerivee Inherits ClasseBase Private sPrenom As String Public Sub New() End Sub Public Overrides Sub Methode() ' Méthode substituée End Sub End Class
  • 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 base Public Class ClasseDerivee2 Inherits ClasseBase2 Public Sub New(ByVal nom As String) MyBase.New(nom) …. End Sub End Class
  • 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. Liaison tardive Dim 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. 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 : Inherits Interface MonInterface Function TraiterNom(ByVal Nom As String) As String Sub MethodeX(ByVal I As Integer) Sub MethodeX(ByVal S As String) End Interface
  • 37. Implémentation d’une interface  Si une classe implémente une interface, elle doit implémenter l’ensemble des membres de l’interface Public 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 Function End Class
  • 38. Données membres partagées  Permettre à plusieurs instances de partager une même variable de classe Public Class CompeEpargne Private dMontant As Double Public Shared TauxInteret As Double Public Function CalculInterets() As Double Return dMontant * TauxInteret End Function End Class
  • 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