164
Informatique S4-POO Programmation Orient´ ee Objet — Concepts — edric Buche ´ Ecole Nationale d’Ing´ enieurs de Brest (ENIB) 28 janvier 2014 edric Buche (ENIB) POO 28 janvier 2014 1 / 137

Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Informatique S4-POO

Programmation Orientee Objet— Concepts —

Cedric Buche

Ecole Nationale d’Ingenieurs de Brest (ENIB)

28 janvier 2014

Cedric Buche (ENIB) POO 28 janvier 2014 1 / 137

Page 2: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Objectifs

Objectifs thematiques de POO

Que va m’apprendre POO ?

Le modele objet :

ObjetClasseEncapsulationCollaborationHeritage(Abstraction)(Modularite)(Persistance)

Modeliser objetLa partie statique du langage UML :

Diag. de cas d’utilisationDiag. de classesModele d’interaction (Diag. sequence + communication)

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

Page 3: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Objectifs

Et la suite ... ?Cycle Ingenieur ENIB - Tronc commun

Semestre Theme Volume

S5 Prog. par objets (Java) 45hS6 Prog. par objets (C++) 45hS6 Modeles pour l’ingenierie des systemes (UML) 45hS6 Base de donnees 22h

S7 Reseaux 90h

S8 Stage en entreprise 45hS10 Stage en entreprise 45h

Cedric Buche (ENIB) POO 28 janvier 2014 3 / 137

Page 4: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Organisation

Equipe pedagogique 2013

Enseignants-chercheurs

Bosser Anne-Gwen Cours + Labo [email protected]

Desmeulles Gireg Cours + Labo [email protected]

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

Page 5: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Organisation

Planning

Module : Programmation Orientee Objet — POO 2013

Responsable : Cedric Buche (CERV, bureau 30, tel : 02 98 05 89 66, email : [email protected]) S4

Intervenants : C. Buche (cb)

Semaine LABO CTD

37 POO — Justification modele objetctd cb

37 POO — Concepts fondateursctd cb

38 POO — Rappels pythonlabo cb

38 POO — Concepts fondateurslabo cb

39 POO — Encapsulationctd cb

39 POO — Collaboration et hierarchiectd cb

40 POO — Encapsulationlabo cb

40 POO — Collaboration et heritagelabo cb

41 UML — Generalitesctd cb

41 UML — Classesctd cb

42 UML — Classeslabo cb

42 UML — Classeslabo cb

43 UML — Classesctd cb

43 UML — Classesctd cb

44 VacancesToussaint

Semaine LABO CTD

45 UML — Classeslabo cb

45 UML — Classeslabo cb

46 UML — Use Case (diag.)ctd cb

46 UML — Use Case (scenarios)ctd cb

47 UML — Use Case (diag.)labo cb

47 UML — Use Case (scenarios)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

50

51

51

Cedric Buche (ENIB) POO 28 janvier 2014 5 / 137

Page 6: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Evaluation

Types de controle

Controle d’attention

Controle de l’attention sur un cours particulier - QCM

Duree 5-10’

En fin de cours

Controle des connaissances

Controle des connaissances acquis sur un theme - QCM

Duree 5-10’

En debut de labo

Controle d’attention + Controle des connaissances→ Note de travail

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

Page 7: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Evaluation

Types de controle

Controle d’attention

Controle de l’attention sur un cours particulier - QCM

Duree 5-10’

En fin de cours

Controle des connaissances

Controle des connaissances acquis sur un theme - QCM

Duree 5-10’

En debut de labo

Controle d’attention + Controle des connaissances→ Note de travail

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

Page 8: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Evaluation

Types de controle

Controle d’attention

Controle de l’attention sur un cours particulier - QCM

Duree 5-10’

En fin de cours

Controle des connaissances

Controle des connaissances acquis sur un theme - QCM

Duree 5-10’

En debut de labo

Controle d’attention + Controle des connaissances→ Note de travail

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

Page 9: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Evaluation

Exemple de QCM

Informatique Contrôle ContinuNom/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

1

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

Page 10: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Evaluation

Notation QCM

Note : distance au but

0 : dans le mille ! → objectif atteint1 : pas mal → objectif en vue2 : tout juste sur la cible → objectif loingtain3 : meme pas touche → objectif pas atteint

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

Page 11: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Evaluation

Notation QCM

Note : distance au but

0 : dans le mille ! → objectif atteint1 : pas mal → objectif en vue2 : tout juste sur la cible → objectif loingtain3 : meme pas touche → objectif pas atteint

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

Page 12: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Evaluation

DS

Controle de synthese

Controle des competences acquises sur un demi-semestre

Duree 1h20

Concepts objetUML

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

Page 13: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Avant-propos Evaluation

Evaluation des apprentissages

Et si je suis absent ?

a un ”Controle d’attention”

→ Je justifie mon abscence (certificat medical)

a un ”Controle des connaissances”

→ Je justifie mon abscence (certificat medical)

a un ”Controle de synthese”

→ Je justifie mon abscence (certificat medical)Rattrapage

Cedric Buche (ENIB) POO 28 janvier 2014 10 / 137

Page 14: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC)

Plan de la presentation

1 Justification du modele objet (1 UC)

2 Concepts fondateurs (1 UC)

3 Encapsulation (1 UC)

4 Hierarchie (1 UC)

5 Collaborations entre objets (1 UC)

6 Pour aller plus loin

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

Page 15: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC)

1 Justification du modele objet (1 UC)

2 Concepts fondateurs (1 UC)

3 Encapsulation (1 UC)

4 Hierarchie (1 UC)

5 Collaborations entre objets (1 UC)

6 Pour aller plus loin

Cedric Buche (ENIB) POO 28 janvier 2014 12 / 137

Page 16: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC)

Cours 1 / Labo 2

Objectifs

Justifier le modele objet

Notion de classe :

definitionconstructeur

Notion d’objet :

instanciationmanipulation

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

Page 17: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Complexite

Complexite des problemes

� La complexite des logiciels est une caracteristique innee etnon propriete accidentelle � [Brooks, 1987]

Cedric Buche (ENIB) POO 28 janvier 2014 14 / 137

Page 18: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Complexite

Difficulte du controle du processus de developpement

La tache de l’equipe de developpement de logiciel est de donner

l’illusion de la simplicite [Booch, 1992]

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

Page 19: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Complexite

Consequences d’une complexite sans limites

� Plus un systeme est complexe, plus il est susceptibled’effondrement � [Peter, 1986]

Est ce qu’un entrepreneur songe a ajouter une nouvelle assise a un

immeuble de 100 etages existant ? Ce genre de considerations est

pourtant demande par certains utilisateurs de logiciels

Cedric Buche (ENIB) POO 28 janvier 2014 16 / 137

Page 20: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Complexite

Qualite du logiciel

Extensibilite :

faculte d’adaptation d’un logiciel aux changements de specification.

simplicite de la conception

decentralisation

Reutilisabilite :

aptitude d’un logiciel a etre reutilise en tout ou en partie pour denouvelles applications.

Ne pas reinventer la roue !

Programmer moins pour programmer mieux !

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

Page 21: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Complexite

Qualite du logiciel

Extensibilite :

faculte d’adaptation d’un logiciel aux changements de specification.

simplicite de la conception

decentralisation

Reutilisabilite :

aptitude d’un logiciel a etre reutilise en tout ou en partie pour denouvelles applications.

Ne pas reinventer la roue !

Programmer moins pour programmer mieux !

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

Page 22: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Complexite

Qualite du logiciel

Extensibilite :

faculte d’adaptation d’un logiciel aux changements de specification.

simplicite de la conception

decentralisation

Reutilisabilite :

aptitude d’un logiciel a etre reutilise en tout ou en partie pour denouvelles applications.

Ne pas reinventer la roue !

Programmer moins pour programmer mieux !

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

Page 23: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Programmation procedurale

Paradigme de programmation procedurale

Programmation procedurale

separation entre code et donnees.

Variables (globales)

contiennent vos donnees

sont utilisees par des fonctions/procedures.

Fonctions

peuvent modifier une variable

peuvent passer cette variable a une autre fonction/procedure.

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

Page 24: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Programmation procedurale

Paradigme de programmation procedurale

Programmation procedurale

separation entre code et donnees.

Variables (globales)

contiennent vos donnees

sont utilisees par des fonctions/procedures.

Fonctions

peuvent modifier une variable

peuvent passer cette variable a une autre fonction/procedure.

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

Page 25: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Programmation procedurale

Paradigme de programmation procedurale

Programmation procedurale

separation entre code et donnees.

Variables (globales)

contiennent vos donnees

sont utilisees par des fonctions/procedures.

Fonctions

peuvent modifier une variable

