SlideShare une entreprise Scribd logo
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

Contenu connexe

Tendances

Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
webreaker
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
Abdoulaye Dieng
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
Amir Souissi
 
Cours c++
Cours c++Cours c++
Cours c++
Nahla BelHaj
 
Correction de td poo n3
Correction de td poo n3Correction de td poo n3
Correction de td poo n3
yassine kchiri
 
Chp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOAChp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOA
Lilia Sfaxi
 
PL/SQL:les curseurs
PL/SQL:les curseursPL/SQL:les curseurs
PL/SQL:les curseurs
Abdelouahed Abdou
 
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
ENSET, Université Hassan II Casablanca
 
Chap2 Les conteneurs en python
Chap2 Les conteneurs en pythonChap2 Les conteneurs en python
Chap2 Les conteneurs en python
Mariem ZAOUALI
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
Aziz Darouichi
 
Le langage sql
Le langage sqlLe langage sql
Le langage sql
Abderrahim Aitali
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLI
JihenHedhli1
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
Aziz Darouichi
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
Aziz Darouichi
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3
Abel LIFAEFI MBULA
 
cours Php
cours Phpcours Php
cours Php
mohamednacim
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
NadaBenLatifa
 
PL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de donnéesPL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de données
smiste
 
Introduction à pl/sql
Introduction à pl/sqlIntroduction à pl/sql
Introduction à pl/sql
Abdelouahed Abdou
 

Tendances (20)

Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
Cours c++
Cours c++Cours c++
Cours c++
 
Correction de td poo n3
Correction de td poo n3Correction de td poo n3
Correction de td poo n3
 
Chp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOAChp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOA
 
PL/SQL:les curseurs
PL/SQL:les curseursPL/SQL:les curseurs
PL/SQL:les curseurs
 
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
 
Chap2 Les conteneurs en python
Chap2 Les conteneurs en pythonChap2 Les conteneurs en python
Chap2 Les conteneurs en python
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Le langage sql
Le langage sqlLe langage sql
Le langage sql
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLI
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3
 
cours Php
cours Phpcours Php
cours Php
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
PL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de donnéesPL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de données
 
Introduction à pl/sql
Introduction à pl/sqlIntroduction à pl/sql
Introduction à pl/sql
 

En vedette

Programmation orientée objet avancée
Programmation orientée objet avancéeProgrammation orientée objet avancée
Programmation orientée objet avancée
Mahfoud EL HOUDAIGUI
 
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
Alexandre Jubien
 
API pour les nuls
API pour les nulsAPI pour les nuls
API pour les nuls
Patrick PINTO
 
