Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers...

85
Conception orientée-Objets avec UML Rémi Bastide IRIT – CUFR J.F. Champollion http://ihcs.irit.fr/bastide [email protected]

Transcript of Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers...

Page 1: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Conception orientée-Objets avec UML

Rémi BastideIRIT – CUFR J.F. Champollion

http://ihcs.irit.fr/[email protected]

Page 2: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

2

Plan Présentation d’UML COO avec UML

Diagrammes de classe Diagrammes d'objets Diagrammes d'interaction

Conception par Objets Méthode des CRC Cards Transition vers UML Mapping UML ►Java

Page 3: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

3

Historique d’UML Fin des années 80 : compétition des méthodes

d’analyse et de conception OO Booch : particulièrement adaptée au design et à

l’implémentation OOSE (Jacobson) : expression des besoins OMT-2 (Rumbaugh) : analyse et applications

orientées-données 1994 : Rumbaugh rejoint Booch chez Rational 1995 : Jacobson rejoint Rational 14 novembre 1997 : UML adopté par l’OMG

Page 4: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

4

Qu’est-ce qu’UML ? « UML est un langage pour visualiser, spécifier,

concevoir et documenter les artefacts d’un système à base logicielle » Langage : lexique (graphique), syntaxe

(diagrammes), sémantique Visualiser : représentation graphique Spécification : précis, complet, non-ambigu Construction : translation vers des langages de

programmation Documentation : des besoins aux tests

Page 5: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

5

Le Langage

langage = lexique + syntaxe + sémantique Lexique : les mots du dictionnaire

Dans UML : lexique graphique (symboles) syntaxe = Règles par lesquelles les éléments du

lexique (e.g., mots) sont assemblées en expressions (e.g., phrases, clauses)

sémantique = Règles par lesquelles on donne un sens aux expressions syntaxiques

UML Notation Guide définit la syntaxe graphique d'UML

UML Semantics définit la sémantique d'UML

Page 6: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

6

Les briques de base de l’UML Des choses…

Structurelles Classe, Interfaces, Collaborations, Use Cases…

Comportementales Messages et machines à états

Des relations entre les choses Dépendances, Associations, Généralisation,

Réalisation Des diagrammes

Page 7: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

7

Les diagrammes de l’UML Diagramme de Classe Diagramme d’Objets Diagramme Use Case Diagrammes d’interactions

Diagramme de Séquence Diagramme de Collaboration

StateCharts Diagramme d’Activité Diagrammes de Composants Diagramme de Déploiement

isomorphes

Page 8: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

8

UML par lui-même

© Chuck Suscheck 2000, communication personnelle

C o l l a b o r a t i o n D i a g r a m

D e p l o y m e n t D i a g r a m

U s e C a s e R e a l i z a t i o n

C o m p o n e n t D i a g r a m

S e q u e n c e D i a g r a m

U s e C a s e D i a g r a m

A c t i v i t y D i a g r a m

O b j e c t D i a g r a m

C l a s s D i a g r a mR e q u i r e m e n t

C o m p o n e n t

S t a t e C h a r t

U s e C a s e

O b j e c t

C l a s s

1

0 . . *

I n s t a n c e o f

S u p p o r t s

M i r r o r s

S n a p s h o t

B e h a v i o r s p e c i f i e d b y

B e h a v i o r s p e c i f i e d b y

1 . . *

1 . . *

M o d e l e d B y

B e h a v i o r s p e c i f i e d b y

S h o w s b e h a v i o r f o r

B e h a v i o r s p e c i f i e d b y

1

1

R e a l i z e d b y

D e p l o y e d u p o n

Page 9: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

9

Fonction des diagrammes Diagrammes prescriptifs : décrivent le système

tel qu’il doit être ou se comporter à tout moment Classe, StateCharts, Use Cases, Activités,

Composants, Déploiement Diagrammes descriptifs : illustrent un état ou un

comportement possible et typique du système Objet, Séquence, Collaboration

Page 10: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

10

Modèle structurel

Une vue d'un système qui met l'accent sur la structure des objets, avec leurs classificateurs, leurs relations, leurs attributs et leurs opérations

Page 11: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

11

Elément Description Syntaxe

classe Description d’un ensemble d’objetsqui ont même attributs, opérations,méthodes, relations et sémantique.