peuvent passer cette variable a une autre fonction/procedure.

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

Page 26: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Programmation procedurale

Exemple

Dans une entreprise situee a Biarritz,Robert (num de secu 10573123456),est employe 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 num secu robert = 10573123456

7 nom robert = ”Robert”

8 q u a l i f i c a t i o n r o b e r t = ” Technic ien ”

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 ”

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

Page 27: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Programmation procedurale

Limites de la programmation procedurale : Exemple

Ajout d’un employe bernard

1 # r o b e r t

2 num secu robert = 10573123456

3 nom robert = ”Robert”

4 q u a l i f i c a t i o n r o b e r t = ” Technic ien ”

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 num secu bernard = 2881111001

9 nom bernard = ”Bernard”

10 q u a l i f i c a t i o n b e r n a r d = ” Ingen i eur ”

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

Cedric Buche (ENIB) POO 28 janvier 2014 20 / 137

Page 28: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Programmation procedurale

Limites de la programmation procedurale

1 ###########################################

2 # V e r s i o n 2

3 # u t i l i s a t i o n de c o n t e n e u r s

4 ###########################################

5

6 tab robe r t =[10573123456 ,

7 ” robe r t ” ,

8 ” Technic ien ” ,

9 ” B i a r r i t z ” ]

10 tab mickey =[14456464443 ,

11 ”mickey” ,

12 ” Ingen i eur ” ,

13 ” Brest ” ]

14 tab =[ ]

15 tab . append ( tab robe r t )

16 tab . append ( tab mickey )

17 print tab [ 0 ] [ 0 ] # num s e c u r o b e r t

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

Page 29: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

Vers la programmation orientee objet

Definition de la structure de donnee par la notion de classe

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

Cedric Buche (ENIB) POO 28 janvier 2014 22 / 137

Page 30: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

Vers la programmation orientee objet : classe

Classe

declare les proprietes communes d’un ensemble d’objets

Exemple

La classe Voiture possede les proprietes suivantes (les attributs) :

couleur

puissance

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

Page 31: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

Vers la programmation orientee objet : classe

Classe

declare les proprietes communes d’un ensemble d’objets

Exemple

La classe Voiture possede les proprietes suivantes (les attributs) :

couleur

puissance

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

Page 32: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

Vers la programmation orientee objet : objets

Classe → Objets

usine a partir de laquelle il est possible de creer 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

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

Page 33: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

Vers la programmation orientee objet : objets

Classe → Objets

usine a partir de laquelle il est possible de creer 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

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

Page 34: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

En pratique ...

Mise en place d’objets concrets (instances de classe)

1 # r o b e r t

2 e1=Employe ( ) # o b j e t e 1 : i n s t a n c e de l a c l a s s e Employe

3 e1 . num secu = 10573123456

4 e1 .nom = ”Robert”

5 e1 . q u a l i f i c a t i o n = ” Technic ien ”

6 e1 . L i e u d e t r a v a i l = ” B i a r r i t z ”

7

8 print ( e1 . num secu ,

9 e1 . nom,

10 e1 . q u a l i f i c a t i o n ,

11 e1 . L i e u d e t r a v a i l )

12

13 # mi c k e y

14 e2=Employe ( ) # o b j e t e 2 : i n s t a n c e de l a c l a s s e Employe

15 e2 . num secu = 14456464443

16 e2 .nom = ”Mickey”

17 e2 . q u a l i f i c a t i o n = ” Inge ”

18 e2 . L i e u d e t r a v a i l = ” Brest ”

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

Page 35: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

En pratique ...

1 # n o r b e r t

2 e3=Employe ( )

3

4 print ( e3 . num secu , # ERREUR

5 e3 . nom,

6 e3 . q u a l i f i c a t i o n ,

7 e3 . L i e u d e t r a v a i l )

Cedric Buche (ENIB) POO 28 janvier 2014 26 / 137

Page 36: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

Vers la programmation orientee objet : Le constructeur

Constructeur

les attributs doivent etres initialisees avec une valeur � pardefaut �

appel a une fonction particuliere : le constructeur

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

Page 37: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

En pratique ...

1

2 class Employe :

3 def i n i t ( s e l f ) : # C o n s t r u c t e u r de l a c l a s s e Employe

4 s e l f . num secu = 000000000

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 = ” novice ”

7 s e l f . L i e u d e t r a v a i l = ” Par i s ”

En python, le premier argument du constructeurest toujours self

Cedric Buche (ENIB) POO 28 janvier 2014 28 / 137

Page 38: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

En pratique ...

1 # n o r b e r t

2 e3=Employe ( ) # c r e a t i o n de e 3 : a p p e l i m p l i c i t e de i n i t de Employe

3

4 print ( e3 . num secu , # OK ! ! !

5 e3 . nom,

6 e3 . q u a l i f i c a t i o n ,

7 e3 . L i e u d e t r a v a i l )

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

Page 39: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

En pratique ...

1

2 class Employe :

3 def i n i t ( s e l f ,

4 le num secu ,

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 = le num secu

10 s e l f . nom = le nom

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

Cedric Buche (ENIB) POO 28 janvier 2014 30 / 137

Page 40: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

En pratique ...

En python,→ init appelee implicitement a la creation d’unobjet→ le constructeur peut posseder plusieurs arguments(en plus de self )

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

Page 41: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Justification du modele objet (1 UC) Vers la Programmation Orientee Objet (POO)

Vers la programmation orientee objet : Le constructeur

1

2 class Employe :

3 def i n i t ( s e l f ,

4 le num secu = 000000000 ,

5 le nom = ”no name” ,

6 l a q u a l i f i c a t i o n = ” novice ” ,

7 l e L i e u d e t r a v a i l = ” Par i s ” ) :

8

9 s e l f . num secu = le num secu

10 s e l f . nom = le nom

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 ############## Programme P r i n c i p a l #############

16

17 e1 = Employe ( l e L i e u d e t r a v a i l = ” Brest ” )

Cedric Buche (ENIB) POO 28 janvier 2014 32 / 137

Page 42: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC)

Plan de la presentation

1 Justification du modele objet (1 UC)

2 Concepts fondateurs (1 UC)

3 Encapsulation (1 UC)

4 Hierarchie (1 UC)

5 Collaborations entre objets (1 UC)

6 Pour aller plus loin

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

Page 43: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC)

Cours 2 / Labo 2

Objectifs

Classe :

AttributsMethodesConstructeur / destructeur

Objet :

EtatComportementIdentite

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

Page 44: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC)

Cours 2 / Labo 2

Objectifs

Classe :

AttributsMethodesConstructeur / destructeur

Objet :

EtatComportementIdentite

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

Page 45: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?

Les classes

Je croyais qu’on allait apprendre a creer des objets,pourquoi creer une classe ?

pour creer un objet, il faut d’abord creer une classe !

exemple : pour construire une maison,

besoin d’un plan d’architecte→ classe = plan,→ l’objet = maison.→ ”Creer une classe”, c’est dessiner les plans de l’objet.

Cedric Buche (ENIB) POO 28 janvier 2014 35 / 137

Page 46: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?

Une classe represente un ensemble d’objets qui partagent une structure

commmune et un comportement commun [Booch, 1992]

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

Page 47: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?

Les classes

Une classe est la description d’une famille d’objets qui ont lameme structure et les memes comportements.

Une classe est une sorte de moule a partir duquel sont generes lesobjets.

Une classegeneration−−−−−−−−→ des objets

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

Page 48: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?

Les classes

Une classe est la description d’une famille d’objets qui ont lameme structure et les memes comportements.

Une classe est une sorte de moule a partir duquel sont generes lesobjets.

Une classegeneration−−−−−−−−→ des objets

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

Page 49: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?

Les classes

Une classe est constituee :1 d’un ensemble de variables (ou attributs) qui decrivent la structure

des objets ;2 d’un ensemble de fonctions (ou methodes)

qui sont applicables aux objets, et qui decrivent leur comportement.

attributs : variables contenues dans la classe,

on parle aussi de ”variables membres”

methodes : fonctions contenues dans la classe,

on parle aussi de ”fonctions membres”

ou de competences

ou de services

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

Page 50: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Qu’est ce qu’une classe ?

Les classes

Une classe est constituee :1 d’un ensemble de variables (ou attributs) qui decrivent la structure

des objets ;2 d’un ensemble de fonctions (ou methodes)

qui sont applicables aux objets, et qui decrivent leur comportement.

attributs : variables contenues dans la classe,

on parle aussi de ”variables membres”

methodes : fonctions contenues dans la classe,

on parle aussi de ”fonctions membres”

ou de competences

ou de services

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

Page 51: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Classe — Objets

1 Classe

