• Aucun résultat trouvé

Informatique S4-POO Programmation Orient´ee Objet

N/A
N/A
Protected

Academic year: 2022

Partager "Informatique S4-POO Programmation Orient´ee Objet"

Copied!
164
0
0

Texte intégral

(1)

Informatique S4-POO

Programmation Orient´ee Objet

— Concepts —

C´edric Buche

Ecole Nationale d’Ing´´ enieurs de Brest (ENIB)

28 janvier 2014

(2)

Avant-propos Objectifs

Objectifs th´ematiques de POO

Que va m’apprendre POO ? Le mod`ele objet :

Objet Classe

Encapsulation Collaboration 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)

edric Buche (ENIB) POO 28 janvier 2014 2 / 137

(3)

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

(4)

Avant-propos Organisation

Equipe p´edagogique 2013 ´

Enseignants-chercheurs

Bosser Anne-Gwen Cours + Labo [email protected]

Desmeulles Gireg Cours + Labo [email protected]

edric Buche (ENIB) POO 28 janvier 2014 4 / 137

(5)

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

(6)

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

edric Buche (ENIB) POO 28 janvier 2014 6 / 137

(7)

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

(8)

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

edric Buche (ENIB) POO 28 janvier 2014 6 / 137

(9)

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

edric Buche (ENIB) POO 28 janvier 2014 7 / 137

(10)

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

edric Buche (ENIB) POO 28 janvier 2014 8 / 137

(11)

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

(12)

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

edric Buche (ENIB) POO 28 janvier 2014 9 / 137

(13)

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

(14)

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

edric Buche (ENIB) POO 28 janvier 2014 11 / 137

(15)

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

(16)

Justification du mod`ele objet (1 UC)

Cours 1 / Labo 2

Objectifs

