Informatique S4-POO
Programmation Orient´ee Objet
— Concepts —
C´edric Buche
Ecole Nationale d’Ing´´ enieurs de Brest (ENIB)
28 janvier 2014
Avant-propos Objectifs
Objectifs th´ematiques de POO
Que va m’apprendre POO ? Le mod`ele objet :
Objet Classe
Encapsulation Collaboration H´eritage (Abstraction) (Modularit´e) (Persistance) Mod´eliser objet
La partie statique du langage UML : Diag. de cas d’utilisation
Diag. de classes
Mod`ele d’interaction (Diag. s´equence + communication)
C´edric Buche (ENIB) POO 28 janvier 2014 2 / 137
Avant-propos Objectifs
Et la suite ... ?
Cycle Ing´enieur ENIB - Tronc commun
Semestre Th`eme Volume
S5 Prog. par objets (Java) 45h
S6 Prog. par objets (C++) 45h
S6 Mod`eles pour l’ing´enierie des syst`emes (UML) 45h
S6 Base de donn´ees 22h
S7 R´eseaux 90h
S8 Stage en entreprise 45h
S10 Stage en entreprise 45h
Avant-propos Organisation
Equipe p´edagogique 2013 ´
Enseignants-chercheurs
Bosser Anne-Gwen Cours + Labo [email protected]
Desmeulles Gireg Cours + Labo [email protected]
C´edric Buche (ENIB) POO 28 janvier 2014 4 / 137
Avant-propos Organisation
Planning
Module :Programmation Orient´ee Objet — POO 2013
Responsable : C´edricBuche(CERV, bureau 30, tel : 02 98 05 89 66, email :[email protected]) S4
Intervenants : C.Buche(cb)
Semaine LABO CTD
37 POO — Justification mod`ele objet
ctd cb
37 POO — Concepts fondateurs
ctd cb
38 POO — Rappels python
labo cb
38 POO — Concepts fondateurs
labo cb
39 POO — Encapsulation
ctd cb
39 POO — Collaboration et hi´erarchie
ctd cb
40 POO — Encapsulation
labo cb
40 POO — Collaboration et h´eritage
labo cb
41 UML — G´en´eralit´es
ctd cb
41 UML — Classes
ctd cb
42 UML — Classes
labo cb
42 UML — Classes
labo cb
Semaine LABO CTD
45 UML — Classes
labo cb
45 UML — Classes
labo cb
46 UML — Use Case (diag.)
ctd cb
46 UML — Use Case (sc´enarios)
ctd cb
47 UML — Use Case (diag.)
labo cb
47 UML — Use Case (sc´enarios)
labo cb
48 UML — Interactions (com)
ctd cb
48 UML — Interactions (seq)
ctd cb
49 UML — Interactions (com)
labo cb
49 UML — Interactions (seq)
labo cb
50
Avant-propos Evaluation´
Types de contrˆole
Contrˆole d’attention
Contrˆole de l’attention sur un cours particulier - QCM Dur´ee 5-10’
En fin de cours
Contrˆole des connaissances
Contrˆole des connaissances acquis sur un th`eme - QCM Dur´ee 5-10’
En d´ebut de labo
Contrˆole d’attention + Contrˆole des connaissances
→ Note de travail
C´edric Buche (ENIB) POO 28 janvier 2014 6 / 137
Avant-propos Evaluation´
Types de contrˆole
Contrˆole d’attention
Contrˆole de l’attention sur un cours particulier - QCM Dur´ee 5-10’
En fin de cours
Contrˆole des connaissances
Contrˆole des connaissances acquis sur un th`eme - QCM Dur´ee 5-10’
En d´ebut de labo
Contrˆole d’attention + Contrˆole des connaissances
→ Note de travail
Avant-propos Evaluation´
Types de contrˆole
Contrˆole d’attention
Contrˆole de l’attention sur un cours particulier - QCM Dur´ee 5-10’
En fin de cours
Contrˆole des connaissances
Contrˆole des connaissances acquis sur un th`eme - QCM Dur´ee 5-10’
En d´ebut de labo
Contrˆole d’attention + Contrˆole des connaissances
→ Note de travail
C´edric Buche (ENIB) POO 28 janvier 2014 6 / 137
Avant-propos Evaluation´
Exemple de QCM
Informatique Contrôle Continu
Nom/Prenom : Groupe:
1.QCM titre 4 (a)réponse fausse 4.2 (b)réponse fausse 4.1 (c)réponse fausse 4.5 (d)réponse juste 4 (e)réponse fausse 4.3 (f)réponse fausse 4.4 2.QCM titre 1
(a)réponse juste 1 (b)réponse fausse 1.2 (c)réponse fausse 1.3 (d)réponse fausse 1.1 3.QCM titre 2
(a)réponse juste 2 (b)réponse fausse 2.1 (c)réponse fausse 2.2 4.QCM titre 3
(a)réponse juste 3 (b)réponse fausse 3.1 (c)réponse fausse 3.2
C´edric Buche (ENIB) POO 28 janvier 2014 7 / 137
Avant-propos Evaluation´
Notation QCM
Note : distance au but
0 : dans le mille ! → objectif atteint
1 : pas mal → objectif en vue
2 : tout juste sur la cible → objectif loingtain 3 : mˆeme pas touch´e → objectif pas atteint
C´edric Buche (ENIB) POO 28 janvier 2014 8 / 137
Avant-propos Evaluation´
Notation QCM
Note : distance au but
0 : dans le mille ! → objectif atteint
1 : pas mal → objectif en vue
2 : tout juste sur la cible → objectif loingtain
→
Avant-propos Evaluation´
DS
Contrˆole de synth`ese
Contrˆole des comp´etences acquises sur un demi-semestre Dur´ee 1h20
Concepts objet UML
C´edric Buche (ENIB) POO 28 janvier 2014 9 / 137
Avant-propos Evaluation´
Evaluation des apprentissages ´
Et si je suis absent ?
`
a un ”Contrˆole d’attention”
→ Je justifie mon abscence (certificat m´edical)
`
a un ”Contrˆole des connaissances”
→ Je justifie mon abscence (certificat m´edical)
`
a un ”Contrˆole de synth`ese”
→ Je justifie mon abscence (certificat m´edical) Rattrapage
Justification du mod`ele objet (1 UC)
Plan de la pr´esentation
1 Justification du mod`ele objet (1 UC)
2 Concepts fondateurs (1 UC)
3 Encapsulation (1 UC)
4 Hi´erarchie (1 UC)
5 Collaborations entre objets (1 UC)
6 Pour aller plus loin
C´edric Buche (ENIB) POO 28 janvier 2014 11 / 137
Justification du mod`ele objet (1 UC)
1 Justification du mod`ele objet (1 UC)
2 Concepts fondateurs (1 UC)
3 Encapsulation (1 UC)
4 Hi´erarchie (1 UC)
5 Collaborations entre objets (1 UC)
6 Pour aller plus loin
Justification du mod`ele objet (1 UC)
Cours 1 / Labo 2
Objectifs
Justifier le mod`ele objet Notion de classe :
d´efinition constructeur Notion d’objet : instanciation manipulation
C´edric Buche (ENIB) POO 28 janvier 2014 13 / 137
Justification du mod`ele objet (1 UC) Complexit´e
Complexit´e des probl`emes
La complexit´e des logiciels est une caract´eristique inn´ee et non propri´et´e accidentelle [Brooks, 1987]
Justification du mod`ele objet (1 UC) Complexit´e
Difficult´e du contrˆole du processus de d´eveloppement
La tˆache de l’´equipe de d´eveloppement de logiciel est de donner l’illusion de la simplicit´e [Booch, 1992]
C´edric Buche (ENIB) POO 28 janvier 2014 15 / 137
Justification du mod`ele objet (1 UC) Complexit´e
Cons´equences d’une complexit´e sans limites
Plus un syst`eme est complexe, plus il est susceptible d’effondrement [Peter, 1986]
Est ce qu’un entrepreneur songe `a ajouter une nouvelle assise `a un immeuble de 100 ´etages existant ? Ce genre de consid´erations est
Justification du mod`ele objet (1 UC) Complexit´e
Qualit´e du logiciel
Extensibilit´e :
facult´e d’adaptation d’un logiciel aux changements de sp´ecification.
simplicit´e de la conception d´ecentralisation
R´eutilisabilit´e :
aptitude d’un logiciel `a ˆetre r´eutilis´e en tout ou en partie pour de nouvelles applications.
Ne pas r´einventer la roue !
Programmermoins pour programmermieux!
C´edric Buche (ENIB) POO 28 janvier 2014 17 / 137
Justification du mod`ele objet (1 UC) Complexit´e
Qualit´e du logiciel
Extensibilit´e :
facult´e d’adaptation d’un logiciel aux changements de sp´ecification.
simplicit´e de la conception d´ecentralisation
R´eutilisabilit´e :
aptitude d’un logiciel `a ˆetre r´eutilis´e en tout ou en partie pour de nouvelles applications.
Ne pas r´einventer la roue !
Programmermoins pour programmermieux!
Justification du mod`ele objet (1 UC) Complexit´e
Qualit´e du logiciel
Extensibilit´e :
facult´e d’adaptation d’un logiciel aux changements de sp´ecification.
simplicit´e de la conception d´ecentralisation
R´eutilisabilit´e :
aptitude d’un logiciel `a ˆetre r´eutilis´e en tout ou en partie pour de nouvelles applications.
Ne pas r´einventer la roue !
Programmermoins pour programmermieux!
C´edric Buche (ENIB) POO 28 janvier 2014 17 / 137
Justification du mod`ele objet (1 UC) Programmation proc´edurale
Paradigme de programmation proc´edurale
Programmation proc´edurale
s´eparation entre code et donn´ees.
Variables (globales)
contiennent vos donn´ees
sont utilis´ees par des fonctions/proc´edures.
Fonctions
peuvent modifier une variable
peuvent passer cette variable `a une autre fonction/proc´edure.
Justification du mod`ele objet (1 UC) Programmation proc´edurale
Paradigme de programmation proc´edurale
Programmation proc´edurale
s´eparation entre code et donn´ees.
Variables (globales)
contiennent vos donn´ees
sont utilis´ees par des fonctions/proc´edures.
Fonctions
peuvent modifier une variable
peuvent passer cette variable `a une autre fonction/proc´edure.
C´edric Buche (ENIB) POO 28 janvier 2014 18 / 137
Justification du mod`ele objet (1 UC) Programmation proc´edurale
Paradigme de programmation proc´edurale
Programmation proc´edurale
s´eparation entre code et donn´ees.
Variables (globales)
contiennent vos donn´ees
sont utilis´ees par des fonctions/proc´edures.
Fonctions
peuvent modifier une variable
peuvent passer cette variable `a une autre fonction/proc´edure.
Justification du mod`ele objet (1 UC) Programmation proc´edurale
Exemple
Dans une entreprise situ´ee `a Biarritz, Robert (num de secu 10573123456), est employ´e sur un poste de technicien
1 ###########################################
2 # V e r s i o n 1
3 # v a r i a b l e s g l o b a l e s
4 ###########################################
5
6 n u m s e c u r o b e r t = 1 0 5 7 3 1 2 3 4 5 6
7 n o m r o b e r t = ” R o b e r t ”
8 q u a l i f i c a t i o n r o b e r t = ” T e c h n i c i e n ” 9 l i e u d e t r a v a i l r o b e r t = ” B i a r r i t z ”
C´edric Buche (ENIB) POO 28 janvier 2014 19 / 137
Justification du mod`ele objet (1 UC) Programmation proc´edurale
Limites de la programmation proc´edurale : Exemple
Ajout d’un employ´e bernard
1 # r o b e r t
2 n u m s e c u r o b e r t = 1 0 5 7 3 1 2 3 4 5 6
3 n o m r o b e r t = ” R o b e r t ”
4 q u a l i f i c a t i o n r o b e r t = ” T e c h n i c i e n ” 5 l i e u d e t r a v a i l r o b e r t = ” B i a r r i t z ” 6
7 # b e r n a r d
8 n u m s e c u b e r n a r d = 2 8 8 1 1 1 1 0 0 1
9 nom bernar d = ” B e r n a r d ”
10 q u a l i f i c a t i o n b e r n a r d = ” I n g e n i e u r ” 11 l i e u d e t r a v a i l b e r n a r d = ” B i a r r i t z ” 12
13 # . . .
Justification du mod`ele objet (1 UC) Programmation proc´edurale
Limites de la programmation proc´edurale
1 ###########################################
2 # V e r s i o n 2
3 # u t i l i s a t i o n d e c o n t e n e u r s
4 ###########################################
5
6 t a b r o b e r t = [ 1 0 5 7 3 1 2 3 4 5 6 ,
7 ” r o b e r t ” ,
8 ” T e c h n i c i e n ” ,
9 ” B i a r r i t z ” ]
10 t a b m i c k e y = [ 1 4 4 5 6 4 6 4 4 4 3 ,
11 ” mickey ” ,
12 ” I n g e n i e u r ” ,
13 ” B r e s t ” ]
14 t a b = [ ]
15 t a b . append ( t a b r o b e r t ) 16 t a b . append ( t a b m i c k e y )
17 p r i n t t a b [ 0 ] [ 0 ] # num s e c u r o b e r t
C´edric Buche (ENIB) POO 28 janvier 2014 21 / 137
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
Vers la programmation orient´ee objet
D´efinition de la structure de donn´ee par la notion declasse
1 ###########################################
2 # V e r s i o n 3
3 # s t r u c t u r a t i o n d e s d o n n e e s
4 ###########################################
5
6 c l a s s Employe :
7 num secu
8 nom
9 q u a l i f i c a t i o n
10 L i e u d e t r a v a i l
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
Vers la programmation orient´ee objet : classe
Classe
d´eclare les propri´et´es communes d’unensemble d’objets Exemple
La classe Voitureposs`ede les propri´et´es suivantes (les attributs) : couleur
puissance
C´edric Buche (ENIB) POO 28 janvier 2014 23 / 137
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
Vers la programmation orient´ee objet : classe
Classe
d´eclare les propri´et´es communes d’unensemble d’objets Exemple
La classe Voitureposs`ede les propri´et´es suivantes (les attributs) : couleur
puissance
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
Vers la programmation orient´ee objet : objets
Classe →Objets
usine `a partir de laquelle il est possible de cr´eer des objets.
Objets : exemple instance de la classe Voiture Voiture "Clio 2007 version roland garros"
couleur: verte puissance: 70 Ch
Voiture "307 blue lagoon"
couleur: bleue puissance: 90 Ch
C´edric Buche (ENIB) POO 28 janvier 2014 24 / 137
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
Vers la programmation orient´ee objet : objets
Classe →Objets
usine `a partir de laquelle il est possible de cr´eer des objets.
Objets : exemple instance de la classe Voiture Voiture "Clio 2007 version roland garros"
couleur: verte puissance: 70 Ch
Voiture "307 blue lagoon"
couleur: bleue puissance: 90 Ch
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
En pratique ...
Mise en place d’objets concrets (instances de classe)
1 # r o b e r t
2 e 1=Employe ( ) # o b j e t e 1 : i n s t a n c e d e l a c l a s s e E m p l o y e
3 e 1 . num secu = 1 0 5 7 3 1 2 3 4 5 6
4 e 1 . nom = ” R o b e r t ”
5 e 1 . q u a l i f i c a t i o n = ” T e c h n i c i e n ” 6 e 1 . L i e u d e t r a v a i l = ” B i a r r i t z ” 7
8 p r i n t ( e 1 . num secu ,
9 e 1 . nom ,
10 e 1 . q u a l i f i c a t i o n ,
11 e 1 . L i e u d e t r a v a i l )
12
13 # m i c k e y
14 e 2=Employe ( ) # o b j e t e 2 : i n s t a n c e d e l a c l a s s e E m p l o y e
15 e 2 . num secu = 1 4 4 5 6 4 6 4 4 4 3
16 e 2 . nom = ” Mickey ”
17 e 2 . q u a l i f i c a t i o n = ” I n g e ” 18 e 2 . L i e u d e t r a v a i l = ” B r e s t ”
C´edric Buche (ENIB) POO 28 janvier 2014 25 / 137
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
En pratique ...
1 # n o r b e r t
2 e 3=Employe ( )
3
4 p r i n t ( e 3 . num secu , # ERREUR
5 e 3 . nom ,
6 e 3 . q u a l i f i c a t i o n ,
7 e 3 . L i e u d e t r a v a i l )
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
Vers la programmation orient´ee objet : Le constructeur
Constructeur
les attributs doivent ˆetres initialis´ees avec une valeurpar d´efaut
appel `a une fonction particuli`ere : le constructeur
C´edric Buche (ENIB) POO 28 janvier 2014 27 / 137
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
En pratique ...
1
2 c l a s s Employe :
3 d e f i n i t (s e l f) : # C o n s t r u c t e u r d e l a c l a s s e E m p l o y e
4 s e l f. num secu = 0 0 0 0 0 0 0 0 0
5 s e l f. nom = ” no name ”
6 s e l f. q u a l i f i c a t i o n = ” n o v i c e ”
7 s e l f. L i e u d e t r a v a i l = ” P a r i s ”
En python, le premier argument du constructeur est toujours self
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
En pratique ...
1 # n o r b e r t
2 e 3=Employe ( ) # c r e a t i o n d e e 3 : a p p e l i m p l i c i t e d e i n i t d e E m p l o y e 3
4 p r i n t ( e 3 . num secu , # OK ! ! !
5 e 3 . nom ,
6 e 3 . q u a l i f i c a t i o n ,
7 e 3 . L i e u d e t r a v a i l )
C´edric Buche (ENIB) POO 28 janvier 2014 29 / 137
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
En pratique ...
1
2 c l a s s Employe :
3 d e f i n i t ( s e l f,
4 l e n u m s e c u ,
5 le nom ,
6 l a q u a l i f i c a t i o n ,
7 l e L i e u d e t r a v a i l ) :
8
9 s e l f. num secu = l e n u m s e c u
10 s e l f. nom = l e n o m
11 s e l f. q u a l i f i c a t i o n = l a q u a l i f i c a t i o n
12 s e l f. L i e u d e t r a v a i l = l e L i e u d e t r a v a i l
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
En pratique ...
En python,
→ init appel´ee implicitement `a la cr´eation d’un objet
→ le constructeur peut poss´eder plusieurs arguments (en plus de self )
C´edric Buche (ENIB) POO 28 janvier 2014 31 / 137
Justification du mod`ele objet (1 UC) Vers la Programmation Orient´ee Objet (POO)
Vers la programmation orient´ee objet : Le constructeur
1
2 c l a s s Employe :
3 d e f i n i t ( s e l f,
4 l e n u m s e c u = 0 0 0 0 0 0 0 0 0 ,
5 l e n o m = ” no name ” ,
6 l a q u a l i f i c a t i o n = ” n o v i c e ” ,
7 l e L i e u d e t r a v a i l = ” P a r i s ” ) :
8
9 s e l f. num secu = l e n u m s e c u
10 s e l f. nom = l e n o m
11 s e l f. q u a l i f i c a t i o n = l a q u a l i f i c a t i o n
12 s e l f. L i e u d e t r a v a i l = l e L i e u d e t r a v a i l
13 14
15 ############## P r o g r a m m e P r i n c i p a l #############
16
17 e 1 = Employe ( l e L i e u d e t r a v a i l = ” B r e s t ” )
Concepts fondateurs (1 UC)
Plan de la pr´esentation
1 Justification du mod`ele objet (1 UC)
2 Concepts fondateurs (1 UC)
3 Encapsulation (1 UC)
4 Hi´erarchie (1 UC)
5 Collaborations entre objets (1 UC)
6 Pour aller plus loin
C´edric Buche (ENIB) POO 28 janvier 2014 33 / 137
Concepts fondateurs (1 UC)
Cours 2 / Labo 2
Objectifs Classe :
Attributs M´ethodes
Constructeur / destructeur Objet :
Etat´
Comportement Identit´e
Concepts fondateurs (1 UC)
Cours 2 / Labo 2
Objectifs Classe :
Attributs M´ethodes
Constructeur / destructeur Objet :
Etat´
Comportement Identit´e
C´edric Buche (ENIB) POO 28 janvier 2014 34 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?
Les classes
Je croyais qu’on allait apprendre `a cr´eer des objets, pourquoi cr´eer une classe ?
pour cr´eer un objet, il faut d’abord cr´eer une classe ! exemple : pour construire une maison,
besoin d’un plan d’architecte
→classe = plan,
→l’objet = maison.
→”Cr´eer une classe”, c’est dessiner les plans de l’objet.
Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?
Uneclasse repr´esente unensemble d’objetsqui partagent une structure commmune et un comportement commun [Booch, 1992]
C´edric Buche (ENIB) POO 28 janvier 2014 36 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?
Les classes
Une classe est la description d’une famille d’objets qui ont la mˆeme structure et les mˆemes comportements.
Une classe est une sorte de moule `a partir duquel sont g´en´er´es les objets.
Une classe g´en´eration
−−−−−−−−→ des objets
Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?
Les classes
Une classe est la description d’une famille d’objets qui ont la mˆeme structure et les mˆemes comportements.
Une classe est une sorte de moule `a partir duquel sont g´en´er´es les objets.
Une classe g´en´eration
−−−−−−−−→ des objets
C´edric Buche (ENIB) POO 28 janvier 2014 37 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?
Les classes
Une classe est constitu´ee :
1 d’un ensemble de variables (ouattributs) qui d´ecrivent la structure des objets ;
2 d’un ensemble de fonctions (oum´ethodes)
qui sont applicables aux objets, et qui d´ecrivent leur comportement.
attributs: variables contenues dans la classe, on parle aussi de ”variables membres”
m´ethodes: fonctions contenues dans la classe, on parle aussi de ”fonctions membres”
ou de comp´etences
Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?
Les classes
Une classe est constitu´ee :
1 d’un ensemble de variables (ouattributs) qui d´ecrivent la structure des objets ;
2 d’un ensemble de fonctions (oum´ethodes)
qui sont applicables aux objets, et qui d´ecrivent leur comportement.
attributs: variables contenues dans la classe, on parle aussi de ”variables membres”
m´ethodes: fonctions contenues dans la classe, on parle aussi de ”fonctions membres”
ou de comp´etences ou de services
C´edric Buche (ENIB) POO 28 janvier 2014 38 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Classe — Objets
1 Classe
Abstraction
D´efinit une infinit´e d’objets instances
2 Objet = ´etat + comportement + identit´e Attributs
M´ethodes Identit´e
On dit qu’un objet est uneinstance d’une classe
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Classe — Objets
1 Classe
Abstraction
D´efinit une infinit´e d’objets instances
2 Objet = ´etat + comportement + identit´e Attributs
M´ethodes Identit´e
On dit qu’un objet est uneinstance d’une classe
C´edric Buche (ENIB) POO 28 janvier 2014 39 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Classe — Objets
1 Classe
Abstraction
D´efinit une infinit´e d’objets instances
2 Objet = ´etat + comportement + identit´e Attributs
M´ethodes Identit´e
On dit qu’un objet est uneinstance d’une classe
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Etat ´
Etat d’un objet´
regroupe les valeurs instantan´ees de tous sesattributs
´
evolue au cours du temps
est la cons´equence de ses comportements pass´es
C´edric Buche (ENIB) POO 28 janvier 2014 40 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Etat ... En pratique ´
1 #### d e f i n i t i o n c l a s s e ######
2 c l a s s V o i t u r e :
3 d e f i n i t (s e l f, v1=” nomarque ” , v2=” n o c o l o r ” , v3 = 0 ) :
4 s e l f. marque = v1
5 s e l f. c o u l e u r = v2
6 s e l f. r e s e r v e E s s e n c e = v3
7
8 ### O b j e t #####
9 h o m e r m o b i l e = V o i t u r e ( ) 10
11 ## E t a t
12 h o m e r m o b i l e . marque = ” p i p o ” 13 h o m e r m o b i l e . c o u l e u r = ” r o s e ” 14 h o m e r m o b i l e . r e s e r v e E s s e n c e = 30
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Attributs et variables
les attributs caract´erisent l’´etat des instances d’une classe. Ils participent `a la mod´elisation du probl`eme.
les variables sont des m´emoires locales `a des m´ethodes. Elles sont l`a pour faciliter la gestion du traitement.
l’acc`es aux variables est limit´e au bloc o`u elles sont d´eclar´ees : r`egle de port´ee
C´edric Buche (ENIB) POO 28 janvier 2014 42 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Attributs et variables
les attributs caract´erisent l’´etat des instances d’une classe. Ils participent `a la mod´elisation du probl`eme.
les variables sont des m´emoires locales `a des m´ethodes. Elles sont l`a pour faciliter la gestion du traitement.
l’acc`es aux variables est limit´e au bloc o`u elles sont d´eclar´ees : r`egle de port´ee
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Attributs et variables
les attributs caract´erisent l’´etat des instances d’une classe. Ils participent `a la mod´elisation du probl`eme.
les variables sont des m´emoires locales `a des m´ethodes. Elles sont l`a pour faciliter la gestion du traitement.
l’acc`es aux variables est limit´e au bloc o`u elles sont d´eclar´ees : r`egle de port´ee
C´edric Buche (ENIB) POO 28 janvier 2014 42 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Comportement
Comportement d’un objet
regroupe toutes ses comp´etences
d´ecrit les actions et les r´eactions d’un objet
→ se repr´esente sous la forme de m´ethodes (appel´ees parfois fonctions membres)
Pour un objet ”homer mobile”
d´emarrer arrˆeter freiner
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Comportement
Comportement d’un objet
regroupe toutes ses comp´etences
d´ecrit les actions et les r´eactions d’un objet
→ se repr´esente sous la forme de m´ethodes (appel´ees parfois fonctions membres)
Pour un objet ”homer mobile”
d´emarrer arrˆeter freiner . . .
C´edric Buche (ENIB) POO 28 janvier 2014 43 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Comportement ... En pratique
1 #### d e f i n i t i o n c l a s s e ######
2 c l a s s V o i t u r e :
3 d e f i n i t (s e l f, v1=” nomarque ” , v2=” n o c o l o r ” , v3 = 0 ) :
4 s e l f. marque = v1
5 s e l f. c o u l e u r = v2
6 s e l f. r e s e r v e E s s e n c e = v3
7
8 d e f d e m a r r e r (s e l f) :
9 p r i n t ” j e demarre ”
10 d e f a r r e t e r (s e l f) :
11 p r i n t ” j e m'a r r e t e ”
12 . . .
13 ### O b j e t #####
14 h o m e r m o b i l e = V o i t u r e ( ) 15
16 ## C o m p o r t e m e n t 17 h o m e r m o b i l e . d e m a r r e r ( ) 18 h o m e r m o b i l e . a r r e t e r ( )
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Comportement — ´ Etat
L’´etat et le comportement sont li´es
homer mobile.d´emarrer()
ne marchera pas si
homer mobile.reserveEssence
== 0
C´edric Buche (ENIB) POO 28 janvier 2014 45 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Comportement — ´ Etat
1 #### d e f i n i t i o n c l a s s e ######
2 c l a s s V o i t u r e :
3 d e f i n i t (s e l f, v1=” nomarque ” , v2=” n o c o l o r ” , v3 = 0 ) :
4 s e l f. marque = v1
5 s e l f. c o u l e u r = v2
6 s e l f. r e s e r v e E s s e n c e = v3
7
8 d e f d e m a r r e r (s e l f) :
9 i f s e l f. r e s e r v e E s s e n c e > 0 :
10 p r i n t ” j e demarre ”
11 e l s e :
12 p r i n t ” j e ne peux p a s d e m a r r e r ”
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Etat : ´evolution ´
Pour l’objet ”homer mobile”
marque : pipo couleur : rose r´eserve d’essence : 30l
Apr`es 100 kms . . .
marque : pipo couleur : rose r´eserve d’essence : 25l
C´edric Buche (ENIB) POO 28 janvier 2014 47 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Etat : ´evolution ´
Pour l’objet ”homer mobile”
marque : pipo couleur : rose r´eserve d’essence : 30l
Apr`es 100 kms . . .
marque : pipo couleur : rose r´eserve d’essence :
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Etat : ´evolution ´
1 #### d e f i n i t i o n c l a s s e ######
2 c l a s s V o i t u r e :
3 d e f i n i t (s e l f, v1=” nomarque ” , v2=” n o c o l o r ” , v3 = 0 ) :
4 s e l f. marque = v1
5 s e l f. c o u l e u r = v2
6 s e l f. r e s e r v e E s s e n c e = v3
7
8 d e f d e m a r r e r (s e l f) :
9 i f s e l f. r e s e r v e E s s e n c e > 0 :
10 p r i n t ” j e demarre ”
11 e l s e :
12 p r i n t ” j e ne peux p a s d e m a r r e r ”
13
14 d e f r o u l e r (s e l f , nbKm ) :
15 s e l f. r e s e r v e E s s e n c e = s e l f. r e s e r v e E s s e n c e − 5*nbKm/ 1 0 0 ; 16
17
18 ####
19 h o m e r m o b i l e = V o i t u r e ( )
20 h o m e r m o b i l e . r e s e r v e E s s e n c e = 30 21 h o m e r m o b i l e . d e m a r r e r ( )
22 h o m e r m o b i l e . r o u l e r ( 1 0 0 )
23 p r i n t h o m e r m o b i l e . r e s e r v e E s s e n c e
C´edric Buche (ENIB) POO 28 janvier 2014 48 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Identit´e
L’identit´e
est propre `a l’objet et le caract´erise
permet de distinguer tout objet ind´ependamment de son ´etat
Voiture.1 Voiture.2
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Identit´e
L’identit´e
est propre `a l’objet et le caract´erise
permet de distinguer tout objet ind´ependamment de son ´etat
Voiture.1 Voiture.2
C´edric Buche (ENIB) POO 28 janvier 2014 49 / 137
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Identit´e
→ nommer chaque objet (ex. attribut ”name”) print homer mobile.name
→ leur r´ef´erence
print homer mobile
Voiture.1 0xb7d4e0ec Voiture.2
0xb7d53eec
Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?
Le chaos des objets
Attention, ne pas oublier ! ! Soient 3 objets :
mˆeme structures de donn´ees (attributs) mˆeme comportement (m´ethodes)
→ Il faut les d´ecrire de fa¸con abstraite : uneclasse
C´edric Buche (ENIB) POO 28 janvier 2014 51 / 137
Concepts fondateurs (1 UC) Vie d’un objet
Construction
A la d´eclaration d’un objet, les attributs ne sont pas initialis´es.
Cette phase d’initialisation des attributs est effectu´ee par une m´ethode particuli´ere : le constructeur.
Le constructeur est appel´e lors de la construction de l’objet.
Une classe peut d´efinir son(ses) constructeur(s) avec des param´etres diff´erents
Concepts fondateurs (1 UC) Vie d’un objet
Construction
A la d´eclaration d’un objet, les attributs ne sont pas initialis´es.
Cette phase d’initialisation des attributs est effectu´ee par une m´ethode particuli´ere : le constructeur.
Le constructeur est appel´e lors de la construction de l’objet.
Une classe peut d´efinir son(ses) constructeur(s) avec des param´etres diff´erents
C´edric Buche (ENIB) POO 28 janvier 2014 52 / 137
Concepts fondateurs (1 UC) Vie d’un objet
Construction
A la d´eclaration d’un objet, les attributs ne sont pas initialis´es.
Cette phase d’initialisation des attributs est effectu´ee par une m´ethode particuli´ere : le constructeur.
Le constructeur est appel´e lors de la construction de l’objet.
Une classe peut d´efinir son(ses) constructeur(s) avec des param´etres diff´erents
Concepts fondateurs (1 UC) Vie d’un objet
Construction
A la d´eclaration d’un objet, les attributs ne sont pas initialis´es.
Cette phase d’initialisation des attributs est effectu´ee par une m´ethode particuli´ere : le constructeur.
Le constructeur est appel´e lors de la construction de l’objet.
Une classe peut d´efinir son(ses) constructeur(s) avec des param´etres diff´erents
C´edric Buche (ENIB) POO 28 janvier 2014 52 / 137
Concepts fondateurs (1 UC) Vie d’un objet
En pratique ...
1
2 c l a s s Complexe :
3 d e f i n i t (s e l f , r = 0 . 0 , i = 0 . 0 ) :
4 s e l f. r e e l = r
5 s e l f. img = i
6 7 8
9 ####### P r o g r a m m e p r i n c i p a l ########
10 c 1 = Complexe ( ) 11 c 2 = Complexe ( 0 . 5 ) 12 c 3 = Complexe ( 0 . 5 , 0 . 2 ) 13 c 4 = Complexe ( i = 0 . 2 )
Concepts fondateurs (1 UC) Vie d’un objet
Destruction
M´ethode sp´eciale appel´ee lors de la suppression d’une instance : le destructeur de la classe
Objectif : d´etruire tous les objets cr´ees par l’objet courant au cours de son existence
En python,
→ la d´efinition d’un destructeur n’est pas obli- gatoire
C´edric Buche (ENIB) POO 28 janvier 2014 54 / 137
Concepts fondateurs (1 UC) Vie d’un objet
Destruction
M´ethode sp´eciale appel´ee lors de la suppression d’une instance : le destructeur de la classe
Objectif : d´etruire tous les objets cr´ees par l’objet courant au cours de son existence
En python,
→ la d´efinition d’un destructeur n’est pas obli- gatoire
Concepts fondateurs (1 UC) Vie d’un objet
Destruction
M´ethode sp´eciale appel´ee lors de la suppression d’une instance : le destructeur de la classe
Objectif : d´etruire tous les objets cr´ees par l’objet courant au cours de son existence
En python,
→ la d´efinition d’un destructeur n’est pas obli- gatoire
C´edric Buche (ENIB) POO 28 janvier 2014 54 / 137
Concepts fondateurs (1 UC) Vie d’un objet
En pratique ...
1
2 c l a s s Complexe :
3 d e f d e l (s e l f) :
4 p r i n t ” I'm d y i n g ! ”
En python,
→ del appel´ee implicitement `a la destruction d’un objet
Concepts fondateurs (1 UC) Vie d’un objet
Garbage collector
Appel du destructeur ?
dans certains langages, un programme s’ex´ecute en tˆache de fond afin de supprimer la m´emoire associ´ee `a un objet
→ le ramasse miettes ou ”garbage collector”
C´edric Buche (ENIB) POO 28 janvier 2014 56 / 137
Concepts fondateurs (1 UC) Vie d’un objet
En pratique ...
1 c l a s s T e s t :
2 d e f d e l (s e l f) :
3 p r i n t ” I am d y i n g ”
4 5 6
7 >>> t 1 = T e s t ( ) # u n e i n s t a n c e d e T e s t e s t c r e e
8 >>> t 1 = None # t 1 n e p e r m e t p l u s d'a c c e d e r a l'i n s t a n c e
9 I am d y i n g # e l l e e s t s u s c e p t i b l e d'e t r e d e t r u i t e c e q u i
10 >>> # a r r i v e i n s t a n t a n e m e n t i c i m a i s n'e s t p a s g a r a n t i
Encapsulation (1 UC)
Plan de la pr´esentation
1 Justification du mod`ele objet (1 UC)
2 Concepts fondateurs (1 UC)
3 Encapsulation (1 UC)
4 Hi´erarchie (1 UC)
5 Collaborations entre objets (1 UC)
6 Pour aller plus loin
C´edric Buche (ENIB) POO 28 janvier 2014 58 / 137
Encapsulation (1 UC)
Cours 3 / Labo 3
Objectifs
Encapsulation
R´egles d’encapsulation
Encapsulation (1 UC) Principes
L’encapsulation occulte les d´etails de l’impl´ementation d’un objet [Booch, 1992]
C´edric Buche (ENIB) POO 28 janvier 2014 60 / 137
Encapsulation (1 UC) Principes
Contrˆole d’acc´es : illustration
Gestion de compte en banque classe Compte
avec un attributsolde
1 c l a s s Compte :
2 d e f i n i t (s e l f) :
3 s e l f. s o l d e = 0 # s o l d e n u l
4
5 d e f a f f i c h e (s e l f) :
6 p r i n t ” Le s o l d e de v o t r e compte e s t de ” s e l f. s o l d e 7
8
9 ######## P r o g r a m m e p r i n c i p a l #######
10 c = Compte ( )
11 c . a f f i c h e ( ) # p o u r q u o i p a s 12 c . s o l d e = 1 0 0 0 0 0 0 # b e n t i e n s !
Encapsulation (1 UC) Principes
Contrˆole d’acc´es
Lors de la d´efinition d’une classe il est possible de restreindre voire d’interdire l’acc`es (aux objets des autres classes) `a des attributs ou m´ethodes des instances de cette classe.
C´edric Buche (ENIB) POO 28 janvier 2014 62 / 137
Encapsulation (1 UC) Principes
Contrˆole d’acc´es
Modificateurs d’acc`es lors de la d´eclaration d’attributs ou m´ethodes :
priv´eeaccessible uniquement depuis des instances de la classe publicaccessible par tout le monde
(ie. tous ceux qui poss`edent une r´ef´erence sur l’objet)
→ Rendre soldepriv´e
Encapsulation (1 UC) Principes
En pratique ...
1 c l a s s T e s t : 2
3 d e f i n i t (s e l f , l a V a l e u r P u b l i c , l a V a l e u r P r i v e e ) :
4 s e l f. v a l e u r P u b l i c = l a V a l e u r P u b l i c
5 s e l f. v a l e u r P r i v e e = l a V a l e u r P r i v e e
6 7
8 d e f f 1 (s e l f) :
9 . . .
10 d e f f 2 (s e l f) :
11 . . .
12 13
14 ######## P r o g r a m m e p r i n c i p a l ########
15 t 1 = T e s t ( ) 16
17 p r i n t t 1 . v a l e u r P u b l i c # OK 18 p r i n t t 1 . v a l e u r P r i v e e # ERREUR 19
20 t 1 . f 1 ( ) # OK
21 t 1 . f 2 ( ) # ERREUR
C´edric Buche (ENIB) POO 28 janvier 2014 64 / 137
Encapsulation (1 UC) Principes
Contrˆole d’acc´es
Le programmeur cr´eateur peut modifier le comportement sans impact : contrˆole lors de la modification
1 d e f d e b i t (s e l f, l a V a l e u r ) : 2
3 i f s e l f. s o l d e − l a V a l e u r > 0 :
4 s e l f. s o l d e = s e l f. s o l d e − l a V a l e u r
5 e l s e:
6 p r i n t( ”Compte b l o q u e ! ! ! ” )
En python,
→ le pr´efixe ” ” rend priv´e un attribut ou une m´ethode
Encapsulation (1 UC) Principes
Contrˆole d’acc´es : int´erˆet
1 prot´eger
→ ne pas permettre l’acc`es `a tout d`es que l’on a une r´ef´erence de l’objet
2 masquer l’impl´ementation
→ toute la d´ecomposition du probl`eme n’a besoin d’ˆetre connue du programmeur client
3 ´evolutivit´e
→ possibilit´e de modifier tout ce qui n’est pas public sans impact pour le programmeur client
C´edric Buche (ENIB) POO 28 janvier 2014 66 / 137
Encapsulation (1 UC) Principes
Contrˆole d’acc´es : int´erˆet
1 prot´eger
→ ne pas permettre l’acc`es `a tout d`es que l’on a une r´ef´erence de l’objet
2 masquer l’impl´ementation
→ toute la d´ecomposition du probl`eme n’a besoin d’ˆetre connue du programmeur client
3 ´evolutivit´e
→ possibilit´e de modifier tout ce qui n’est pas public sans impact pour le programmeur client
Encapsulation (1 UC) Principes
Contrˆole d’acc´es : int´erˆet
1 prot´eger
→ ne pas permettre l’acc`es `a tout d`es que l’on a une r´ef´erence de l’objet
2 masquer l’impl´ementation
→ toute la d´ecomposition du probl`eme n’a besoin d’ˆetre connue du programmeur client
3 ´evolutivit´e
→ possibilit´e de modifier tout ce qui n’est pas public sans impact pour le programmeur client
C´edric Buche (ENIB) POO 28 janvier 2014 66 / 137
Encapsulation (1 UC) R´egles d’encapsulation
R´egles
R´egles `a respecter
1 Rendre priv´es les attributs caract´erisant l’´etat de l’objet
2 Fournir des m´ethodes publiques permettant de acc´eder/modifier l’attribut
accesseurs mutateurs
Encapsulation (1 UC) Mise en application
1 - D´efinir les classes
1 ################################
2 # P r o g r a m m e P y t h o n #
3 # A u t e u r : . . . . . #
4 # D a t e c r e a t i o n : . . . #
5 ################################
6
7 c l a s s X : 8
9 #−−− D o c u m e n t a t i o n −−−
10 11
12 #−−− C o n s t r u c t e u r e t d e s t r u c t e u r −−−
13
14 #−−− M e t h o d e s p u b l i q u e s : A c c e s a u x a t t r i b u t s −−−
15 # a c c e s s e u r s
16 # m u t a t e u r s
17
18 #−−− M e t h o d e s p u b l i q u e s : O p e r a t i o n s −−−
19
20 #−−− M e t h o d e s p r i v e e s −−−
C´edric Buche (ENIB) POO 28 janvier 2014 68 / 137