Programmation Orientée
Objet en C++
Pr. Azeddine Zahi
azeddine.zahi@usmba.ac.ma
Pr. Rachid Ben abbou
rachid.benabbou@usmba.ac.ma
 Introduction
 Programmation Structurée :Principes et
limitations
Chapitre1: Concepts de la
programmation Orientée Objet
limitations
 Programmation Orientée Objet: Principes et
Concepts
Introduction
Introduction
 Programmation : Activité qui consiste à exprimer la solution
d’un problème sous forme d’un programme
4
d’un problème sous forme d’un programme
 Paradigme de programmation : Modèle de pensée qui
oriente la réflexion, la recherche et l’écriture d’un programme
Introduction
 Plusieurs paradigmes de programmation:
 Fonctionnelle,
 Logique,
 Structurée,
5
 Structurée,
 Orientée objet,
 Web,
 Etc,
 Origine
 Principe
 Critiques et limitations
 Solution
Programmation structurée
Critiques et limitations
 Solution
Programmation structurée — Origine
 Equation de Wirth, Livre publié en 1976
Algorithmes
7
Algorithmes
Structures de
données
Programmes
Programmation structurée — Principe
 Dissociation entre les données et les traitements :les
structures de données et les algorithmes sont développés
séparément
 Approche descendante : le programme est découpé en
8
 Approche descendante : le programme est découpé en
fonctions dépendantes qui agissent sur les structures de
données
Données
fonction 1
fonction 2
fonction n
Programmation structurée — Critiques
 Difficulté de modification d’un programme
 Changement d’une structure de données
 Modification du prototype d’une fonction
9
 Difficulté de réutilisabilité partielle ou totale d’un programme
 Absence de la protection des données
Programmation structurée — Critiques
 Changement d’une structure de données
10
Changement profond des fonctions
Le moindre changement dans les
structures de données
Programmation structurée — Critiques
 Changement d’une structure de données : Exemple
 Calcul du produit de deux matrices complexes C= C1*C2
 Choix des structures de données— Solution 1
11
 Choix des structures de données— Solution 1
 Un nombre complexe est représenté par deux variables réelles
 Une matrice de complexes est représentée par deux matrices réelles
Programmation structurée — Critiques
 Changement d’une structure de données : Exemple
 Calcul du produit de deux matrices complexes C= C1*C2
 Choix des fonctions — Solution 1
Prototype Description
12
main
sMatCompl affMatCompl
prodMatComp
prodNombCompl
prodLigColCompl
affNomCompl
Prototype Description
affMatCompl Saisit une matrice de complexes
affNomCompl Affiche un nombre complexe
prodNomCompl Calcule le produit de deux nombres complexes
prodLigColCom
pl
Calcule le produit d’une ligne de complexes par
une colonnes de complexes
prodMatCompl Calcule le produit de deux matrices de complexes
main • Saisit deux matrices de complexes
• Calcule leur produit
• Affiche la matrice de complexes résultante
Programmation structurée — Critiques
 Changement d’une structure de données : Exemple
 Calcul du produit de deux matrices complexes C= C1*C2
 Choix des structures de données— Solution 2
13
 Choix des structures de données— Solution 2
 Un nombre complexe est représenté par une structure à deux champs
réels
 Une matrice complexe est représentée par un tableau bidimensionnel de
structures de complexes
Il est claire que le remplacement de la solution 1 avec la solution 2
entraine le changement de toutes les fonctions
Programmation structurée — Critiques
 Modification de l’interface (prototype) d’une fonction
 Conception "plat de spaghettis" : Les fonctions s’appellent entre
elles à plusieurs endroits avec imbrication des appels
Fonction1( )
14
Fonction1( )
-------
------
Fonction 2( )
-------
------
Fonction 5( )
-------
------
Fonction 3( )
-------
------
Fonction 4( )
-------
------
Lisibilité faible
• Comment identifier la responsabilité d’une
fonction? qui fait quoi?
• Comment identifier tous les endroits d’appel
de cette fonction?
la modification d’une fonction devient une
tâche délicate
Programmation structurée — Critiques
 Pas de protection des données : Les structures de données
 Sont accessibles par les fonctions définies et la fonction main
 Peuvent être modifiées de n’importe quel point du programme
15
Risque d’incohérence dans le cas de modification
multiples de la structure de données
Programmation structurée — Critiques
 Réutilisabilité difficile
 Impossible de réutiliser une fonction existante qui opère sur des
structures de données différentes
16
structures de données différentes
 Pour réutiliser une fonction Il faut intégrer toutes les fonctions