interface Ensemble nommé d’opérations quicaractérisent le comportement d’unélément.

composant Partie physique et remplaçabled’un système qui encapsule uneimplémentation et fournit laréalisation d’un ensembled’interfaces.

Nœud Objet physique qui représente uneressource de calcul

«interface»

Éléments de modélisation structurelle

Page 12: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

12

Elément Description Syntaxe

contrainte¹ Condition ou restrictionsémantique. {constraint}

¹ Mécanisme d’extension.

Éléments de modélisation structurelle (suite)

Page 13: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

13

Modélisation structurelle: Relations

Page 14: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

14

Relation Description Syntaxe

réalisation Relation entre spécification etimplémentation.

Modélisation structurelle: Relations (suite)

Page 15: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

15

Diagrammes structurels Montrent la structure statique d'un modèle

Les entités qui existent (e.g., classes, interfaces, composants, nœuds) Leur structure interne Leurs relations avec d'autres entités

Ne montrent pas Des informations temporelles ou dynamiques

Catégories Diagrammes structurels statiques

diagramme de classe diagramme d'instances

Diagrammes d'implémentation diagrammes de composants diagrammes de déploiement

Page 16: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

16

Diagrammes de classes

Les diagrammes de classes représentent un ensemble de classes, d'interfaces et de collaborations, ainsi que leurs relations. Ce sont les diagrammes les plus fréquents dans la modélisation des systèmes à objets. Ils présentent la vue de conception statique d'un système.

Page 17: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

17

- 17 -

Les classes La classe est une description

abstraite d’un ensemble d’objets

La classe peut être vue comme la factorisation des éléments communs à un ensemble d’objets

La classe décrit le domaine de définition d’un ensemble d’objets

Windowsize: Sizevisibility: boolean

display()hide()

Nom de la classe

Attributs

Opérations

Page 18: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

18

Définition d'une classe Description d'un ensemble d'objets qui ont

même structure et même sémantique Nom Attributs Opérations Responsabilités

Exprimées en langage naturel

Page 19: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

19

- 19 -

parametre

classe parametrable

une classe une autre classe

nom de l’association

nom de la classe association

attributsoperations

une classe une autre classe

nom de l’association

/ association dérivée

rôle 1 rôle 2

Diagrammes de classe.

nom de la classe

attributsnom_attr : type = valeur initialeopérationsnom_op (arg_list):type

nom de la classe

- variable privée+ variable publique# variable protégée- opération privée+ opération publique# opération protégée

Page 20: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

20

Réprésentation des Classes

Fig. 3-17, UML Notation Guide

Window

display ()

size: Areavisibility: Boolean

hide ()

WindowWindow

+default-size: Rectangle#maximum-size: Rectangle

+create ()

+display ()

+size: Area = (100,100)#visibility: Boolean = invisible

+hide ()

-xptr: XWindow*

-attachXWindow(xwin:Xwindow*)

{abstract,author=Joe,status=tested}

P e r s o n n e

- N a i s s a n c e : D a t e

- N o m : S t r i n g

- P r e n o m : S t r i n g

+ a g e ( ) : i n t

Page 21: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

21

Visibilité des attributs / opérations