AbstractionDefinit une infinite d’objets instances

2 Objet = etat + comportement + identite

AttributsMethodesIdentite

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

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

Page 52: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Classe — Objets

1 Classe

AbstractionDefinit une infinite d’objets instances

2 Objet = etat + comportement + identite

AttributsMethodesIdentite

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

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

Page 53: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Classe — Objets

1 Classe

AbstractionDefinit une infinite d’objets instances

2 Objet = etat + comportement + identite

AttributsMethodesIdentite

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

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

Page 54: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Etat

Etat d’un objet

regroupe les valeurs instantanees de tous ses attributs

evolue au cours du temps

est la consequence de ses comportements passes

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

Page 55: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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 class Voiture :

3 def i n i t ( s e l f , v1=”nomarque” , v2=” noco lo r ” , v3 =0):

4 s e l f . marque = v1

5 s e l f . cou l eur = v2

6 s e l f . r e s e rveEs sence = v3

7

8 ### Ob j e t #####

9 homer mobile = Voiture ( )

10

11 ## Et a t

12 homer mobile . marque = ” pipo ”

13 homer mobile . cou l eur = ” rose ”

14 homer mobile . r e s e rveEs sence = 30

Cedric Buche (ENIB) POO 28 janvier 2014 41 / 137

Page 56: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Attributs et variables

les attributs caracterisent l’etat des instances d’une classe. Ilsparticipent a la modelisation du probleme.

les variables sont des memoires locales a des methodes. Elles sontla pour faciliter la gestion du traitement.

l’acces aux variables est limite au bloc ou elles sont declarees :regle de portee

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

Page 57: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Attributs et variables

les attributs caracterisent l’etat des instances d’une classe. Ilsparticipent a la modelisation du probleme.

les variables sont des memoires locales a des methodes. Elles sontla pour faciliter la gestion du traitement.

l’acces aux variables est limite au bloc ou elles sont declarees :regle de portee

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

Page 58: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Attributs et variables

les attributs caracterisent l’etat des instances d’une classe. Ilsparticipent a la modelisation du probleme.

les variables sont des memoires locales a des methodes. Elles sontla pour faciliter la gestion du traitement.

l’acces aux variables est limite au bloc ou elles sont declarees :regle de portee

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

Page 59: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Comportement

Comportement d’un objet

regroupe toutes ses competences

decrit les actions et les reactions d’un objet

→ se represente sous la forme de methodes(appelees parfois fonctions membres)

Pour un objet ”homer mobile”

demarrer

arreter

freiner

. . .

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

Page 60: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Comportement

Comportement d’un objet

regroupe toutes ses competences

decrit les actions et les reactions d’un objet

→ se represente sous la forme de methodes(appelees parfois fonctions membres)

Pour un objet ”homer mobile”

demarrer

arreter

freiner

. . .

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

Page 61: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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 class Voiture :

3 def i n i t ( s e l f , v1=”nomarque” , v2=” noco lo r ” , v3 =0):

4 s e l f . marque = v1

5 s e l f . cou l eur = v2

6 s e l f . r e s e rveEs sence = v3

7

8 def demarrer ( s e l f ) :

9 print ” j e demarre”

10 def a r r e t e r ( s e l f ) :

11 print ” j e m ' a r r e t e ”

12 . . .

13 ### Ob j e t #####

14 homer mobile = Voiture ( )

15

16 ## Compor t ement

17 homer mobile . demarrer ( )

18 homer mobile . a r r e t e r ( )

Cedric Buche (ENIB) POO 28 janvier 2014 44 / 137

Page 62: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Comportement — Etat

L’etat et le comportement sont lies

homer mobile.demarrer()

ne marchera pas si

homer mobile.reserveEssence

== 0

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

Page 63: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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 class Voiture :

3 def i n i t ( s e l f , v1=”nomarque” , v2=” noco lo r ” , v3 =0):

4 s e l f . marque = v1

5 s e l f . cou l eur = v2

6 s e l f . r e s e rveEs sence = v3

7

8 def demarrer ( s e l f ) :

9 i f s e l f . r e s e rveEs sence > 0 :

10 print ” j e demarre”

11 else :

12 print ” j e ne peux pas demarrer ”

Cedric Buche (ENIB) POO 28 janvier 2014 46 / 137

Page 64: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Etat : evolution

Pour l’objet ”homer mobile”

marque : pipo

couleur : rose

reserve d’essence :30l

Apres 100 kms . . .

marque : pipo

couleur : rose

reserve d’essence :25l

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

Page 65: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Etat : evolution

Pour l’objet ”homer mobile”

marque : pipo

couleur : rose

reserve d’essence :30l

Apres 100 kms . . .

marque : pipo

couleur : rose

reserve d’essence :25l

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

Page 66: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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 class Voiture :

3 def i n i t ( s e l f , v1=”nomarque” , v2=” noco lo r ” , v3 =0):

4 s e l f . marque = v1

5 s e l f . cou l eur = v2

6 s e l f . r e s e rveEs sence = v3

7

8 def demarrer ( s e l f ) :

9 i f s e l f . r e s e rveEs sence > 0 :

10 print ” j e demarre”

11 else :

12 print ” j e ne peux pas demarrer ”

13

14 def r o u l e r ( s e l f ,nbKm) :

15 s e l f . r e s e rveEs sence = s e l f . r e s e rveEs sence − 5*nbKm/100;

16

17

18 ####

19 homer mobile = Voiture ( )

20 homer mobile . r e s e rveEs sence = 30

21 homer mobile . demarrer ( )

22 homer mobile . r o u l e r (100)

23 print homer mobile . r e s e rveEs sence

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

Page 67: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Identite

L’identite

est propre a l’objet et le caracterise

permet de distinguer tout objet independamment de son etat

Voiture.1

Voiture.2

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

Page 68: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Identite

L’identite

est propre a l’objet et le caracterise

permet de distinguer tout objet independamment de son etat

Voiture.1

Voiture.2

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

Page 69: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Identite

→ nommer chaque objet(ex. attribut ”name”)print homer mobile.name

→ leur referenceprint homer mobile

Voiture.10xb7d4e0ec

Voiture.20xb7d53eec

Cedric Buche (ENIB) POO 28 janvier 2014 50 / 137

Page 70: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

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

Le chaos des objets

Attention, ne pas oublier ! !

Soient 3 objets :

meme structures de donnees (attributs)meme comportement (methodes)

→ Il faut les decrire de facon abstraite : une classe

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

Page 71: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

Construction

A la declaration d’un objet, les attributs ne sont pas initialises.

Cette phase d’initialisation des attributs est effectuee par unemethode particuliere : le constructeur.

Le constructeur est appele lors de la construction de l’objet.

Une classe peut definir son(ses) constructeur(s) avec desparametres differents

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

Page 72: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

Construction

A la declaration d’un objet, les attributs ne sont pas initialises.

Cette phase d’initialisation des attributs est effectuee par unemethode particuliere : le constructeur.

Le constructeur est appele lors de la construction de l’objet.

Une classe peut definir son(ses) constructeur(s) avec desparametres differents

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

Page 73: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

Construction

A la declaration d’un objet, les attributs ne sont pas initialises.

Cette phase d’initialisation des attributs est effectuee par unemethode particuliere : le constructeur.

Le constructeur est appele lors de la construction de l’objet.

Une classe peut definir son(ses) constructeur(s) avec desparametres differents

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

Page 74: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

Construction

A la declaration d’un objet, les attributs ne sont pas initialises.

Cette phase d’initialisation des attributs est effectuee par unemethode particuliere : le constructeur.

Le constructeur est appele lors de la construction de l’objet.

Une classe peut definir son(ses) constructeur(s) avec desparametres differents

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

Page 75: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

En pratique ...

1

2 class Complexe :

3 def 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 ####### Programme p r i n c i p a l ########

10 c1 = Complexe ( )

11 c2 = Complexe ( 0 . 5 )

12 c3 = Complexe ( 0 . 5 , 0 . 2 )

13 c4 = Complexe ( i =0.2)

Cedric Buche (ENIB) POO 28 janvier 2014 53 / 137

Page 76: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

Destruction

Methode speciale appelee lors de la suppression d’une instance : ledestructeur de la classe

Objectif : detruire tous les objets crees par l’objet courant aucours de son existence

En python,→ la definition d’un destructeur n’est pas obli-gatoire

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

Page 77: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

Destruction

Methode speciale appelee lors de la suppression d’une instance : ledestructeur de la classe

Objectif : detruire tous les objets crees par l’objet courant aucours de son existence

En python,→ la definition d’un destructeur n’est pas obli-gatoire

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

Page 78: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

Destruction

Methode speciale appelee lors de la suppression d’une instance : ledestructeur de la classe

