SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à POO -- (programmation orienté objet).pdf

Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionLilia Sfaxi
 
presentationcoursbd.pdf
presentationcoursbd.pdfpresentationcoursbd.pdf
presentationcoursbd.pdfAabidiHafid
 
Cours génie logiciel
Cours génie logicielCours génie logiciel
Cours génie logicielaraddaoui
 
Programme 2017 2018
Programme 2017 2018Programme 2017 2018
Programme 2017 2018Bost Vincent
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetAmine Chkr
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMALoic Yon
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Amina HAMEURLAINE
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]linasafaa
 
Language C++ Ch01
Language C++ Ch01 Language C++ Ch01
Language C++ Ch01 yarsenv47
 

Similaire à POO -- (programmation orienté objet).pdf (20)

Cours1 2 gdmm
Cours1 2 gdmmCours1 2 gdmm
Cours1 2 gdmm
 
Modelisation conception SI
Modelisation conception SIModelisation conception SI
Modelisation conception SI
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de Conception
 
algo-imsi-2.pdf
algo-imsi-2.pdfalgo-imsi-2.pdf
algo-imsi-2.pdf
 
presentationcoursbd.pdf
presentationcoursbd.pdfpresentationcoursbd.pdf
presentationcoursbd.pdf
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
 
Cours génie logiciel
Cours génie logicielCours génie logiciel
Cours génie logiciel
 
Cours Système d'Information
Cours Système d'InformationCours Système d'Information
Cours Système d'Information
 
Programme 2017 2018
Programme 2017 2018Programme 2017 2018
Programme 2017 2018
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception Objet
 
Uml
UmlUml
Uml
 
Uml partie 1
Uml partie 1Uml partie 1
Uml partie 1
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMA
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
 
Language C++ Ch01
Language C++ Ch01 Language C++ Ch01
Language C++ Ch01
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
mars2005_BD
mars2005_BDmars2005_BD
mars2005_BD
 

Dernier

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
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptssusercbaa22
 
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
 
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
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
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
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
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
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 
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
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
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
 

Dernier (16)

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.
 
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
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
 
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
 
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
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
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
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
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
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 
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
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 
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
 

POO -- (programmation orienté objet).pdf

  • 1. Programmation Orientée Objet en C++ Pr. Azeddine Zahi azeddine.zahi@usmba.ac.ma Pr. Rachid Ben abbou rachid.benabbou@usmba.ac.ma
  • 2.  Introduction  Programmation Structurée :Principes et limitations Chapitre1: Concepts de la programmation Orientée Objet limitations  Programmation Orientée Objet: Principes et Concepts
  • 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 paradigmes de 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 et Objets  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  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
  • 54. 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