[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 partie1
Yassine 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ées
Yassine Badri
 
Pdf Et Livre éLectronique
Pdf Et Livre éLectroniquePdf Et Livre éLectronique
Pdf Et Livre éLectronique
lucielefebvre
 
Gestion du temps
Gestion du tempsGestion du temps
Gestion du temps
SEO Freelance
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture REST
Fadel Chafai
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
Yassine Badri
 
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 c
coursuniv
 
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
Sebastien 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 polymorphe
Frederic CAVAZZA
 
Débuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJSDébuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJS
Frédéric DUPERIER
 
Gestion du Temps - Time Management
Gestion du Temps - Time ManagementGestion du Temps - Time Management
Gestion du Temps - Time Management
PSYKOPTIMAL Conseil
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
Ines Ouaz
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
ENSET, Université Hassan II Casablanca
 

En vedette (20)

Programmation orientée objet avancée
Programmation orientée objet avancéeProgrammation orientée objet avancée
Programmation orientée objet avancée
 
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
 

Similaire à POO

POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
ImaneLoukili7
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
YasushiTsubakik
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
Abdoulaye Dieng
 
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
Mansouri Khalifa
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
coursuniv
 
UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24
megaplanet20
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
cyrilgandon
 
Design patterns
Design patternsDesign patterns
Design patterns
Dorra BARTAGUIZ
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
Khalil Lechheb
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
Khalil Lechheb
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
Abdoulaye Dieng
 
chapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdfchapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdf
Moez Moezm
 
Modélisation avec UML
Modélisation avec UMLModélisation avec UML
Modélisation avec UML
ECAM Brussels Engineering School
 
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
Guillaume Laforge
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinter
RYMAA
 

Similaire à 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
 
Csharp2014
Csharp2014Csharp2014
Csharp2014
 
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
 
2006 2007-heritage-en-c++
2006 2007-heritage-en-c++2006 2007-heritage-en-c++
2006 2007-heritage-en-c++
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinter
 

Dernier

apprendre-a-programmer-avec-python-3.pdf
apprendre-a-programmer-avec-python-3.pdfapprendre-a-programmer-avec-python-3.pdf
apprendre-a-programmer-avec-python-3.pdf
kamouzou878
 
[218_phot_d'Autriche-Hongrie_et_des_[...]Vaffier_Hubert_btv1b8594559c.pdf
[218_phot_d'Autriche-Hongrie_et_des_[...]Vaffier_Hubert_btv1b8594559c.pdf[218_phot_d'Autriche-Hongrie_et_des_[...]Vaffier_Hubert_btv1b8594559c.pdf
[218_phot_d'Autriche-Hongrie_et_des_[...]Vaffier_Hubert_btv1b8594559c.pdf
mcevapi3
 
MS-203 Microsoft 365 Messaging Study Guide to prepare the certification
MS-203 Microsoft 365 Messaging Study Guide to prepare the certificationMS-203 Microsoft 365 Messaging Study Guide to prepare the certification
MS-203 Microsoft 365 Messaging Study Guide to prepare the certification
OlivierLumeau1
 
Microbiologie: le monde microbien et les techniques de mise en évidence.
Microbiologie: le monde microbien et les techniques de mise en évidence.Microbiologie: le monde microbien et les techniques de mise en évidence.
Microbiologie: le monde microbien et les techniques de mise en évidence.
MahouwetinJacquesGBO
 
A2-Critiques-gastronomiques activités critiques
A2-Critiques-gastronomiques activités critiquesA2-Critiques-gastronomiques activités critiques
A2-Critiques-gastronomiques activités critiques
lebaobabbleu
 
A2-Faire-une-appreciation positive et/ou négative (A2)
A2-Faire-une-appreciation positive et/ou négative (A2)A2-Faire-une-appreciation positive et/ou négative (A2)
A2-Faire-une-appreciation positive et/ou négative (A2)
lebaobabbleu
 
Zineb Mekouar.pptx Écrivaine marocaine
Zineb Mekouar.pptx   Écrivaine  marocaineZineb Mekouar.pptx   Écrivaine  marocaine
Zineb Mekouar.pptx Écrivaine marocaine
Txaruka
 
1eT Revolutions Empire Revolution Empire
1eT Revolutions Empire Revolution Empire1eT Revolutions Empire Revolution Empire
1eT Revolutions Empire Revolution Empire
NadineHG
 
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
Editions La Dondaine
 
Formation M2i - Attitude constructive : développer l'art de l'optimisme
Formation M2i - Attitude constructive : développer l'art de l'optimismeFormation M2i - Attitude constructive : développer l'art de l'optimisme
Formation M2i - Attitude constructive : développer l'art de l'optimisme
M2i Formation
 
MARTYRS DE HOLLANDE - La révolte hollandaise et les guerres de religion..pptx
MARTYRS DE HOLLANDE - La révolte hollandaise et les guerres de religion..pptxMARTYRS DE HOLLANDE - La révolte hollandaise et les guerres de religion..pptx
MARTYRS DE HOLLANDE - La révolte hollandaise et les guerres de religion..pptx
Martin M Flynn
 
Manuel-5.-Elevage-de-poisson-chat-africain-Clarias-gariepinus-en-bacs-hors-so...
Manuel-5.-Elevage-de-poisson-chat-africain-Clarias-gariepinus-en-bacs-hors-so...Manuel-5.-Elevage-de-poisson-chat-africain-Clarias-gariepinus-en-bacs-hors-so...
Manuel-5.-Elevage-de-poisson-chat-africain-Clarias-gariepinus-en-bacs-hors-so...
dokposeverin
 
Burkina Faso libraries newsletter for June 2024
Burkina Faso libraries newsletter for June 2024Burkina Faso libraries newsletter for June 2024
Burkina Faso libraries newsletter for June 2024
Friends of African Village Libraries
 

Dernier (13)

apprendre-a-programmer-avec-python-3.pdf
apprendre-a-programmer-avec-python-3.pdfapprendre-a-programmer-avec-python-3.pdf
apprendre-a-programmer-avec-python-3.pdf
 
[218_phot_d'Autriche-Hongrie_et_des_[...]Vaffier_Hubert_btv1b8594559c.pdf
[218_phot_d'Autriche-Hongrie_et_des_[...]Vaffier_Hubert_btv1b8594559c.pdf[218_phot_d'Autriche-Hongrie_et_des_[...]Vaffier_Hubert_btv1b8594559c.pdf
[218_phot_d'Autriche-Hongrie_et_des_[...]Vaffier_Hubert_btv1b8594559c.pdf
 
MS-203 Microsoft 365 Messaging Study Guide to prepare the certification
MS-203 Microsoft 365 Messaging Study Guide to prepare the certificationMS-203 Microsoft 365 Messaging Study Guide to prepare the certification
MS-203 Microsoft 365 Messaging Study Guide to prepare the certification
 
Microbiologie: le monde microbien et les techniques de mise en évidence.
Microbiologie: le monde microbien et les techniques de mise en évidence.Microbiologie: le monde microbien et les techniques de mise en évidence.
Microbiologie: le monde microbien et les techniques de mise en évidence.
 
A2-Critiques-gastronomiques activités critiques
A2-Critiques-gastronomiques activités critiquesA2-Critiques-gastronomiques activités critiques
A2-Critiques-gastronomiques activités critiques
 
A2-Faire-une-appreciation positive et/ou négative (A2)
A2-Faire-une-appreciation positive et/ou négative (A2)A2-Faire-une-appreciation positive et/ou négative (A2)
A2-Faire-une-appreciation positive et/ou négative (A2)
 
Zineb Mekouar.pptx Écrivaine marocaine
Zineb Mekouar.pptx   Écrivaine  marocaineZineb Mekouar.pptx   Écrivaine  marocaine
Zineb Mekouar.pptx Écrivaine marocaine
 
1eT Revolutions Empire Revolution Empire
1eT Revolutions Empire Revolution Empire1eT Revolutions Empire Revolution Empire
1eT Revolutions Empire Revolution Empire
 
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
 
Formation M2i - Attitude constructive : développer l'art de l'optimisme
Formation M2i - Attitude constructive : développer l'art de l'optimismeFormation M2i - Attitude constructive : développer l'art de l'optimisme
Formation M2i - Attitude constructive : développer l'art de l'optimisme
 
MARTYRS DE HOLLANDE - La révolte hollandaise et les guerres de religion..pptx
MARTYRS DE HOLLANDE - La révolte hollandaise et les guerres de religion..pptxMARTYRS DE HOLLANDE - La révolte hollandaise et les guerres de religion..pptx
MARTYRS DE HOLLANDE - La révolte hollandaise et les guerres de religion..pptx
 
Manuel-5.-Elevage-de-poisson-chat-africain-Clarias-gariepinus-en-bacs-hors-so...
Manuel-5.-Elevage-de-poisson-chat-africain-Clarias-gariepinus-en-bacs-hors-so...Manuel-5.-Elevage-de-poisson-chat-africain-Clarias-gariepinus-en-bacs-hors-so...
Manuel-5.-Elevage-de-poisson-chat-africain-Clarias-gariepinus-en-bacs-hors-so...
 
Burkina Faso libraries newsletter for June 2024
Burkina Faso libraries newsletter for June 2024Burkina Faso libraries newsletter for June 2024
Burkina Faso libraries newsletter for June 2024
 

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