appelées directement ou indirectement dans cette fonction
Programmation structurée — Solution
 Programmation Orientée Objets — POO
 Évolution de la programmation structurée : Apporte des solutions
aux différentes limitations
17
 Conception proche du monde réel : les programmes reflètent la
réalité du problème
Programmation Orientée Objet — Principes
 Intégration des données et des traitements au sein d’une
même entité : l’objet
Fonction1 Fonction2
Objet = données + méthodes
18
Données
Fonction 5 Fonction3
Fonction 4
Répond à la problématique du changement des structures
de données et de la modification de l’interface des fonctions
Objet = données + méthodes
Programmation Orientée Objet — Principes
 Programme = ensemble d’objets qui interagissent et
communiquent par messages
Fonction1
Fonction 5
Fonction2
Fonction1 Fonction2
19
Données
Fonction 5
Fonction3
Fonction 4
Données
Fonction 5
Fonction 3
Fonction 4
Données
Fonction1
Fonction 5
Fonction 3
Fonction2
Fonction 4
Programmation Orientée Objet — Principes
 Encapsulation
 Cacher la partie données d’un objet afin d’empêcher l’accès externes
(les autres objets du programme)
 Contrôler l’accès aux données : Seules les méthodes de cet objet
20
 Contrôler l’accès aux données : Seules les méthodes de cet objet
peuvent y accéder.
 Intérêt: Une modification interne n’influence pas le fonctionnement
général du programme
Répond à la problématique de la
protection des données
Programmation Orientée Objet — Principes
 Abstraction
 Montrer le comportement d’un objet: Un objet
n’est vu que par ses spécifications
 Définir l’Interface de l’objet pour interagir avec
l’environnement externe: un ensemble de
21
l’environnement externe: un ensemble de
méthodes.
 Intérêt : Epargner la connaissance de la
structure interne de l’objet et l’implémentation de
ses méthodes.
Répond à la problématique de
la Réutilisabilité
Programmation Orientée Objet — Principes
 Encapsulation/Abstraction
22
Méthodes Attributs
Interface
Programmation Orientée Objet — Apports
 Plus de modularité : l’unité de modularité est l’objet
 Meilleure lisibilité: les données et les méthodes sont
spécifiées au même endroit
 Meilleure conception : plus de réutilisabilité et d’extensibilité
23
 Meilleure conception : plus de réutilisabilité et d’extensibilité
et facilité de changement
 Plus de sécurité : protection des données et interaction à
travers l’interface
Amélioration des critères de
la qualité logicielle
 Classe et Objets
 Message et méthodes
 Héritage simple et multiple
 Polymorphisme

Programmation Orientée Objet
Concepts
 Agrégation
Programmation Orientée Objet — Concepts
 Objet
 Entité représentant un objet du monde réel (le monde du
problème)
 Objets tangibles: voiture, personne, avion, etc.
25
 Objets tangibles: voiture, personne, avion, etc.
 Objets conceptuels: date, nombre, voyage, inscription, etc.
 Se caractérise par:
 Une identité unique (code)
 Un état interne (valeurs des attributs à un instant donné)
 Un comportement (les méthodes exécutées en réaction aux messages
des autres objets )
Programmation Orientée Objet — Concepts
 Classe
 Description d’un ensemble d’objets ayant la même
structure le même comportement
 La structure d’une classe est composée de deux
26
 La structure d’une classe est composée de deux
parties :
Attributs
Attribut1
Attribut2
Méthodes
Méthode1( )
Méthode2( )
Classe A
 Attributs: un ensemble de champs
représentant la structure des objets
 Méthodes : un ensemble de fonctions
représentant le comportement des objets
Programmation Orientée Objet — Concepts
 Classe — Instanciation
 Création d’un objet d’une classe; les
objets crées sont appelés instances
Attributs
Attribut1
Attribut2
Méthodes
Classe
A
27
Programmation
Procédurale
Variable Type
Programmation
orientée Objets
Objet Classe
O1
Objet de la classe A
Méthodes
Méthode1( )
Méthode2( )
Programmation Orientée Objet — Concepts
Exemple
Attributs
numéro
CIN
Nom
Prénom
Adresse
Classe
28
Exemple
classe Compte bancaire
Adresse
Solde
Méthodes
Créer_compte( )
Afficher_solde( )
Retirer( )
Déposer( )
Fermer_compte()
Compte 1
Compte 2
Instances
Programmation Orientée Objet — Concepts
 Méthodes et envoi de message
 Le comportement des objets est décrit au niveau de leur classe