Justifier le mod`ele objet Notion de classe :

efinition constructeur Notion d’objet : instanciation manipulation

edric Buche (ENIB) POO 28 janvier 2014 13 / 137

(17)

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]

(18)

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]

edric Buche (ENIB) POO 28 janvier 2014 15 / 137

(19)

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

(20)

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!

edric Buche (ENIB) POO 28 janvier 2014 17 / 137

(21)

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!

(22)

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!

edric Buche (ENIB) POO 28 janvier 2014 17 / 137

(23)

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.

(24)

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.

edric Buche (ENIB) POO 28 janvier 2014 18 / 137

(25)

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.

(26)

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 ”

edric Buche (ENIB) POO 28 janvier 2014 19 / 137

(27)

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

(28)

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

edric Buche (ENIB) POO 28 janvier 2014 21 / 137

(29)

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

(30)

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

edric Buche (ENIB) POO 28 janvier 2014 23 / 137

(31)

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

(32)

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

edric Buche (ENIB) POO 28 janvier 2014 24 / 137

(33)

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

(34)

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 ”

edric Buche (ENIB) POO 28 janvier 2014 25 / 137

(35)

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 )

(36)

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

edric Buche (ENIB) POO 28 janvier 2014 27 / 137

(37)

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

(38)

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 )

edric Buche (ENIB) POO 28 janvier 2014 29 / 137

(39)

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

(40)

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 )

edric Buche (ENIB) POO 28 janvier 2014 31 / 137

(41)

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

(42)

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

edric Buche (ENIB) POO 28 janvier 2014 33 / 137

(43)

Concepts fondateurs (1 UC)

Cours 2 / Labo 2

Objectifs Classe :

Attributs ethodes

Constructeur / destructeur Objet :

Etat´

Comportement Identit´e

(44)

Concepts fondateurs (1 UC)

Cours 2 / Labo 2

Objectifs Classe :

Attributs ethodes

Constructeur / destructeur Objet :

Etat´

Comportement Identit´e

edric Buche (ENIB) POO 28 janvier 2014 34 / 137

(45)

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.

(46)

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]

edric Buche (ENIB) POO 28 janvier 2014 36 / 137

(47)

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

(48)

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

edric Buche (ENIB) POO 28 janvier 2014 37 / 137

(49)

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

(50)

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

edric Buche (ENIB) POO 28 janvier 2014 38 / 137

(51)

Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?

Classe — Objets

1 Classe

Abstraction

efinit une infinit´e d’objets instances

2 Objet = ´etat + comportement + identit´e Attributs

ethodes Identit´e

On dit qu’un objet est uneinstance d’une classe

(52)

Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?

Classe — Objets

1 Classe

Abstraction

efinit une infinit´e d’objets instances

2 Objet = ´etat + comportement + identit´e Attributs

ethodes Identit´e

On dit qu’un objet est uneinstance d’une classe

edric Buche (ENIB) POO 28 janvier 2014 39 / 137

(53)

Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?

Classe — Objets

1 Classe

Abstraction

efinit une infinit´e d’objets instances

2 Objet = ´etat + comportement + identit´e Attributs

ethodes Identit´e

On dit qu’un objet est uneinstance d’une classe

(54)

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

edric Buche (ENIB) POO 28 janvier 2014 40 / 137

(55)

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

(56)

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

edric Buche (ENIB) POO 28 janvier 2014 42 / 137

(57)

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

(58)

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

edric Buche (ENIB) POO 28 janvier 2014 42 / 137

(59)

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

(60)

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

edric Buche (ENIB) POO 28 janvier 2014 43 / 137

(61)

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

(62)

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

edric Buche (ENIB) POO 28 janvier 2014 45 / 137

(63)

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 ”

(64)

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

edric Buche (ENIB) POO 28 janvier 2014 47 / 137

(65)

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 :

(66)

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

edric Buche (ENIB) POO 28 janvier 2014 48 / 137

(67)

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

(68)

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

edric Buche (ENIB) POO 28 janvier 2014 49 / 137

(69)

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

(70)

Concepts fondateurs (1 UC) Qu’est ce qu’un objet ?

Le chaos des objets

Attention, ne pas oublier ! ! Soient 3 objets :

eme structures de donn´ees (attributs) eme comportement (m´ethodes)

→ Il faut les d´ecrire de fa¸con abstraite : uneclasse

edric Buche (ENIB) POO 28 janvier 2014 51 / 137

(71)

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

(72)

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

edric Buche (ENIB) POO 28 janvier 2014 52 / 137

(73)

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

(74)

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

edric Buche (ENIB) POO 28 janvier 2014 52 / 137

(75)

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 )

(76)

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

edric Buche (ENIB) POO 28 janvier 2014 54 / 137

(77)

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

(78)

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

edric Buche (ENIB) POO 28 janvier 2014 54 / 137

(79)

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

(80)

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”

edric Buche (ENIB) POO 28 janvier 2014 56 / 137

(81)

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

(82)

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

edric Buche (ENIB) POO 28 janvier 2014 58 / 137

(83)

Encapsulation (1 UC)

Cours 3 / Labo 3

Objectifs

Encapsulation

R´egles d’encapsulation

(84)

Encapsulation (1 UC) Principes

L’encapsulation occulte les d´etails de l’impl´ementation d’un objet [Booch, 1992]

edric Buche (ENIB) POO 28 janvier 2014 60 / 137

(85)

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 !

(86)

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.

edric Buche (ENIB) POO 28 janvier 2014 62 / 137

(87)

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

(88)

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

edric Buche (ENIB) POO 28 janvier 2014 64 / 137

(89)

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

(90)

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

edric Buche (ENIB) POO 28 janvier 2014 66 / 137

(91)

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

(92)

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

edric Buche (ENIB) POO 28 janvier 2014 66 / 137

(93)

Encapsulation (1 UC) 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

(94)

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

edric Buche (ENIB) POO 28 janvier 2014 68 / 137

Références

Documents relatifs

Plusieurs instances de cette classe devront référencer le même objet en mémoire : définition d'une sous-classe assistante, associant l'adresse réelle de l'objet et un compteur...

Une pile représente un ensemble de données où l'on ne peut accéder qu'au dernier élément entré, qui devient donc le premier à sortir. On les appelle parfois LIFO (last in

A présent le code peut s'utiliser pour afficher tous les éléments d'une liste d'entiers différents de -5, tous les éléments d'un tableau de chaînes de moins de trois

sinon si valeur dans feuille courante < valeur à ajouter Prend branche gauche comme nouvelle racine Ajout. sinon si valeur dans feuille courante > valeur à ajouter Prend

parenthèse ouvrante : on remarque que l'utilisation d'une pile peut simplifier la gestion des parenthèses pour la construction de l'arbre..... 15

• Arbre de recherche suivant la valeur Facile à programmer Très rapide à chercher Espace mémoire moyen Aucune n'est préférable, le contexte. décidera de la

Accès aux membres Modes d’héritage Amitié et héritage Surcharge de méthodes..

Elle ne peut donc pas être appelée directement, mais doit être redéfinie dans. les