Objectif : detruire tous les objets crees par l’objet courant aucours de son existence

En python,→ la definition d’un destructeur n’est pas obli-gatoire

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

Page 79: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

En pratique ...

1

2 class Complexe :

3 def d e l ( s e l f ) :

4 print ” I 'm dying ! ”

En python,→ del appelee implicitement a la destruction d’unobjet

Cedric Buche (ENIB) POO 28 janvier 2014 55 / 137

Page 80: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

Garbage collector

Appel du destructeur ?

dans certains langages, un programme s’execute en tache de fondafin de supprimer la memoire associee a un objet

→ le ramasse miettes ou ”garbage collector”

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

Page 81: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Concepts fondateurs (1 UC) Vie d’un objet

En pratique ...

1 class Test :

2 def d e l ( s e l f ) :

3 print ” I am dying ”

4

5

6

7 >>> t1 = Test ( ) # une i n s t a n c e de T e s t e s t c r e e

8 >>> t1 = None # t1 ne p e rme 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 dying # 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 em e n t i c i ma i s n ' e s t p a s g a r a n t i

Cedric Buche (ENIB) POO 28 janvier 2014 57 / 137

Page 82: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC)

Plan de la presentation

1 Justification du modele objet (1 UC)

2 Concepts fondateurs (1 UC)

3 Encapsulation (1 UC)

4 Hierarchie (1 UC)

5 Collaborations entre objets (1 UC)

6 Pour aller plus loin

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

Page 83: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC)

Cours 3 / Labo 3

Objectifs

Encapsulation

Regles d’encapsulation

Cedric Buche (ENIB) POO 28 janvier 2014 59 / 137

Page 84: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Principes

L’encapsulation occulte les details de l’implementation d’un objet

[Booch, 1992]

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

Page 85: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Principes

Controle d’acces : illustration

Gestion de compte en banque

classe Compte

avec un attribut solde

1 class Compte :

2 def i n i t ( s e l f ) :

3 s e l f . s o ld e = 0 # s o l d e n u l

4

5 def a f f i c h e ( s e l f ) :

6 print ”Le so lde de votre compte e s t de ” s e l f . s o lde

7

8

9 ######## Programme 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 lde = 1000000 # ben t i e n s !

Cedric Buche (ENIB) POO 28 janvier 2014 61 / 137

Page 86: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Principes

Controle d’acces

Lors de la definition d’une classe il est possible de restreindre voired’interdire l’acces (aux objets des autres classes) a des attributs oumethodes des instances de cette classe.

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

Page 87: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Principes

Controle d’acces

Modificateurs d’acces lors de la declaration d’attributs oumethodes :

privee accessible uniquement depuis des instances de la classepublic accessible par tout le monde(ie. tous ceux qui possedent une reference sur l’objet)

→ Rendre solde prive

Cedric Buche (ENIB) POO 28 janvier 2014 63 / 137

Page 88: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Principes

En pratique ...

1 class Test :

2

3 def i n i t ( s e l f , laValeurPubl ic , l aVa leurPr ivee ) :

4 s e l f . va l eurPub l i c = laVa leurPub l i c

5 s e l f . v a l e u r P r i v e e = laVa leurPr ivee

6

7

8 def f 1 ( s e l f ) :

9 . . .

10 def f 2 ( s e l f ) :

11 . . .

12

13

14 ######## Programme p r i n c i p a l ########

15 t1 = Test ( )

16

17 print t1 . va l eurPub l i c # OK

18 print t1 . v a l e u r P r i v e e # ERREUR

19

20 t1 . f 1 ( ) # OK

21 t1 . f 2 ( ) # ERREUR

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

Page 89: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Principes

Controle d’acces

Le programmeur createur peut modifier le comportement sans impact :

controle lors de la modification

1 def deb i t ( s e l f , l aValeur ) :

2

3 i f s e l f . s o l d e − l aValeur > 0 :

4 s e l f . s o l d e = s e l f . s o l d e − l aValeur

5 else :

6 print ( ”Compte bloque ! ! ! ” )

En python,→ le prefixe ” ” rend prive un attribut ou unemethode

Cedric Buche (ENIB) POO 28 janvier 2014 65 / 137

Page 90: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Principes

Controle d’acces : interet

1 proteger

→ ne pas permettre l’acces a tout des que l’on a une reference del’objet

2 masquer l’implementation

→ toute la decomposition du probleme n’a besoin d’etre connuedu programmeur client

3 evolutivite

→ possibilite de modifier tout ce qui n’est pas public sans impactpour le programmeur client

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

Page 91: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Principes

Controle d’acces : interet

1 proteger

→ ne pas permettre l’acces a tout des que l’on a une reference del’objet

2 masquer l’implementation

→ toute la decomposition du probleme n’a besoin d’etre connuedu programmeur client

3 evolutivite

→ possibilite de modifier tout ce qui n’est pas public sans impactpour le programmeur client

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

Page 92: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Principes

Controle d’acces : interet

1 proteger

→ ne pas permettre l’acces a tout des que l’on a une reference del’objet

2 masquer l’implementation

→ toute la decomposition du probleme n’a besoin d’etre connuedu programmeur client

3 evolutivite

→ possibilite de modifier tout ce qui n’est pas public sans impactpour le programmeur client

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

Page 93: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Regles d’encapsulation

Regles

Regles a respecter

1 Rendre prives les attributs caracterisant l’etat de l’objet2 Fournir des methodes publiques permettant de acceder/modifier

l’attribut

accesseursmutateurs

Cedric Buche (ENIB) POO 28 janvier 2014 67 / 137

Page 94: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Mise en application

1 - Definir les classes

1 ################################

2 # Programme Python #

3 # Aut eu r : . . . . . #

4 # Date c r e a t i o n : . . . #

5 ################################

6

7 class X:

8

9 # −−− Do cumen 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 # −−− Methode s p u b l i q u e s : A c c e s aux a t t r i b u t s −−−15 # a c c e s s e u r s

16 # mu t a t e u r s

17

18 # −−− Methode s p u b l i q u e s : O p e r a t i o n s −−−19

20 # −−− Methode s p r i v e e s −−−

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

Page 95: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Mise en application

1 - Definir les classes

Documentation

Conception :

decrire la classe et ses fonctionnalites

Debuggage :

debrayer des parties de code, marquer des points douteux, signer uncorrectif

Maintenance :

decrire les corrections/ajouts/retraits et les signer

→ Indispensable dans un code

description, pas des ”faut que j’aille prendre un cafe” . . .

Cedric Buche (ENIB) POO 28 janvier 2014 69 / 137

Page 96: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Mise en application

1 - Definir les classes

Constructeur et destructeur

Constructeur

Definir l’etat initial de l’objet

→ Initialisation des attributs definis dans la classe

Creer les objets dont l’existence est liee a celle de l’objetTypes de constructeur

par defaut, par recopie . . .

Destructeur

Detruire tous les objets crees par l’objet courant au cours de sonexistence

Cedric Buche (ENIB) POO 28 janvier 2014 70 / 137

Page 97: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Mise en application

1 - Definir les classes

Acces aux attributs : getAttrName et setAttrName

Objectifs

Maintien de l’integriteLimitation des effets de bord

Comment ?

Attribut : toujours un membre privegetAttrName et setAttrName : en fonction des contraintesd’integrite

Exemples

Taille d’une Liste

Dimensions d’un Rectangle et d’un Carre

Cedric Buche (ENIB) POO 28 janvier 2014 71 / 137

Page 98: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Mise en application

1 - Definir les classes

1 class Temperature :

2 ”””

3 La c l a s s e T emp e r a t u r e r e p r e s e n t e une g r a n d e u r p h y s i q u e l i e e

4 a l a n o t i o n immed i a t e de chaud e t f r o i d

5 ”””

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

7 def i n i t ( s e l f , l aValeur = 0 ) :

8 s e l f . v a l e u r = laValeur

9

10 def d e l ( s e l f ) :

11 print ” de s t ru c t i on ”

12

13 # −−− Methode s p u b l i q u e s : A c c e s aux a t t r i b u t s

14 # a c c e s s e u r s

15 def getValeur ( s e l f ) :

16 return s e l f . v a l e u r

17 # mu t a t e u r s

18 def se tVa leur ( s e l f , va lue ) :

19 s e l f . v a l e u r = value

20

21 # −−− Methode s p u b l i q u e s : O p e r a t i o n s

22 def getValeurC ( s e l f ) :

23 return s e l f . v a l e u r − 273.16

24

25 def getValeurF ( s e l f ) :

26 return 1 .8 * s e l f . getValeurC ( ) + 32

Cedric Buche (ENIB) POO 28 janvier 2014 72 / 137