par un ensemble de méthodes
 L’interaction (communication) avec un objet
29
 L’interaction (communication) avec un objet
 Un objet client demande un service à un autre objet
 Comment ?: envoi d’un message —Indiquer à l’objet ce qu’il doit faire en
invoquant la méthode adéquate
Afficher( )
instance
O1
Affiche toi Classe
Programmation Orientée Objet — Concepts
 Héritage
 Permet de modéliser la relation de type « est une »
entre classes
 Permet de définir une classe à partir d’une ou
30
 Permet de définir une classe à partir d’une ou
plusieurs classes existantes
 Deux types d’héritage
 Héritage simple : une classe hérite d’une seule classe
 Héritage multiple: une classe hérite de plusieurs classes
Programmation Orientée Objets — Concepts
 Héritage : peut être utilisé dans l’objectif de:
 Spécialisation: ajouter de nouveaux attributs et de nouvelles
méthodes
31
méthodes
 Généralisation : factoriser les propriétés communes aux
classes dérivées
Programmation Orientée Objet — Concepts
 Héritage simple — Terminologie et Représentation graphique
 La classe B hérite de la classe A
 La classe A est dite la super-classe ou la classe de base
32
 La classe B est dite la sous-classe ou la classe dérivée
A
B
Programmation Orientée Objet — Concepts
 Héritage Simple : B une classe qui hérite d’une classe A
 B dispose implicitement de tous les attributs et de toutes les
méthodes de la classe A
33
méthodes de la classe A
 Les attributs et les méthodes de la classe B sont prioritaires par
rapport aux attributs et méthodes de même nom définis dans la
classe A
Programmation Orientée Objet — Concepts
 Héritage simple : Hiérarchie
 L’héritage n’est pas limité à un seul niveau, une hiérarchie
de classes peut être définie
A
B
34
de classes peut être définie
 La profondeur de la hiérarchie doit être raisonnable C
D
Programmation Orientée Objet — Concepts
 Héritage Simple — Exemple d’hiérarchie
Personne
35
Etudiant
Employé
Ingénieur Technicien
Etudiant_Boursier Etudiant_NonBoursier
Programmation Orientée Objet — Concepts
 Héritage Simple — A éviter
 Hiérarchies trop lourdes : il ne faut pas en abuser !!!
36
 Héritage de construction: La classe voiture ne doit pas hériter de
la classe roue
 Incohérences conceptuelles: Les attributs ou les méthodes de la
classe de base ne sont pas compatibles avec la classe dérivée
Programmation Orientée Objet — Concepts
 Classes Abstraites
 Intérêt — définir un cadre de travail pour les classes dérivées :
généralisation
 Une classe abstraite est une classe où certaines méthodes ne
37
 Une classe abstraite est une classe où certaines méthodes ne
sont pas implémentées
 La classe abstraite ne peut pas être instanciée
Méthodes
Abstraite Méthode1( )
Méthode2( )
Objet de la classe A O1
Classe abstraite A
Programmation Orientée Objet — Concepts
 Classes Abstraites: Exemple
Forme
--------
Abstraite dessiner( )
38
Triangle
--------
dessiner( )
--------
--------
Carre
--------
dessiner( )
--------
Cercle
--------
dessiner( )
--------
Programmation Orientée Objet — Concepts
 Héritage Multiple —Une classe hérite de plusieurs classes à
la fois
39
A B C
D
Programmation Orientée Objet — Concepts
 Héritage Multiple — Exemple
Etudiant Employé
40
Etudiant Employé
Etudiant_Salarié
Programmation Orientée Objet — Concepts
 Héritage Multiple — Conflits
Etudiant
-------
code (CNE)
-------
Employé
-------
code (doti)
-------
41
Etudiant_salarié
-------
code
code
-------
-------
!!!
Des super-classes possèdent des attributs
ou méthodes ayant le même nom
Programmation Orientée Objet — Concepts
 Héritage Multiple — Résolution de Conflits
Considérer que tout conflit est une erreur
42
Revoir la conception
Programmation Orientée Objet — Concepts
 Héritage Multiple — Résolution de Conflits
Définir un ordre entre les classes de base
Etudiant
Employé
Priorité 1 Priorité 2
43
Etudiant
-------
nom
-------
Employé
-------
nom
-------
Etudiant_salarié
-------
nom
-------
Programmation Orientée Objet — Concepts
 Héritage Multiple — Résolution de Conflits
