SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

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
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaAziz Darouichi
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismeMouna Torjmen
 
Merise 60 affaires classées
Merise 60 affaires classées  Merise 60 affaires classées
Merise 60 affaires classées oussama ben rejeb
 
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...Mehdi Hamime
 
Correction de td poo n2
Correction de td poo n2Correction de td poo n2
Correction de td poo n2yassine kchiri
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancépierrepo
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationECAM Brussels Engineering School
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)Mahfoud EL HOUDAIGUI
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Abel LIFAEFI MBULA
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeAmir Souissi
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Poo en c++ les relations entre classes
Poo en c++ les relations entre classesPoo en c++ les relations entre classes
Poo en c++ les relations entre classesAmina HAMEURLAINE
 

Mais procurados (20)

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 java
Cours javaCours java
Cours java
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en Java
 
Langage C#
Langage C#Langage C#
Langage C#
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
 
Merise 60 affaires classées
Merise 60 affaires classées  Merise 60 affaires classées
Merise 60 affaires classées
 
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...
 
Correction de td poo n2
Correction de td poo n2Correction de td poo n2
Correction de td poo n2
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 
Chapitre 01 - Notions de base
Chapitre 01 - Notions de baseChapitre 01 - Notions de base
Chapitre 01 - Notions de base
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Poo en c++ les relations entre classes
Poo en c++ les relations entre classesPoo en c++ les relations entre classes
Poo en c++ les relations entre classes
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
 

Destaque

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
 
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
 

Destaque (18)

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
 
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
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 

Semelhante a POO

Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objetsAbdoulaye 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 mansouriMansouri 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 -- 24megaplanet20
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
chapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdfchapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdfMoez Moezm
 
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 2013Guillaume Laforge
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinterRYMAA
 
Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Laurent BUNIET
 

Semelhante a 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
 
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
 
Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2
 

Último

SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 

Último (10)

SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 

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