Page 99: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Mise en application

2 - Instancier des objets et les utiliser

1 # Exemple d ' u t i l i s a t i o n de c e t t e c l a s s e

2

3 eauChaude = Temperature (310)

4 print eauChaude . getValeurC ( )

5 print eauChaude . getValeurF ( )

6

7 eauFroide = Temperature (5)

8 print eauFroide . getValeurC ( )

9 print eauFroide . getValeurF ( )

Cedric Buche (ENIB) POO 28 janvier 2014 73 / 137

Page 100: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Interet

Interet

1 class Voiture :

2 ”””

3 La c l a s s e V o i t u r e d e f i n i e p a r s a l a r g e u r

4 ”””

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

6 def i n i t ( s e l f , l aValeur = 0 ) :

7 s e l f . l a r g e u r = laValeur

8

9 # −−− Methode s p u b l i q u e s : A c c e s aux a t t r i b u t s

10 # a c c e s s e u r s

11 def getLargeur ( s e l f ) :

12 return s e l f . l a r g e u r

13 # mu t a t e u r s

14 def se tLargeur ( s e l f , va lue ) :

15 s e l f . l a r g e u r = value

16

17 # −−− Methode s p u b l i q u e s : O p e r a t i o n s

18 def mettreAJour ( s e l f ) :

19 . . .

20

21 ####### Ob j e t ########

22 veh i cu l e1 = Voiture ( ) ;

23 veh i cu l e1 . se tLargeur (100) # La r g e u r de l a v o i t u r e

24 veh i cu l e1 . mettreAJour ( ) # Met t o n s a j o u r l ' a f f i c h a g e

25 veh i cu l e1 . se tLargeur (150) # Chang e on s l a l a r g e u r de l a v o i t u r e

26 veh i cu l e1 . mettreAJour ( ) # Met t o n s a j o u r l ' a f f i c h a g e

Cedric Buche (ENIB) POO 28 janvier 2014 74 / 137

Page 101: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Interet

Interet

1 def se tLargeur ( s e l f , va lue ) :

2 s e l f . l a r g e u r = value

3 s e l f . mettreAJour ( )

4

5 ####### Ob j e t ###################

6 veh i cu l e1 = Voiture ( ) ;

7 veh i cu l e1 . se tLargeur (100) # La r g e u r de l a v o i t u r e

8 # L ' a f f i c h a g e de l a v o i t u r e e s t a u t oma t i q u em e n t m i s a j o u r d an s l ' a c c e s s e u r

9 veh i cu l e1 . se tLargeur (150) # Chang e on s l a l a r g e u r de l a v o i t u r e

10 # Enc o r e une f o i s , i l n ' y a r i e n d ' a u t r e a f a i r e !

Cedric Buche (ENIB) POO 28 janvier 2014 75 / 137

Page 102: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Interet

Interet

1 veh i cu l e1 = Voiture ( ) ;

2 veh i cu l e1 . se tLargeur (100) # La r g e u r de l a v o i t u r e

3 # On v e r i f i e que l a l a r g e u r e s t d an s l e s l i m i t e s

4 i f veh i cu l e1 . getLargeur ( ) < 100 : veh i cu l e1 . se tLargeur (100)

5 else i f veh i cu l e1 . getLargeur ( ) > 200 : veh i cu l e1 . se tLargeur (200)

6 print veh i cu l e1 . getLargeur ( ) # A f f i c h e : 1 00

7

8 veh i cu l e1 . se tLargeur (250) # Chang e on s l a l a r g e u r de l a v o i t u r e

9 i f veh i cu l e1 . getLargeur ( ) < 100 : veh i cu l e1 . se tLargeur (100)

10 else i f veh i cu l e1 . getLargeur ( ) > 200 : veh i cu l e1 . se tLargeur (200)

11 print veh i cu l e1 . getLargeur ( ) # A f f i c h e : 2 00

Cedric Buche (ENIB) POO 28 janvier 2014 76 / 137

Page 103: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Encapsulation (1 UC) Interet

Interet

1 def se tLargeur ( s e l f , va lue ) :

2 s e l f . l a r g e u r = value

3

4 # l a r g e u r d o i t e t r e c om p r i s e e n t r e 100 e t 200

5 i f ( s e l f . getLargeur ( ) < 100) : s e l f . l a r g e u r = 100

6 else i f ( s e l f . getLargeur ( ) > 200) : s e l f . l a r g e u r = 200

7

8 s e l f . mettreAJour ( )

9

10 ### Ob j e t

11 veh i cu l e1 = Voiture ( ) ;

12 veh i cu l e1 . se tLargeur (100) # La r g e u r de l a v o i t u r e

13 # P l u s b e s o i n de v e r i f i e r que l a l a r g e u r e s t d an s l e s l i m i t e s , l ' a c c e s s e u r l e f a i t p ou r nou s !

14 print veh i cu l e1 . getLargeur ( ) # A f f i c h e : 1 00

15

16 veh i cu l e1 . se tLargeur ( 2 5 0 ) ; # Chang e on s l a l a r g e u r de l a v o i t u r e

17 print veh i cu l e1 . getLargeur ( ) # A f f i c h e : 2 00

Cedric Buche (ENIB) POO 28 janvier 2014 77 / 137

Page 104: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC)

Plan de la presentation

1 Justification du modele objet (1 UC)

2 Concepts fondateurs (1 UC)

3 Encapsulation (1 UC)

4 Hierarchie (1 UC)

5 Collaborations entre objets (1 UC)

6 Pour aller plus loin

Cedric Buche (ENIB) POO 28 janvier 2014 78 / 137

Page 105: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