Etudiant
-------
code (CNE)
-------
Employé
-------
code (doti)
-------
44
code (CNE)
-------
code (doti)
-------
Etudiant_salarié
-------
code (Employé)
code (Etudiant)
-------
 Dupliquer le membre qui présente un
conflit
 Préfixer le membre qui présente un
conflit par le nom de la classe d’origine.
Programmation Orientée Objet — Concepts
 Héritage Multiple Personne
-------
nom
-------
45
Etudiant
Employé
Etudiant_salarié
-------
nom
nom
-------
!!!
 Conflits :Un membre (attribut ou méthode) est
hérité plusieurs fois par une classe dérivée
 Résolution : Utiliser les possibilités du langage de
programmation
Programmation Orientée Objet — Concepts
 Polymorphisme
 Capacité d’une entité à prendre plusieurs formes
 L’entité polymorphe prend la forme adéquate au cours de
l’exécution
46
l’exécution
Changement (vert )
Voiture
Vélo
Démarrage des
véhicules
- Débrayer
- Passer la première
- Accélérer
- Embrayer
Pédaler
Feu
Programmation Orientée Objet — Concepts
 Polymorphisme: Trois types
 Polymorphisme paramétrique : Définir la même fonction avec des
paramètres de type différents
 Polymorphisme ad hoc — Surcharge : Définir la même fonction
47
 Polymorphisme ad hoc — Surcharge : Définir la même fonction
dans des classes sans rapport
 Polymorphisme d’héritage — Redéfinition: Spécialiser des
méthodes de la super-classe pour les classes dérivées
Programmation Orientée Objet — Concepts
 Polymorphisme d’héritage — Exemple
Forme
--------
Abstraite dessiner( )
--------
La méthode dessiner() est définie
dans la classe Forme
La méthode dessiner() est redéfinie
48
Triangle
--------
dessiner( )
--------
--------
Carre
--------
dessiner( )
--------
Cercle
--------
dessiner( )
--------
La méthode dessiner() est redéfinie
dans chacune des classes dérivées
(différemment)
Programmation Orientée Objet — Concepts
 Polymorphisme d’héritage — Exemple
Forme
--------
Abstraite dessiner( )
--------
On maintient un pointeur de type Forme
remplie avec un objet des classes
dérivées
49
Triangle
--------
dessiner( )
--------
Carre
--------
dessiner( )
--------
Cercle
--------
dessiner( )
--------
dérivées
Le choix de la bonne méthode dessiner()
est retardé au moment de l’exécution
Programmation Orientée Objet — Concepts
 Association
 Modélise la relation de coopération entre les classes
 Les objets ont leur propre cycle de vie et il n’y a pas de propriétaire:
les objets peuvent être créés et supprimés indépendamment
50
les objets peuvent être créés et supprimés indépendamment
 Implémentation: l’un des attributs de la classe maintient des instances
de l’autre classe
Enseignant Etudiant
Enseigne plusieurs
Programmation Orientée Objet — Concepts
 Agrégation
 Une forme plus intime d’association
 Les objets ont leur propre cycle de vie, mais il existe des propriétaires
: les objets enfants ne peuvent pas appartenir à un autre objet parent,
51
: les objets enfants ne peuvent pas appartenir à un autre objet parent,
mais peuvent être créés et supprimés indépendamment.
 Implémentation: l’un des attributs de la classe maintient des instances
de l’autre classe
Enseignant Département
Appartient
Programmation Orientée Objet — Concepts
 Composition
 Une forme plus forte d’agrégation qui modélise la relation de type " est
composé de " entre les classes
 L’objet enfant n’a pas son cycle de vie et si l’objet parent est supprimé,
52
 L’objet enfant n’a pas son cycle de vie et si l’objet parent est supprimé,
tous les objets enfants seront également supprimés.
 Implémentation: l’un des attributs de la classe maintient des instances
de l’autre classe
Ordinateur Clavier
contient
 Classification
 Tout LOO doit satisfaire 3 concepts de base et peut
implémenter d’autres concepts complémentaires.
 Classe et instances
 Message et méthodes
Langages Orientés Objets
53
 Message et méthodes
 Héritage simple
 Concepts complémentaires
 Héritage multiple
 Polymorphisme
 Agrégation
Impacts sur les autres nivaux
 Bases de Données
 Modèles: relationnel -objet
 Langage d’interrogation : OQL – Object Query Langage
 SGBD
54
 SGBD
 Méthodologies de conception
 Méthodes d’Analyse et de Conception
 Processus logiciel
 Langage de modélisation