Public (+) Visible et utilisable par toute autre classe (utilisation

très limitée pour les attributs) Protected (#)

Visible et utilisable par toute spécialisation de la classe

Private (-) Visible uniquement par la classe elle-même

Sinon Même sémantique que dans java (package)

Page 22: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

22

Opérations (méthodes) Implémentation d'un service offert par

l'objet, correspondant à une partie de ses responsabilités Accesseurs : une opération qui renvoie une

information sur l'état de l'objet (fonction) Modifieur : une opération qui modifie l' état

de l'objet (procédure) Constructeur : une opération de la classe qui

permet d'initialiser une nouvelle instance Les propriétés de classe sont soulignées

mot-clé “static” en java

Page 23: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

23

Attributs/opérations: Syntaxe Attributs :

nomAttribut : type = valeur initiale exemples :

prenom : String size : int = 100

Opérations : nomOpération(param1 : type1, param2 : type2...):typeResultat

exemples getName() : String setName(newName : String)

Page 24: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

24

Utilisation des attributs Utilisation plus limitée que dans une

modélisation de type entité-association La définition d'un attribut contraint l'implémentation

future de la classe Préférer :

des accesseurs / modifieurs (getX, setX) des associations (plus riche sémantiquement) A réserver à des types primitifs (entier, réel) ou

des « structures de données » simples (String, Date)

Ne pas utiliser des structures de type tableau, liste, … Sauf exception

Conception « centrée sur les responsabilités » plutôt que « centrée sur la structure »

Page 25: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

25

Interfaces

Spécification des opérations visibles Classes, paquetage, composants

Contrat sans implémentation Pas d’attributs ni d’associations Peut être cible d’une association

monodirectionnelle

Page 26: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

26

Associations Expriment une relation permanente entre

instances de 2 ou plusieurs classes Nom de l'association Sens de lecture Cardinalités Rôles Visibilité des rôles Navigabilité

Page 27: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

27

Associations

Représentant

C a r d i n a l i t é s

R ô l e s

Client- i n t e r l o c u t e u r

1

- C l i e n t è l e

1 . . *

V i s i t e

Page 28: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

28

UML / Entité-Association

Fichier

nom : String1 1 ►►Contient *Contient *monRépertoire mesFichiersmonRépertoire mesFichiers

Fichier

nom : String

Répertoire

Contenir0,n

contient

1,1

est contenu dans

Répertoire

Page 29: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

29

- 29 -

Nommage des associations

Indication du sens de lectureUniversité EtudiantHéberge

Université EtudiantEtudie dans

Page 30: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Navigabilité des associations

Par défaut, la navigabilité est bidirectionnelleA partir d'un objet d'une des 2 classes, on peut

atteindre les objets de l'autre classe

On peut restreindre la navigabilité en ajoutant un flèche à un extrémité Navigation uni-directionnelle

Page 31: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

31

Navigabilité

étant donnée une association non décorée entre deux classes, on peut naviguer d'un type d'objet vers un autre type d'objet.

par défaut une association est navigable dans les deux sens.

une indication de navigabilité suggère en général qu'à partir d'un objet à une extrémité on peut directement et facilement atteindre l'un des objets à l'autre extrémité.

lors d'une mise en œuvre programmée, ceci peut suggérer par exemple qu'un objet source mémorise une référence directe aux objets cible.

Exemple : étant donné un utilisateur,

on désire pouvoir accéder à ses mots de passe

étant donné un mot de passe, on ne souhaite pas pouvoir accéder à l'utilisateur correspondant

Page 32: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Association directionnelle

Livre Cours

Association directionnelle

Un cours connaît les livres qui lui sont nécessaires mais pas le contraire.

Si la flèche est absente, la navigation est bi-directionnelle

Page 33: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Directionalité

Un « détail d'implémentation » qui n'est pas toujours nécessaire dans les phases initiales de conception.

Impact important sur les techniques d'implémentation et sur les performances.

Page 34: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

34

- 34 -

Nommage des rôles Le rôle décrit une extrémité d’une

association

➔ Une personne peut être considérée comme étudiant ou enseignant du point de vue de l'université

Université Personne+Etudiant

+Employeur +Enseignant

Page 35: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Noms des rôles

Rôle : identifie l'extrémité d'une association

Les noms de rôles sont obligatoires pour les associations réflexives

NameAddress

CompanyWorks for

NameInsurance no.Address

Person

employer employee

NameInsurance no.Address

PersonManager

Supervises Salesperson

Page 36: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

36

Multiplicité des rôles

1 Un et un seul0..1 Zéro ou unM .. N De M à N (entiers naturels)* Un nombre quelconque0 .. * Un nombre quelconque1 .. * un ou plusieurs

Page 37: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

37

Visibilité des rôles

Public Protégé Privé

A

B

+Rolepublic

*

-Role privé

*

C

*

#Role protégé

*

Page 38: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Les rôles définissent des responsabilités

Connaissant une personne, on doit pouvoir retrouver ses employeurs Il doit y avoir une méthode publique dans

personne qui renvoie une collection d'instances de Company

exemple java :public Collection<Company> getEmployers();

NameAddress

Company◄Works for

NameInsurance no.Address

Person+employer

*

-employee

1..*

Page 39: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

39

Les classes-associations

L'association est porteuse de propriétés et/ou d'opérations

+op1()+op2()

-a1-a2

C

* *A B

D

* *

Page 40: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

40

Associations

Person

Manages

JobCompany

boss

worker

employeeemployer

1..∗

0..1

Jobsalary

Page 41: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

41

Associations ternairesHomme

Maire

Femme

Mariage

Le marié La mariée

Autorité légale

1 1

1

Page 42: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

42

Association qualifiée

Une association qualifiée met en relation deux classes sur la base d'une clef.

La technique associée de mise en œuvre est souvent un tableau associatif ou un dictionnaire.

Une personne peut être associée à plusieurs banques.Étant donnés une banque et un numéro de compte, il y a au plus une personne ayant ce numéro de compte à cette banque.

Répertoire

Fichier

nom : Stringsize : int1 1 ►►Contient *Contient *

Répertoire 1 1 ►►Contient 0..1Contient 0..1nom : String

Fichier

size : int

Page 43: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

43

- 43 -

Agrégation et composition

Connexions sémantiques bidirectionnelles antisymétriques

Forme de relation qui exprime un couplage plus fort entre les instances

Représentation des relations de type :➔ maître et esclaves➔ tout et parties➔ composé et composant.

Page 44: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

UML Class Diagrams 44

Agrégation : exemple

« le tout »

« la partie »

Car Door House1..*2..*

Page 45: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

UML Class Diagrams 45

Agrégation (suite)

Quand utiliser l'agrégation ? Si on utilise « est une partie de » dans la description

en langage naturel La porte fait partie de la voiture

Si des opérations sur « le tout » sont automatiquement appliquées à « la partie » Si on déplace la voiture, on déplace la porte

Si des propriétés sont automatiquement propagées du « tout » à « la partie » La voiture est bleue, donc sa porte est bleue.

Si il y a une asymétrie intrinsèque dans la relation La porte est une partie de la voiture, la voiture n'est pas une

partie de la porte

Page 46: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Composition

Une forme plus forte de l'agrégation Le « tout » est seul possesseur de « la partie ».

La partie appartient à un seul tout Le cycle de vie de la partie dépend de celui du tout

Le composé gère la création et la destruction de ses composants

Circle Point

3..*

1

PolygonPoint

Circle

Page 47: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

47

Composition = Attributs

Fig. 3-36, UML Notation Guide

Window

scrollbar [2]: Slidertitle: Headerbody: Panel

Window

scrollbar title body

Header Panel

2 1 1

Slider

111

« Une fenêtre est composée d’un titre, d’un corps et de 2 scrollbars »

Page 48: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

48

Agrégation / Composition Polygon►Point : Agrégation

On peut rajouter des points pendant la durée de vie du Polygone

Polygon►GraphicData : Composition GraphicData est créé ou détruit en même temps que le

polygone

Page 49: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

49

Exemple : graphe non orienté

Page 50: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

50

Exemple : graphe orienté

Page 51: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

51

Exemple

Page 52: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

52

Relation de Généralisation Relation de spécialisation (est-un, is-a-

kind-of) entre classes La classe spécialisée (sous-classe) hérite des

méthodes des attributs et des relations de la classe-générale (super-classe)

Elle peut ajouter des attributs / méthodes Elle peut redéfinir le comportement des méthodes

(mais pas les attributs !)SuperClasse

SousClasse

Page 53: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

53

Hiérarchies de généralisation

Arborescences de classes d’abstraction croissante

Sous-classe

Super-classe

Classe plusgénérale

Classe plusspécialisée

Page 54: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

54

Principe de substituabilité

Barbara Liskov, Jeannette Wing (1993) Si A est une sous-classe de P, les objets de

type P dans un programme peuvent être remplacés par des objets de type A sans remettre en cause le bon fonctionnement du programme

➔ Si je confie une tâche à un Programmeur, je peux le remplacer par un Analyste-programmeur et la tâche sera aussi bien réalisée (voire mieux !)

➔ Un AnalysteProgrammeurest-un Programmeur (le contraire n'est pas vrai !)

Programmeur

AnalysteProgrammeur

(Prof. Barbara Liskov, M.I.T.)

Page 55: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

55

Héritage du comportement

Thermostat

DigitalThermostat AnalogThermostat

Super-classe

Sous-classe

Anything a superclass can do its subclasses can do.These are known as “is-a” relationships(a DigitalThermostat is a Thermostat)

Page 56: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

56

Exemple

Page 57: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

57

Généralisation : notation

Shape

SplineEllipsePolygon

Shape

SplineEllipsePolygon

Shared Target Style

Separate Target Style

. . .

. . .

Fig. 3-38, UML Notation Guide

Page 58: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

58

Hiérarchies d'héritage

Thermostat

DigitalThermostat AnalogThermostat

Super-classe

Sous-classe

Inheritance allows us to organize classes into hierarchies based on theirinheritance relationships.Inheritance is transitive – subclasses inherit state and behavior from superclass.

ProgrammableThermostatSous-sous-classe

Page 59: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

59

Formes d'héritage Héritage de spécification

La super-classe spécifie un comportement qui sera implémenté dans les sous-classes, mais pas dans la super-classe. Ca permet de garantir que toutes les sous-classes implémentent un comportement similaire

Héritage de spécialisation La sous-classe est une forme spécialisée de la super-classe, mais respecte ses

spécification

Héritage d'extension La sous-classe ajoute de nouvelles fonctionnalités à celles héritées de la super-

classe

Héritage de limitation La sous-classe restreint l'usage d'un comportement hérité de la super-classe

Héritage de combinaison La sous-classe hérite des caractéristiques de plusieurs super-classes (héritage

multiple)

Page 60: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

60

Héritage de spécification

ClockCurrent Time

SetCurrentTimeGetCurrentTime

Implementationprovided bysubclass

La super-classe spécifie des comportements requis (méthodes) sans les implémenter. Les sous-classes héritent d'implémentations vides, et doivent fournir une implémentation adéquate. La spécification peut être une classe abstraite ou une interface.

TimePiece

SetCurrentTimeGetCurrentTime

Specificationonly, not implemented.

Page 61: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

61

Héritage de spécialisationClock

Current TimeSetCurrentTimeGetCurrentTimeDisplayTime

Implémentation fournie parla super-classe, héritée parles sous-classes

DigitalClock

DisplayTime

AnalogClock

DisplayTime

Uniquement la spécificationpas d'implémentation►classe abstraite

L'implémentation de cette opération est fournie parchacune des sous-classe.L'implémentation des autres opérations est héritée

Page 62: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

62

Héritage d'extension

AlarmClock

setAlarmTimegetAlarmTime

Nouvelles méthodes ajoutées, les autres méthodes sont héritées

L'héritage permet de rajouter des nouvelles méthodes dans la sous-classe.

ClockcurrentTime : TimesetCurrentTimegetCurrentTime

Méthodesimplémentées

Page 63: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

63

Example: Limitation

Autruche

chante()vole()court()

Interdire l'utilisation de la méthode héritée.

L'héritage peut être utilisé pour limiter l'utilisation de méthodes héritées, par exemple en levant une exception UnsupportedMethodException

Oiseau

chante()vole()

Spécificationet implémentation

Principe de substituabilité de Liskov ?

Page 64: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

64

Héritage multiple

Clock

Radio DigitalClock

Une classe hérite des caractéristiques de deux ou plusieurs classes différentes

AlarmClockRadio

Page 65: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

65

Héritage multiple

Fig. 3-39, UML Notation Guide

Vehicle

WindPoweredVehicle

MotorPoweredVehicle

LandVehicle

WaterVehicle

venuevenuepower

power

SailboatTruck

{overlapping} {overlapping}

Page 66: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

66

Dépendance Une relation transitoire entre classes, qui

n'est pas représentable par association ou composition Un objet sert à créer des objets d'une autre classe

(factory object) Un objet utilise un autre sans qu'il fasse partie de ses

attributs ou associations Il peut recevoir un objet en tant que paramètre ou

valeur de retour d'une méthode Une classe dépend d'une autre si elle ne

peut pas être réutilisée sans réutiliser également l'autre

Page 67: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

67

Dépendance : exemple Le magasin stocke des tables Le menuisier fabrique des tables quand le magasin le lui demande,

mais ne les stocke par (il ne conserve pas de relation avec les tables qu'il a fabriquées)

On ne peut pas utiliser la classe Menuisier sans disposer également de la classe Table➔ Il y a une dépendance entre Menuisier et Table

Page 68: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Exercice: Donner le diagramme de classes correspondant à la formation ISIS en utilisant les concepts suivants

Salle Bâtiment

Enseignant Départment Diplôme

Cours Major

EmploiDuTemps

Etudiant

Université

Rajouter d'autres classes si nécessaire, identifier les attributs associations, associations qualifiées, composition, agrégation, généralisation,cardinalités, rôles

Page 69: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Diagrammes d'objets

Page 70: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

70

Diagrammes d'objets

Les diagrammes d’objets représentent un ensemble d’objets et leurs liens. Ce sont des vues statiques des instances des éléments qui apparaissent dans les diagrammes de classes. Ils présentent la vue de conception d'un système, exactement comme les diagrammes de classes, mais à partir de cas réels ou de prototypes.

Un diagramme d’objet est une instance d’une diagramme de classes.

Page 71: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

71

Représentation graphique

Le nom d’un objet est souligné Nom : Classe Nom :Classe

Page 72: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Suite de l'exercice Créer un diagramme d'objets représentant les

informations suivantes : ISIS est un diplôme du département d'ingénierie

du CUFR Jean-François Champollion En ISIS 1° année, il y a un cours « Réseaux » et

un cours «UML» Georges Untel est major de la 1° année ISIS en

2007-08 Le cours « UML » du lundi 17 mars 2008

(8h15-10h15) est assuré par Rémi Bastide en salle ISIS-1 du bâtiment GCE de l'Université Paul Sabatier

Page 73: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Objets et classes

TaskstartDate : Date = 1.1.98endDate : Date = 1.1.98

setStartDate (d : Date = default)setEndDate (d : Date = default)

Assignment 1: TaskstartDate = 1.2.98endDate = 23.2.98

Assignment 1: TaskstartDate = 1.2.98endDate = 23.2.98

Assignment 1: TaskstartDate = 1.2.98endDate = 23.2.98

•Les objets montrent•Le nom de l'objet•Le nom de la classe•La valeur des attributs

Page 74: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

74

Diagramme d’objets Cf. diagramme de classes « Composition /

agrégation »

Page 75: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

Example

OrderSalesperson

line2:

Line

CustInfo

line1:

line3:

line2:

line4:

line1:

ace furniture:

order121:

harmon assoc:

order122:

curtisClyde:

Includes

ContainsGenerates

Diagramme d'objets

Diagramme de classes:

Page 76: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

76

3 types de diagrammes avec des objets Diagrammes d’objets (point de vue

statique) Diagrammes d’interaction (point de vue

dynamique) Diagramme de séquence Diagramme de collaboration

Page 77: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

77

Modélisation de la dynamique Modélisation des interactions entre objets

de plusieurs classes Diagrammes d’interaction

Diagramme de séquence Diagramme de collaboration

Modélisation du comportement des objets d’une classe StateCharts

Page 78: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

78

Interactions

Interaction: Un ensemble de communications entre

instances Appel de méthodes Création /Destruction

Partiellement ordonné dans le temps

Page 79: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

79

Montre les interactions entre instances dans un modèle graphe d’instances et de stimuli Instances pré-existantes création et destruction d’instances

Types Diagramme de séquence (point de vue

temporel) Diagramme de collaboration (point de vue

structurel)

Diagrammes d’interaction

Page 80: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

80

Diagrammes d’interaction

x y z

Diagramme de Séquence

a

b

c

Diagramme de Collaboration

x y

z

1.1: a1.2: c

1.1.1: b

Page 81: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

81

Diagramme de Séquence

name : ClassInstance

Ligne de vie

activation

other

stimulus

name (…)

retour

: Class

création

new (…)

destruction

Page 82: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

82

Types de flèches

Flôt de contrôle imbriqué

Flôt de contrôle asynchrone

Retour

Page 83: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

83

Exemples

teller : Order : Article

Flôt imbriqué

getValue

price

getName

appl err handl alarm

Flot asynchrone

unknown

alarm

Page 84: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

84

CRC Cards Classe, Responsabilités, Coopérations

Une manière "légère" (papier/crayon) d'identifier les classes d'un système

Approche informelle, préalable à une formalisation en UML

Conception "centrée sur les responsabilités" plutôt que sur les attributs ou méthodes

Page 85: Conception orientée-Objets avec UML - irit.frRemi.Bastide/Teaching/UML/UML.pdf · Transition vers UML Mapping UML Java. 3 Historique d’UML

85

CRC Cards : exemples