Les entites constituent une hierarchie [Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 79 / 137

Page 106: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

Heritage

Une sous-classe peut heriter de la structure et du comportement de sa

superclasse (classe mere) [Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 80 / 137

Page 107: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

Heritage

Exemple : Fichier

Il existe plusieurs sortes de fichier :

fichier binaire → FichierBinaire

fichier ASCII → FichierASCII

→ Certaines proprietes sont generales a toutes les classes

→ nom, taille

→ Certaines sont specifiques a une classe ou un groupe de classesspecialisees

→ executer, imprimer

Cedric Buche (ENIB) POO 28 janvier 2014 81 / 137

Page 108: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

Heritage

La relation d’heritage

Principe

les caracteristiques des classes superieures sont heritees par lesclasses inferieures.

Mise en œuvre

les connaissances les plus generales sont mises en commun dans desclasses qui sont ensuite specialisees par definitions de sous–classessuccessives contenant des connaissances de plus en plus specifiques.

Cedric Buche (ENIB) POO 28 janvier 2014 82 / 137

Page 109: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

Specialisation

La specialisation d’une classe peut etre realisee selon deux techniques :

1 l’enrichissement : la sous–classe est dotee de nouvelle(s)methode(s) et/ou de nouveau(x) attribut(s) ;

2 la surcharge : une (ou plusieurs) methode et/ou un attribut heriteest redefini.

Cedric Buche (ENIB) POO 28 janvier 2014 83 / 137

Page 110: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

Enrichissement (ajout d’une methode)

1 ###################################

2 ######### c l a s s F i c h i e r ##########

3

4 class F i ch i e r :

5 ””” D e f i n i t i o n c l a s s e F i c h i e r ””” # Do cumen t a t i o n

6

7 def i n i t ( s e l f ) : # C o n s t r u c t e u r

8 print ” c r e a t i on d 'un f i c h i e r ”

9

10

11 ##########################################

12 ######### c l a s s F i c h i e r B i n a i r e ##########

13

14 class F i c h i e r B i n a i r e ( F i ch i e r ) :

15 ””” D e f i n i t i o n c l a s s e F i c h i e r B i n a i r e ””” # Do cumen t a t i o n

16

17 def i n i t ( s e l f ) : # C o n s t r u c t e u r

18 F i ch i e r . i n i t ( s e l f )

19

20 def imprimer ( s e l f ) # E n r i c h i s s e m e n t

Cedric Buche (ENIB) POO 28 janvier 2014 84 / 137

Page 111: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

Enrichissement (ajout d’un attribut)

1 ###################################

2 ######### c l a s s F i c h i e r ##########

3

4 class F i ch i e r :

5 ””” D e f i n i t i o n c l a s s e F i c h i e r ””” # Do cumen t a t i o n

6

7 def i n i t ( s e l f ) : # C o n s t r u c t e u r

8 print ” c r e a t i on d 'un f i c h i e r ”

9

10

11 ##########################################

12 ######### c l a s s F i c h i e r B i n a i r e ##########

13

14 class F i c h i e r B i n a i r e ( F i ch i e r ) :

15 ””” D e f i n i t i o n c l a s s e F i c h i e r B i n a i r e ””” # Do cumen t a t i o n

16

17 def i n i t ( s e l f ) : # C o n s t r u c t e u r

18 F i ch i e r . i n i t ( s e l f )

19 s e l f . codage=32 # E n r i c h i s s e m e n t

Cedric Buche (ENIB) POO 28 janvier 2014 85 / 137

Page 112: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

Surcharge d’un attribut

1 ###################################

2 ######### c l a s s F i c h i e r ##########

3

4 class F i ch i e r :

5 def i n i t ( s e l f ) : # C o n s t r u c t e u r

6 s e l f . nom = ” f i ch i e r s an s nom ”

7

8

9 ##########################################

10 ######### c l a s s F i c h i e r B i n a i r e ##########

11

12 class F i c h i e r B i n a i r e ( F i ch i e r ) :

13

14 def i n i t ( s e l f ) : # C o n s t r u c t e u r

15 F i ch i e r . i n i t ( s e l f )

16 s e l f . nom = ” f i c h i e r B i n a i r e s a n s n o m ” # Su r c h a r g e de l ' a t t r i b u t ”nom”

Cedric Buche (ENIB) POO 28 janvier 2014 86 / 137

Page 113: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

Surcharge d’une methode

1 ###################################

2 ######### c l a s s F i c h i e r ##########

3 class F i ch i e r :

4

5 def i n i t ( s e l f ) : # C o n s t r u c t e u r

6 print ” c r e a t i on d 'un f i c h i e r ”

7

8 def ouvr i r ( s e l f ) :

9 print ” ouvr i r f i c h i e r ”

10

11

12 ##########################################

13 ######### c l a s s F i c h i e r B i n a i r e ##########

14 class F i c h i e r B i n a i r e ( F i ch i e r ) :

15

16 def i n i t ( s e l f ) : # C o n s t r u c t e u r

17 F i ch i e r . i n i t ( s e l f )

18

19 def ouvr i r ( s e l f ) : # Su r c h a r g e de l a methode

20 print ” ouvr i r f i c h i e r B ina i r e ” # ” o u v r i r ”

Cedric Buche (ENIB) POO 28 janvier 2014 87 / 137

Page 114: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

1 class Engin :

2 def i n i t ( s e l f , braquage =90):

3 s e l f . v i t e s s e = 0

4 s e l f . braquage = braquage

5

6 def v i rage ( s e l f ) :

7 return s e l f . v i t e s s e / s e l f . braquage

8

9 #−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−10 class Sous marin alpha ( Engin ) :

11 def i n i t ( s e l f , braquage ) :

12 Engin . i n i t ( s e l f , braquage )

13

14 #−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−15 class T o r p i l l e ( Engin ) :

16 def i n i t ( s e l f , braquage ) :

17 Engin . i n i t ( s e l f , braquage )

18

19 def exp lo se ( s e l f ) :

20 print ” Explos ion ! ! ! ! ! ! ”

Cedric Buche (ENIB) POO 28 janvier 2014 88 / 137

Page 115: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

L’heritage multiple

faire heriter une classe de plusieurs superclasses.

regrouper au sein d’une seule et meme classe les attributs etmethodes de plusieurs classes.

Cedric Buche (ENIB) POO 28 janvier 2014 89 / 137

Page 116: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

1

2 class Herbivore :

3 . . .

4 def mangerHerbe ( s e l f ) :

5 print ” j e mange de l ' herbe ”

6

7 #−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−8 class Carnivore :

9 . . . .

10 def mangerViande ( s e l f ) :

11 print ” j e mange de l a viande ”

12 #−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−13 class Omnivore ( Herbivore , Carnivore ) : # H e r i t a g e m u l t i p l e

14 . . . .

15 def manger ( s e l f ) :

16 i f rand (10)%2 == 0 :

17 s e l f . mangerHerbe ( )

18 else :

19 s e l f . mangerViande ( )

Cedric Buche (ENIB) POO 28 janvier 2014 90 / 137

Page 117: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

Polymorphisme

A un meme service peut correspondre, dans les classes derivees,des methodes differentes

Chaque classe derivee definit le forme ( -morphe) sous laquelle elleremplit le service (methode)

Cette forme peut donc etre multiple (differente d’une classe al’autre) ( poly-)

Cedric Buche (ENIB) POO 28 janvier 2014 91 / 137

Page 118: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

1 class Shape : # c l a s s e ” a b s t r a i t e ” s p e c i f i a n t une i n t e r f a c e

2 def i n i t ( s e l f ) :

3 print ” j e s u i s une shape”

4

5 def area ( s e l f ) :

6 return ” shape area ”

7

8 class Rectangle ( Shape ) :

9 def i n i t ( s e l f ) :

10 Shape . i n i t ( s e l f )

11 print ” j e s u i s un Rectangle ”

12

13

14 def area ( s e l f ) :

15 return ” r e c t ang l e area ”

16

17 class C i r c l e ( Shape ) :

18 def i n i t ( s e l f ) :

19 Shape . i n i t ( s e l f )

20 print ” j e s u i s un c e r c l e ”

21 def area ( s e l f ) :

22 return ” c i r l e area ”

23

24 #### programme p r i n c i p a l

25 shapes = [ ]

26 shapes . append ( Rectangle ( ) )

27 shapes . append ( C i r c l e ( ) )

28 for i in shapes :

29 print i . area ( ) # a p p e l p o l ymo r ph eCedric Buche (ENIB) POO 28 janvier 2014 92 / 137

Page 119: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

Retour sur l’encapsulation

Encapsulation : controle d’acces

publiques

privees

protegees : les attributs ne sont visibles que des sous-classes

Cedric Buche (ENIB) POO 28 janvier 2014 93 / 137

Page 120: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

Retour sur l’encapsulation

Encapsulation : regles d’ecriture

publiques : attr1, attr2

privees : attr1, attr2

protegees : attr1, attr2

En python,→ Les attributs et methodes protegees sont accessiblesnormalement, le prefixe a pour seul objectif d’informersur leur nature

Cedric Buche (ENIB) POO 28 janvier 2014 94 / 137

Page 121: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

1 class Telephone :

2 def i n i t ( s e l f ) :

3 # do n n e e s p r i v e s

4 s e l f . numero s e r i e = ' 126312156 '

5

6 # do n n e e s p r o t e g e e s

7 s e l f . c ode p in = ' 1234 '

8

9 # do n n e e s p u b l i q u e s

10 s e l f . modele = ' nokia 6800 '

11 s e l f . numero = ' 06 06 06 06 06 '

Cedric Buche (ENIB) POO 28 janvier 2014 95 / 137

Page 122: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

1 # me th od e s p r i v e e s

2

3 # me th od e s p r o t e g e e s

4 def chercherReseau ( s e l f ) :

5 print ' Reseau FSR, bienvenue dans un monde me i l l e u r . . . '

6

7 def recupMessage ( s e l f ) :

8 print 'Pas de message '

9

10 # me th od e s p u b l i q u e s

11 def al lumer ( s e l f , codePin ) :

12 print s e l f . modele

13 i f s e l f . c ode p in == codePin :

14 print 'Code pin OK '

15 s e l f . chercherReseau ( )

16 s e l f . recupMessage ( )

17 else :

18 print ' mauvais code pin '

Cedric Buche (ENIB) POO 28 janvier 2014 96 / 137

Page 123: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

1

2 # programme p r i n c i p a l

3 nokia = Telephone ( )

4 nokia . a l lumer ( ' 1524 ' )

5 nokia . a l lumer ( ' 1234 ' )

Cedric Buche (ENIB) POO 28 janvier 2014 97 / 137

Page 124: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

1 class TelephonePhoto ( Telephone ) :

2 def i n i t ( s e l f ) :

3 Telephone . i n i t ( s e l f )

4 print ' te l ephone + mieux '

5

6 # me th od e s p u b l i q u e s

7 def prendre photo ( s e l f ) :

8 print ' c l i k−c lak '

9

10 # Te s t

11 def f o n c t i o n t e s t ( s e l f ) :

12 print s e l f . numero s e r i e # ERREUR

13 print s e l f . c ode p in # OK sou s−c l a s s e de T e l e p h o n e

14

15

16 # programme p r i n c i p a l

17 nokia = TelephonePhoto ( )

18 nokia . a l lumer ( ' 1234 ' )

19 nokia . prendre photo ( )

Cedric Buche (ENIB) POO 28 janvier 2014 98 / 137

Page 125: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Hierarchie (1 UC) Hierarchie

En pratique ...

1 te l sagem = Telephone ( )

2 print te l sagem . numero s e r i e # ERREUR

3 print te l sagem . code p in # NON ! !

Cedric Buche (ENIB) POO 28 janvier 2014 99 / 137

Page 126: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Collaborations entre objets (1 UC) Relation multiple

En pratique ...

1 # R e l a t i o n m u l t i p l e

2

3 class Fi l l eMars :

4 def i n i t ( s e l f , prenom ) :

5 s e l f . prenom = prenom

6

7 def af f ichePrenom ( s e l f ) :

8 print s e l f . prenom

9 #−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−10 class PapaMars :

11 def i n i t ( s e l f ) :

12 s e l f . f i l l e s = [ ]

13 s e l f . f i l l e s . append ( Fi l l eMars ( 'Pamela ' ) )

14 s e l f . f i l l e s . append ( Fi l l eMars ( ' Tina ' ) )

15 s e l f . f i l l e s . append ( Fi l l eMars ( ' Rebecca ' ) )

16 s e l f . f i l l e s . append ( Fi l l eMars ( 'Amanda ' ) )

17

18 def c r i a t a b l e ( s e l f ) :

19 for c h i l d in s e l f . f i l l e s :

20 c h i l d . af f ichePrenom ()

21 print ( ' a tab l e ! ! ! ' )

Cedric Buche (ENIB) POO 28 janvier 2014 100 / 137

Page 127: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Collaborations entre objets (1 UC) Relation multiple

Attention aux pieges

Heritage vs associations

classe Automobile a partir des classes Carrosserie, Siege, Roue etMoteur.

l’heritage multiple == ERREUR

Cedric Buche (ENIB) POO 28 janvier 2014 101 / 137

Page 128: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Collaborations entre objets (1 UC) Relation multiple

En pratique ...

1 # R e l a t i o n s i m p l e

2 class Calcu la teur ( ) :

3 ””” c l a s s e de c a l c u l s ” ””

4 def somme( s e l f , a rgs = [ ] )

5 r e s u l t a t = 0

6 for arg in args :

7 r e s u l t a t += arg

8 return r e s u l t a t

9 #−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−10 class Af f i cheu r ( ) :

11 ””” c l a s s e de g e s t i o n de l ' i n t e r f a c e ”””

12 def i n i t ( s e l f ) :

13 s e l f . c a l c u l a t e u r = Calcu la teur ( )

14

15 def somme( s e l f , a rgs = [ ] ) :

16 r e s u l t a t = s e l f . c a l c u l a t e u r . somme( args )

17 print ' l e r e s u l t a t e s t %d ' % r e s u l t a t

Cedric Buche (ENIB) POO 28 janvier 2014 102 / 137

Page 129: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Collaborations entre objets (1 UC) Relation multiple

Association simple

Un objet peut faire appel aux competences d’un autre objet

Objet

flic Wiggum

arreter−−−−−→

Objet homer mobile

Cedric Buche (ENIB) POO 28 janvier 2014 103 / 137

Page 130: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Collaborations entre objets (1 UC) Relation multiple

Association simple

Un objet peut faire appel aux competences d’un autre objet

Objet

flic Wiggum

arreter−−−−−→

Objet homer mobile

Cedric Buche (ENIB) POO 28 janvier 2014 103 / 137

Page 131: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Collaborations entre objets (1 UC) Relation multiple

Comportement ... En pratique

1 #### d e f i n i t i o n c l a s s e ######

2 class F l i c :

3 def i n i t ( s e l f ) :

4 s e l f . nom

5

6 def donnerOrdreStop ( s e l f , v eh i cu l e ) : ## i n s t a n c e de V o i t u r e

7 print ” a r r e t e t o i ! ! ”

8 veh i cu l e . a r r e t e r ( )

9

10 ### Ob j e t #####

11 homer mobile = Voiture ( )

12 f l ic Wiggum = F l i c ( )

13 f l ic Wiggum . donnerOrdreStop ( homer mobile )

Cedric Buche (ENIB) POO 28 janvier 2014 104 / 137

Page 132: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Collaborations entre objets (1 UC) Destruction dans le cadre d’association

En pratique ...

1 class Roue :

2 def i n i t ( s e l f ) :

3 print ”Me v o i c i ! ”

4

5 def d e l ( s e l f ) :

6 print ”Je meurs ! ”

7

8

9 class Voiture :

10 def i n i t ( s e l f ) :

11 s e l f . roue1 = Roue ( )

12 s e l f . roue2 = Roue ( )

13 s e l f . roue3 = Roue ( )

14 s e l f . roue4 = Roue ( )

15

16 def d e l ( s e l f ) :

17 print ” I 'm dying ! ”

18 de l s e l f . roue1

19 de l s e l f . roue2

20 de l s e l f . roue3

21 de l s e l f . roue4

Cedric Buche (ENIB) POO 28 janvier 2014 105 / 137

Page 133: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Collaborations entre objets (1 UC) Destruction dans le cadre d’association

En pratique ...

1 class Humain :

2 def i n i t ( s e l f , nom ) :

3 s e l f . nom = nom

4

5 class Roue :

6 def i n i t ( s e l f ) :

7 print ”Me v o i c i ! ”

8

9 def d e l ( s e l f ) :

10 print ”Je meurs ! ”

11

12 class Voiture :

13 def i n i t ( s e l f , p ropr io ) :

14 s e l f . r oue1 = Roue ( )

15 s e l f . r oue2 = Roue ( )

16 s e l f . r oue3 = Roue ( )

17 s e l f . r oue4 = Roue ( )

18 s e l f . conducteur = propr io ( ”” )

19

20 def d e l ( s e l f ) :

21 print ” I 'm dying ! ”

22 de l s e l f . r oue1

23 de l s e l f . r oue2

24 de l s e l f . r oue3

25 de l s e l f . r oue4

Cedric Buche (ENIB) POO 28 janvier 2014 106 / 137

Page 134: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin

Plan de la presentation

1 Justification du modele objet (1 UC)

2 Concepts fondateurs (1 UC)

3 Encapsulation (1 UC)

4 Hierarchie (1 UC)

5 Collaborations entre objets (1 UC)

6 Pour aller plus loin

Cedric Buche (ENIB) POO 28 janvier 2014 107 / 137

Page 135: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin

Cours 5 - Programmation objet avancee

Objectifs

Abstraction

Classification

Modularite

Typage

Simultaneite

Persistance

Cedric Buche (ENIB) POO 28 janvier 2014 108 / 137

Page 136: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Abstraction

L’abstraction se concentre sur les caracteristiques essentielles d’un

objet, selon le point de vue de l’observateur [Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 109 / 137

Page 137: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Abstraction

Abstraction

Un service peut etre declare sans qu’une methode y soit associee :service abstrait

La methode associee au service est definie dans une ou plusieursclasses derivees

On ne peut pas instancier d’objets d’une classe possedant unservice abstrait : classe abstraite

En python, attention, on peut instancier uneclasse abstraite

Cedric Buche (ENIB) POO 28 janvier 2014 110 / 137

Page 138: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Abstraction

En pratique ...

1

2 class AbstractClass :

3

4 . . .

5

6 # Fo r c e l a c l a s s e f i l l e a d e f i n i r c e t t e methode

7 def getValue ( s e l f ) :

8 r a i s e NotImplementedError ( )

9

10 # methode commune

11 def printOut ( s e l f ) :

12 print s e l f . getValue ( ) ;

Cedric Buche (ENIB) POO 28 janvier 2014 111 / 137

Page 139: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Abstraction

En pratique ...

1 class ConcreteClass1 ( AbstractClass ) :

2

3 . . .

4

5 def getValue ( s e l f ) :

6 return ” ConcreteClass1 ”

7

8 class ConcreteClass2 ( AbstractClass ) :

9

10 . . .

11

12 def getValue ( s e l f ) :

13 return ” ConcreteClass2 ”

14

15 #### Programme p r i n c i p a l #####

16 c l a s s 1 = ConcreteClass1 ( )

17 c l a s s 1 . printOut ( )

18

19 c l a s s 2 = ConcreteClass2 ( )

20 c l a s s 2 . printOut ( )

Cedric Buche (ENIB) POO 28 janvier 2014 112 / 137

Page 140: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Abstraction

Les classes et les objets doivent etre au juste niveau d’abstraction : ni

trop haut ni trop bas [Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 113 / 137

Page 141: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Classification

La classification est le moyen par lequel nous ordonnons nos

connaissances [Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 114 / 137

Page 142: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Classification

Des obervateurs differents classent le meme objet de differentes facons

[Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 115 / 137

Page 143: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Classification

Identification des mecanismes

Les mecanismes sont le moyen par lequel les objets collaborent pour

procurer un certain comportement de plus haut niveau [Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 116 / 137

Page 144: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Modularite

La modularite regroupe les entites en unites discretes [Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 117 / 137

Page 145: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Modularite

En pratique ...

Paquet en python

repertoire avec un fichier init .py qui definit les modules qu’ilcontient (exemple : /usr/lib/python/xml/)

from paquetage

Cedric Buche (ENIB) POO 28 janvier 2014 118 / 137

Page 146: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Modularite

En pratique ...

Module en python

un fichier regroupant variables, classes et fonctions

extension ”.py”

from paquetage import Module

attention la liste path de sys

sys.path.append(Module)

Cedric Buche (ENIB) POO 28 janvier 2014 119 / 137

Page 147: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Modularite

En pratique ...

Classe dans un module en python

Une classe

from paquetage import Class

from turtle import Penp1 = Pen()

Cedric Buche (ENIB) POO 28 janvier 2014 120 / 137

Page 148: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Typage

Typage

Chaque objet peut etre type

Le type definit

la syntaxe (comment l’appeler ?)

la semantique (qu’est ce qu’il fait ?)

Cedric Buche (ENIB) POO 28 janvier 2014 121 / 137

Page 149: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Typage

Un typage fort empeche le melange des entites [Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 122 / 137

Page 150: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Typage

En pratique ...

1 def e s tPa i r ( nombre ) :

2 i f not i s i n s t a n c e ( nombre , i n t ) :

3 return None

4 return ( nombre % 2) == 0

En python, isinstance(X,type) permet deverifier le type d’un element

Cedric Buche (ENIB) POO 28 janvier 2014 123 / 137

Page 151: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Simultaneite

La simultaneite permet a des objets differents d’agir en meme temps

[Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 124 / 137

Page 152: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Simultaneite

cycleVie()

cycleVie()

cycleVie()

Ordonnanceur d’activites : class MyTimer

Cedric Buche (ENIB) POO 28 janvier 2014 125 / 137

Page 153: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Simultaneite

En pratique . . .

1 import thread ing

2 import time

3

4 class MyTimer :

5 def i n i t ( s e l f , tempo , t a r g e t s = [ ] ) :

6 s e l f . t a r g e t s = t a r g e t s

7 s e l f . tempo = tempo

8

9 def s t a r t ( s e l f ) :

10 s e l f . t ime r = thread ing . Timer ( s e l f . tempo , s e l f . run )

11 s e l f . t ime r . s t a r t ( )

12

13 def stop ( s e l f ) :

14 s e l f . t ime r . cance l ( )

15

16 def run ( s e l f ) :

17 for i in s e l f . t a r g e t s :

18 i . cyc l eV ie ( )

Cedric Buche (ENIB) POO 28 janvier 2014 126 / 137

Page 154: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Simultaneite

En pratique . . .

1 ################################

2 # Programme p r i n c i p a l #

3 ################################

4

5 bots . append ( Animat2D ( ) )

6 bots . append ( Animat2D ( ) )

7

8 a = MyTimer (1 , bots )

9 a . s t a r t ( )

Cedric Buche (ENIB) POO 28 janvier 2014 127 / 137

Page 155: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Persistance

La persistance preserve l’etat et la classe d’un objet a travers le temps

et l’espace [Booch, 1992]

Cedric Buche (ENIB) POO 28 janvier 2014 128 / 137

Page 156: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Persistance

Persistance par serialisation

Sauvegarde de l’etat d’un objet

sauvegarder la valeur des attributs de chaque objet

a partir de ces valeurs, on peut reconstruire l’objet

En python, dict permet de recuperer les va-leurs des attributs d’un objet

Cedric Buche (ENIB) POO 28 janvier 2014 129 / 137

Page 157: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Persistance

En pratique ...

1 class Dummy:

2 def i n i t ( s e l f ) :

3 s e l f . member1=”abcd”

4 s e l f . member2=0

5 s e l f . member3=[ ' a ' , ' e ' , ' i ' , ' o ' , 'u ' ]

6

7

8 d1 = Dummy()

9 print d1 . d i c t

10

11

12

13 ######### Te s t ##############

14 >>> python te s tD i c . py

15 { 'member1 ' : ' abcd ' , 'member3 ' : [ ' a ' , ' e ' , ' i ' , ' o ' , 'u ' ] , 'member2 ' : 0}

Cedric Buche (ENIB) POO 28 janvier 2014 130 / 137

Page 158: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Persistance

En pratique ...

Persistance de toutes les instances de classes derivees d’une classe mere.

1 import she lve

2 import a t e x i t

3 import sys

4

5 donnees = None

6 i n s t anc e s = [ ]

7

8 def c h a r g e o b j e t s ( ) :

9 print ' chargement . . . '

10 g l oba l donnees

11 donnees = she lve . open ( ' ob j e t s . bin ' )

12

13 def sauvegarde ( ) :

14 print ' sauvegarde . . . '

15 g l oba l donnees

16 for i n s tance in i n s t anc e s :

17 donnees [ i n s tance . get Id ( ) ] = in s tance . d i c t

18 i f donnees i s not None :

19 donnees . c l o s e ( )

Cedric Buche (ENIB) POO 28 janvier 2014 131 / 137

Page 159: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Persistance

En pratique ...

1 # ch a r g em e n t d e s o b j e t s

2 c h a r g e o b j e t s ( )

3

4 # s a u v e g a r d e s e r a a p p e l e e a l a f e r m e t u r e du programme

5 a t e x i t . r e g i s t e r ( sauvegarde )

Cedric Buche (ENIB) POO 28 janvier 2014 132 / 137

Page 160: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Persistance

En pratique ...

1 class P e r s i s t e n t :

2

3 def i n i t ( s e l f , id ) :

4 g l oba l donnees

5 i f id in donnees :

6 s e l f . d i c t = donnees [ id ]

7 else :

8 s e l f . i d = id

9 i n s t anc e s . append ( s e l f )

10

11 def get Id ( s e l f ) :

12 return s e l f . i d

13

14

15 class MaClasse ( P e r s i s t e n t ) :

16

17 def i n i t ( s e l f , id , datas = None ) :

18 P e r s i s t e n t . i n i t ( s e l f , id )

19 i f datas i s not None :

20 s e l f . datas = datas

Cedric Buche (ENIB) POO 28 janvier 2014 133 / 137

Page 161: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Persistance

En pratique ...

Utilisation

1

2 # programme p r i n c i p a l

3 in s t ance de = MaClasse ( ' 1 ' )

4 while True :

5 try :

6 i f hasa t t r ( in s tance de , ' datas ' ) :

7 i n s t ance de . datas = raw input ( ' va l eur ( a c t u e l l e :%s ) : ' % ins tance de . datas )

8 else :

9 i n s t ance de . datas = raw input ( ' nouve l l e va l eur : ' )

10

11 except KeyboardInterrupt : # pa r e x emp l e ” C o n t r o l−C”

12 print ' f i n '

13 sys . e x i t (0 )

Cedric Buche (ENIB) POO 28 janvier 2014 134 / 137

Page 162: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Pour aller plus loin Persistance

En pratique ...

Execution

1 >>> python t e s t P e r s i s t a n c e . py

2 chargement . . .

3 nouve l l e va l eur : homer

4 va l eur ( a c t u e l l e : homer ) : f i n

5 sauvegarde . . .

6

7 >>> python t e s t P e r s i s t a n c e . py

8 chargement . . .

9 va l eur ( a c t u e l l e : homer ) : bart

10 va l eur ( a c t u e l l e : bart ) : f i n

11 sauvegarde . . .

12

13

14 >>> python t e s t P e r s i s t a n c e . py

15 chargement . . .

16 va l eur ( a c t u e l l e : bart ) : l i s a

17 va l eur ( a c t u e l l e : l i s a ) : f i n

18 sauvegarde . . .

Cedric Buche (ENIB) POO 28 janvier 2014 135 / 137

Page 163: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Correction : GAIA

References

Booch, G. (1992).

Conception orientee objets et applications.

Addison-Wesley.

Brooks, F. (1987).

No silver bullet - essence and accidents of software engineering.

IEEE Computer, 20(4) :10–19.

Peter, L. (1986).

The peter pyramid.

New York, NY :William Morrow.

Cedric Buche (ENIB) POO 28 janvier 2014 136 / 137

Page 164: Informatique S4-POO Programmation Orient ee Objetbuche/data/POO_2014/pooSlide.pdf · C edric Buche (ENIB) POO 28 janvier 2014 12 / 137. Justi cation du mod ele objet (1 UC) Cours

Correction : GAIA

Informatique S4

Programmation Orientee Objet— Concepts —

Cedric Buche

[email protected] www.enib.fr/˜buche

Ecole Nationale d’Ingenieurs de Brest (ENIB)

28 janvier 2014

Cedric Buche (ENIB) POO 28 janvier 2014 137 / 137