POO -- (programmation orienté objet).pdf

  • 1.
    Programmation Orientée Objet enC++ Pr. Azeddine Zahi azeddine.zahi@usmba.ac.ma Pr. Rachid Ben abbou rachid.benabbou@usmba.ac.ma
  • 2.
     Introduction  ProgrammationStructurée :Principes et limitations Chapitre1: Concepts de la programmation Orientée Objet limitations  Programmation Orientée Objet: Principes et Concepts
  • 3.
  • 4.
    Introduction  Programmation :Activité qui consiste à exprimer la solution d’un problème sous forme d’un programme 4 d’un problème sous forme d’un programme  Paradigme de programmation : Modèle de pensée qui oriente la réflexion, la recherche et l’écriture d’un programme
  • 5.
    Introduction  Plusieurs paradigmesde programmation:  Fonctionnelle,  Logique,  Structurée, 5  Structurée,  Orientée objet,  Web,  Etc,
  • 6.
     Origine  Principe Critiques et limitations  Solution Programmation structurée Critiques et limitations  Solution
  • 7.
    Programmation structurée —Origine  Equation de Wirth, Livre publié en 1976 Algorithmes 7 Algorithmes Structures de données Programmes
  • 8.
    Programmation structurée —Principe  Dissociation entre les données et les traitements :les structures de données et les algorithmes sont développés séparément  Approche descendante : le programme est découpé en 8  Approche descendante : le programme est découpé en fonctions dépendantes qui agissent sur les structures de données Données fonction 1 fonction 2 fonction n
  • 9.
    Programmation structurée —Critiques  Difficulté de modification d’un programme  Changement d’une structure de données  Modification du prototype d’une fonction 9  Difficulté de réutilisabilité partielle ou totale d’un programme  Absence de la protection des données
  • 10.
    Programmation structurée —Critiques  Changement d’une structure de données 10 Changement profond des fonctions Le moindre changement dans les structures de données
  • 11.
    Programmation structurée —Critiques  Changement d’une structure de données : Exemple  Calcul du produit de deux matrices complexes C= C1*C2  Choix des structures de données— Solution 1 11  Choix des structures de données— Solution 1  Un nombre complexe est représenté par deux variables réelles  Une matrice de complexes est représentée par deux matrices réelles
  • 12.
    Programmation structurée —Critiques  Changement d’une structure de données : Exemple  Calcul du produit de deux matrices complexes C= C1*C2  Choix des fonctions — Solution 1 Prototype Description 12 main sMatCompl affMatCompl prodMatComp prodNombCompl prodLigColCompl affNomCompl Prototype Description affMatCompl Saisit une matrice de complexes affNomCompl Affiche un nombre complexe prodNomCompl Calcule le produit de deux nombres complexes prodLigColCom pl Calcule le produit d’une ligne de complexes par une colonnes de complexes prodMatCompl Calcule le produit de deux matrices de complexes main • Saisit deux matrices de complexes • Calcule leur produit • Affiche la matrice de complexes résultante
  • 13.
    Programmation structurée —Critiques  Changement d’une structure de données : Exemple  Calcul du produit de deux matrices complexes C= C1*C2  Choix des structures de données— Solution 2 13  Choix des structures de données— Solution 2  Un nombre complexe est représenté par une structure à deux champs réels  Une matrice complexe est représentée par un tableau bidimensionnel de structures de complexes Il est claire que le remplacement de la solution 1 avec la solution 2 entraine le changement de toutes les fonctions
  • 14.
    Programmation structurée —Critiques  Modification de l’interface (prototype) d’une fonction  Conception "plat de spaghettis" : Les fonctions s’appellent entre elles à plusieurs endroits avec imbrication des appels Fonction1( ) 14 Fonction1( ) ------- ------ Fonction 2( ) ------- ------ Fonction 5( ) ------- ------ Fonction 3( ) ------- ------ Fonction 4( ) ------- ------ Lisibilité faible • Comment identifier la responsabilité d’une fonction? qui fait quoi? • Comment identifier tous les endroits d’appel de cette fonction? la modification d’une fonction devient une tâche délicate
  • 15.
    Programmation structurée —Critiques  Pas de protection des données : Les structures de données  Sont accessibles par les fonctions définies et la fonction main  Peuvent être modifiées de n’importe quel point du programme 15 Risque d’incohérence dans le cas de modification multiples de la structure de données
  • 16.
    Programmation structurée —Critiques  Réutilisabilité difficile  Impossible de réutiliser une fonction existante qui opère sur des structures de données différentes 16 structures de données différentes  Pour réutiliser une fonction Il faut intégrer toutes les fonctions appelées directement ou indirectement dans cette fonction
  • 17.
    Programmation structurée —Solution  Programmation Orientée Objets — POO  Évolution de la programmation structurée : Apporte des solutions aux différentes limitations 17  Conception proche du monde réel : les programmes reflètent la réalité du problème
  • 18.
    Programmation Orientée Objet— Principes  Intégration des données et des traitements au sein d’une même entité : l’objet Fonction1 Fonction2 Objet = données + méthodes 18 Données Fonction 5 Fonction3 Fonction 4 Répond à la problématique du changement des structures de données et de la modification de l’interface des fonctions Objet = données + méthodes
  • 19.
    Programmation Orientée Objet— Principes  Programme = ensemble d’objets qui interagissent et communiquent par messages Fonction1 Fonction 5 Fonction2 Fonction1 Fonction2 19 Données Fonction 5 Fonction3 Fonction 4 Données Fonction 5 Fonction 3 Fonction 4 Données Fonction1 Fonction 5 Fonction 3 Fonction2 Fonction 4
  • 20.
    Programmation Orientée Objet— Principes  Encapsulation  Cacher la partie données d’un objet afin d’empêcher l’accès externes (les autres objets du programme)  Contrôler l’accès aux données : Seules les méthodes de cet objet 20  Contrôler l’accès aux données : Seules les méthodes de cet objet peuvent y accéder.  Intérêt: Une modification interne n’influence pas le fonctionnement général du programme Répond à la problématique de la protection des données
  • 21.
    Programmation Orientée Objet— Principes  Abstraction  Montrer le comportement d’un objet: Un objet n’est vu que par ses spécifications  Définir l’Interface de l’objet pour interagir avec l’environnement externe: un ensemble de 21 l’environnement externe: un ensemble de méthodes.  Intérêt : Epargner la connaissance de la structure interne de l’objet et l’implémentation de ses méthodes. Répond à la problématique de la Réutilisabilité
  • 22.
    Programmation Orientée Objet— Principes  Encapsulation/Abstraction 22 Méthodes Attributs Interface
  • 23.
    Programmation Orientée Objet— Apports  Plus de modularité : l’unité de modularité est l’objet  Meilleure lisibilité: les données et les méthodes sont spécifiées au même endroit  Meilleure conception : plus de réutilisabilité et d’extensibilité 23  Meilleure conception : plus de réutilisabilité et d’extensibilité et facilité de changement  Plus de sécurité : protection des données et interaction à travers l’interface Amélioration des critères de la qualité logicielle
  • 24.
     Classe etObjets  Message et méthodes  Héritage simple et multiple  Polymorphisme  Programmation Orientée Objet Concepts  Agrégation
  • 25.
    Programmation Orientée Objet— Concepts  Objet  Entité représentant un objet du monde réel (le monde du problème)  Objets tangibles: voiture, personne, avion, etc. 25  Objets tangibles: voiture, personne, avion, etc.  Objets conceptuels: date, nombre, voyage, inscription, etc.  Se caractérise par:  Une identité unique (code)  Un état interne (valeurs des attributs à un instant donné)  Un comportement (les méthodes exécutées en réaction aux messages des autres objets )
  • 26.
    Programmation Orientée Objet— Concepts  Classe  Description d’un ensemble d’objets ayant la même structure le même comportement  La structure d’une classe est composée de deux 26  La structure d’une classe est composée de deux parties : Attributs Attribut1 Attribut2 Méthodes Méthode1( ) Méthode2( ) Classe A  Attributs: un ensemble de champs représentant la structure des objets  Méthodes : un ensemble de fonctions représentant le comportement des objets
  • 27.
    Programmation Orientée Objet— Concepts  Classe — Instanciation  Création d’un objet d’une classe; les objets crées sont appelés instances Attributs Attribut1 Attribut2 Méthodes Classe A 27 Programmation Procédurale Variable Type Programmation orientée Objets Objet Classe O1 Objet de la classe A Méthodes Méthode1( ) Méthode2( )
  • 28.
    Programmation Orientée Objet— Concepts Exemple Attributs numéro CIN Nom Prénom Adresse Classe 28 Exemple classe Compte bancaire Adresse Solde Méthodes Créer_compte( ) Afficher_solde( ) Retirer( ) Déposer( ) Fermer_compte() Compte 1 Compte 2 Instances
  • 29.
    Programmation Orientée Objet— Concepts  Méthodes et envoi de message  Le comportement des objets est décrit au niveau de leur classe par un ensemble de méthodes  L’interaction (communication) avec un objet 29  L’interaction (communication) avec un objet  Un objet client demande un service à un autre objet  Comment ?: envoi d’un message —Indiquer à l’objet ce qu’il doit faire en invoquant la méthode adéquate Afficher( ) instance O1 Affiche toi Classe
  • 30.
    Programmation Orientée Objet— Concepts  Héritage  Permet de modéliser la relation de type « est une » entre classes  Permet de définir une classe à partir d’une ou 30  Permet de définir une classe à partir d’une ou plusieurs classes existantes  Deux types d’héritage  Héritage simple : une classe hérite d’une seule classe  Héritage multiple: une classe hérite de plusieurs classes
  • 31.
    Programmation Orientée Objets— Concepts  Héritage : peut être utilisé dans l’objectif de:  Spécialisation: ajouter de nouveaux attributs et de nouvelles méthodes 31 méthodes  Généralisation : factoriser les propriétés communes aux classes dérivées
  • 32.
    Programmation Orientée Objet— Concepts  Héritage simple — Terminologie et Représentation graphique  La classe B hérite de la classe A  La classe A est dite la super-classe ou la classe de base 32  La classe B est dite la sous-classe ou la classe dérivée A B
  • 33.
    Programmation Orientée Objet— Concepts  Héritage Simple : B une classe qui hérite d’une classe A  B dispose implicitement de tous les attributs et de toutes les méthodes de la classe A 33 méthodes de la classe A  Les attributs et les méthodes de la classe B sont prioritaires par rapport aux attributs et méthodes de même nom définis dans la classe A
  • 34.
    Programmation Orientée Objet— Concepts  Héritage simple : Hiérarchie  L’héritage n’est pas limité à un seul niveau, une hiérarchie de classes peut être définie A B 34 de classes peut être définie  La profondeur de la hiérarchie doit être raisonnable C D
  • 35.
    Programmation Orientée Objet— Concepts  Héritage Simple — Exemple d’hiérarchie Personne 35 Etudiant Employé Ingénieur Technicien Etudiant_Boursier Etudiant_NonBoursier
  • 36.
    Programmation Orientée Objet— Concepts  Héritage Simple — A éviter  Hiérarchies trop lourdes : il ne faut pas en abuser !!! 36  Héritage de construction: La classe voiture ne doit pas hériter de la classe roue  Incohérences conceptuelles: Les attributs ou les méthodes de la classe de base ne sont pas compatibles avec la classe dérivée
  • 37.
    Programmation Orientée Objet— Concepts  Classes Abstraites  Intérêt — définir un cadre de travail pour les classes dérivées : généralisation  Une classe abstraite est une classe où certaines méthodes ne 37  Une classe abstraite est une classe où certaines méthodes ne sont pas implémentées  La classe abstraite ne peut pas être instanciée Méthodes Abstraite Méthode1( ) Méthode2( ) Objet de la classe A O1 Classe abstraite A
  • 38.
    Programmation Orientée Objet— Concepts  Classes Abstraites: Exemple Forme -------- Abstraite dessiner( ) 38 Triangle -------- dessiner( ) -------- -------- Carre -------- dessiner( ) -------- Cercle -------- dessiner( ) --------
  • 39.
    Programmation Orientée Objet— Concepts  Héritage Multiple —Une classe hérite de plusieurs classes à la fois 39 A B C D
  • 40.
    Programmation Orientée Objet— Concepts  Héritage Multiple — Exemple Etudiant Employé 40 Etudiant Employé Etudiant_Salarié
  • 41.
    Programmation Orientée Objet— Concepts  Héritage Multiple — Conflits Etudiant ------- code (CNE) ------- Employé ------- code (doti) ------- 41 Etudiant_salarié ------- code code ------- ------- !!! Des super-classes possèdent des attributs ou méthodes ayant le même nom
  • 42.
    Programmation Orientée Objet— Concepts  Héritage Multiple — Résolution de Conflits Considérer que tout conflit est une erreur 42 Revoir la conception
  • 43.
    Programmation Orientée Objet— Concepts  Héritage Multiple — Résolution de Conflits Définir un ordre entre les classes de base Etudiant Employé Priorité 1 Priorité 2 43 Etudiant ------- nom ------- Employé ------- nom ------- Etudiant_salarié ------- nom -------
  • 44.
    Programmation Orientée Objet— Concepts  Héritage Multiple — Résolution de Conflits Etudiant ------- code (CNE) ------- Employé ------- code (doti) ------- 44 code (CNE) ------- code (doti) ------- Etudiant_salarié ------- code (Employé) code (Etudiant) -------  Dupliquer le membre qui présente un conflit  Préfixer le membre qui présente un conflit par le nom de la classe d’origine.
  • 45.
    Programmation Orientée Objet— Concepts  Héritage Multiple Personne ------- nom ------- 45 Etudiant Employé Etudiant_salarié ------- nom nom ------- !!!  Conflits :Un membre (attribut ou méthode) est hérité plusieurs fois par une classe dérivée  Résolution : Utiliser les possibilités du langage de programmation
  • 46.
    Programmation Orientée Objet— Concepts  Polymorphisme  Capacité d’une entité à prendre plusieurs formes  L’entité polymorphe prend la forme adéquate au cours de l’exécution 46 l’exécution Changement (vert ) Voiture Vélo Démarrage des véhicules - Débrayer - Passer la première - Accélérer - Embrayer Pédaler Feu
  • 47.
    Programmation Orientée Objet— Concepts  Polymorphisme: Trois types  Polymorphisme paramétrique : Définir la même fonction avec des paramètres de type différents  Polymorphisme ad hoc — Surcharge : Définir la même fonction 47  Polymorphisme ad hoc — Surcharge : Définir la même fonction dans des classes sans rapport  Polymorphisme d’héritage — Redéfinition: Spécialiser des méthodes de la super-classe pour les classes dérivées
  • 48.
    Programmation Orientée Objet— Concepts  Polymorphisme d’héritage — Exemple Forme -------- Abstraite dessiner( ) -------- La méthode dessiner() est définie dans la classe Forme La méthode dessiner() est redéfinie 48 Triangle -------- dessiner( ) -------- -------- Carre -------- dessiner( ) -------- Cercle -------- dessiner( ) -------- La méthode dessiner() est redéfinie dans chacune des classes dérivées (différemment)
  • 49.
    Programmation Orientée Objet— Concepts  Polymorphisme d’héritage — Exemple Forme -------- Abstraite dessiner( ) -------- On maintient un pointeur de type Forme remplie avec un objet des classes dérivées 49 Triangle -------- dessiner( ) -------- Carre -------- dessiner( ) -------- Cercle -------- dessiner( ) -------- dérivées Le choix de la bonne méthode dessiner() est retardé au moment de l’exécution
  • 50.
    Programmation Orientée Objet— Concepts  Association  Modélise la relation de coopération entre les classes  Les objets ont leur propre cycle de vie et il n’y a pas de propriétaire: les objets peuvent être créés et supprimés indépendamment 50 les objets peuvent être créés et supprimés indépendamment  Implémentation: l’un des attributs de la classe maintient des instances de l’autre classe Enseignant Etudiant Enseigne plusieurs
  • 51.
    Programmation Orientée Objet— Concepts  Agrégation  Une forme plus intime d’association  Les objets ont leur propre cycle de vie, mais il existe des propriétaires : les objets enfants ne peuvent pas appartenir à un autre objet parent, 51 : les objets enfants ne peuvent pas appartenir à un autre objet parent, mais peuvent être créés et supprimés indépendamment.  Implémentation: l’un des attributs de la classe maintient des instances de l’autre classe Enseignant Département Appartient
  • 52.
    Programmation Orientée Objet— Concepts  Composition  Une forme plus forte d’agrégation qui modélise la relation de type " est composé de " entre les classes  L’objet enfant n’a pas son cycle de vie et si l’objet parent est supprimé, 52  L’objet enfant n’a pas son cycle de vie et si l’objet parent est supprimé, tous les objets enfants seront également supprimés.  Implémentation: l’un des attributs de la classe maintient des instances de l’autre classe Ordinateur Clavier contient
  • 53.
     Classification  ToutLOO doit satisfaire 3 concepts de base et peut implémenter d’autres concepts complémentaires.  Classe et instances  Message et méthodes Langages Orientés Objets 53  Message et méthodes  Héritage simple  Concepts complémentaires  Héritage multiple  Polymorphisme  Agrégation
  • 54.
    Impacts sur lesautres nivaux  Bases de Données  Modèles: relationnel -objet  Langage d’interrogation : OQL – Object Query Langage  SGBD 54  SGBD  Méthodologies de conception  Méthodes d’Analyse et de Conception  Processus logiciel  Langage de modélisation