Vous êtes sur la page 1sur 85

Conception oriente-Objets avec UML

Rmi Bastide IRIT CUFR J.F. Champollion http://ihcs.irit.fr/bastide Remi.Bastide@irit.fr

Plan

Prsentation dUML COO avec UML


Diagrammes de classe Diagrammes d'objets Diagrammes d'interaction Mthode des CRC Cards Transition vers UML Mapping UML Java
2

Conception par Objets


Historique dUML

Fin des annes 80 : comptition des mthodes danalyse et de conception OO

Booch : particulirement adapte au design et limplmentation OOSE (Jacobson) : expression des besoins OMT-2 (Rumbaugh) : analyse et applications orientes-donnes

1994 : Rumbaugh rejoint Booch chez Rational 1995 : Jacobson rejoint Rational 14 novembre 1997 : UML adopt par lOMG
3

Quest-ce quUML ?

UML est un langage pour visualiser, spcifier, concevoir et documenter les artefacts dun systme base logicielle

Langage : lexique (graphique), syntaxe (diagrammes), smantique Visualiser : reprsentation graphique Spcification : prcis, complet, non-ambigu Construction : translation vers des langages de programmation Documentation : des besoins aux tests

Le Langage

langage = lexique + syntaxe + smantique


Lexique : les mots du dictionnaire Dans UML : lexique graphique (symboles) syntaxe = Rgles par lesquelles les lments du lexique (e.g., mots) sont assembles en expressions (e.g., phrases, clauses) smantique = Rgles par lesquelles on donne un sens aux expressions syntaxiques

UML Notation Guide dfinit la syntaxe graphique d'UML UML Semantics dfinit la smantique d'UML
5

Les briques de base de lUML

Des choses

Structurelles

Classe, Interfaces, Collaborations, Use Cases Messages et machines tats

Comportementales

Des relations entre les choses

Dpendances, Associations, Gnralisation, Ralisation

Des diagrammes
6

Les diagrammes de lUML


Diagramme de Classe Diagramme dObjets Diagramme Use Case Diagrammes dinteractions


Diagramme de Squence Diagramme de Collaboration

isomorphes

StateCharts Diagramme dActivit Diagrammes de Composants Diagramme de Dploiement


7

UML par lui-mme


C la ss U se C a se D ia g ra m R e q u ire m e n t B e h a v io r s p e c ifie d b y 1 ..* S napshot A c tiv ity D ia g ra m M o d e le d B y S u p p o r ts 1 ..* U se C a se In s ta n c e o f S ta te C h a r t C la ssD ia g ra m 1 B e h a v io r s p e c ifie d b y

O b je c tD ia g r a m 1 R e a liz e d b y 1 U s e C a se R e a liz a tio n B e h a v io r s p e c ifie d b y 0 ..* B e h a v io r s p e c ifie d b y C o lla b o r a tio n D ia g r a m O b je c t

C o m p o n e n tD ia g r a m

Com ponent

D e p lo y e d u p o n

S e q u e n c e D ia g ra m

M ir ro rs

S h o w s b e h a v io r fo r

Chuck Suscheck 2000, D e p communication personnelle lo y m e n tD ia g ra m 8

Fonction des diagrammes

Diagrammes prescriptifs : dcrivent le systme tel quil doit tre ou se comporter tout moment

Classe, StateCharts, Use Cases, Activits, Composants, Dploiement

Diagrammes descriptifs : illustrent un tat ou un comportement possible et typique du systme

Objet, Squence, Collaboration

Modle structurel

Une vue d'un systme qui met l'accent sur la structure des objets, avec leurs classificateurs, leurs relations, leurs attributs et leurs oprations

10

lments de modlisation structurelle


Elment
classe

Description

Syntaxe

Description dun ensemble dobjets qui ont mme attributs, oprations, mthodes, relations et smantique. Ensemble nomm doprations qui interface caractrisent le comportement dun lment. composant Partie physique et remplaable dun systme qui encapsule une implmentation et fournit la ralisation dun ensemble dinterfaces. Objet physique qui reprsente une Nud ressource de calcul

interface

11

lments de modlisation structurelle (suite)

Elment
contrainte

Description
Condition ou restriction smantique.

Syntaxe
{constraint}

Mcanisme dextension.

12

Modlisation structurelle: Relations

13

Modlisation structurelle: Relations


(suite)

Relation
ralisation

Description
Relation entre spcification et implmentation.

Syntaxe

14

Diagrammes structurels

Montrent la structure statique d'un modle


Les entits qui existent (e.g., classes, interfaces, composants, nuds) Leur structure interne Leurs relations avec d'autres entits Des informations temporelles ou dynamiques Diagrammes structurels statiques

Ne montrent pas

Catgories

diagramme de classe diagramme d'instances diagrammes de composants diagrammes de dploiement

Diagrammes d'implmentation

15

Diagrammes de classes

Les diagrammes de classes reprsentent un ensemble de classes, d'interfaces et de collaborations, ainsi que leurs relations. Ce sont les diagrammes les plus frquents dans la modlisation des systmes objets. Ils prsentent la vue de conception statique d'un systme.

16

Les classes

La classe est une description abstraite dun ensemble dobjets La classe peut tre vue comme la factorisation des lments communs un ensemble dobjets La classe dcrit le domaine de dfinition dun ensemble dobjets

Nom de la classe Attributs Oprations

Window
size: Size visibility: boolean display() hide()

17
- 17 -

Dfinition d'une classe

Description d'un ensemble d'objets qui ont mme structure et mme smantique

Nom Attributs Oprations Responsabilits

Exprimes en langage naturel

18

Diagrammes de classe.
nom de la classe attributs nom_attr : type = valeur initiale oprations nom_op (arg_list):type parametre

nom de la classe - variable prive + variable publique # variable protge - opration prive + opration publique # opration protge nom de lassociation une classe nom de la classe association attributs operations

classe parametrable une autre classe

/ association drive rle 1 une classe nom de lassociation rle 2 une autre classe

19
- 19 -

Rprsentation des Classes


Window Window {abstract, author=Joe, status=tested} +size: Area = (100,100) #visibility: Boolean = invisible +default-size: Rectangle #maximum-size: Rectangle -xptr: XW indow* +display () +hide () +create () -attachXW indow(xwin:Xwindow*)

Window size: Area visibility: Boolean display () hide ()

P e rso n n e - N a is s a n c e : D a te - N o m : S tr in g - P r e n o m : S tr in g + a g e () : in t

Fig. 3-17, UML Notation Guide

20

Visibilit des attributs / oprations

Public (+)

Visible et utilisable par toute autre classe (utilisation trs limite pour les attributs) Visible et utilisable par toute spcialisation de la classe Visible uniquement par la classe elle-mme Mme smantique que dans java (package)
21

Protected (#)

Private (-)

Sinon

Oprations (mthodes)

Implmentation d'un service offert par l'objet, correspondant une partie de ses responsabilits

Accesseurs : une opration qui renvoie une information sur l'tat de l'objet (fonction) Modifieur : une opration qui modifie l'tat de l'objet (procdure) Constructeur : une opration de la classe qui permet d'initialiser une nouvelle instance

Les proprits de classe sont soulignes

mot-cl static en java

22

Attributs/oprations: Syntaxe

Attributs :

nomAttribut : type = valeur initiale

exemples :

prenom : String size : int = 100

Oprations :

nomOpration(param1 : type1, param2 : type2...):typeResultat

exemples

getName() : String setName(newName : String)


23

Utilisation des attributs

Utilisation plus limite que dans une modlisation de type entit-association


La dfinition d'un attribut contraint l'implmentation future de la classe Prfrer : des accesseurs / modifieurs (getX, setX) des associations (plus riche smantiquement) A rserver des types primitifs (entier, rel) ou des structures de donnes simples (String, Date) Ne pas utiliser des structures de type tableau, liste, Sauf exception Conception centre sur les responsabilits plutt que centre sur la structure

24

Interfaces

Spcification des oprations visibles

Classes, paquetage, composants Pas dattributs ni dassociations Peut tre cible dune association monodirectionnelle

Contrat sans implmentation


25

Associations

Expriment une relation permanente entre instances de 2 ou plusieurs classes


Nom de l'association Sens de lecture Cardinalits Rles Visibilit des rles Navigabilit
26

Associations
R le s

- in te r lo c u te u r Reprsentant 1

V is ite

- C lie n t le 1 ..*

Client

C a r d in a lit s
27

UML / Entit-Association
Rpertoire 1 Contient monRpertoire * mesFichiers Fichier nom : String

Rpertoire

0,n contient

Contenir

1,1 est contenu dans

Fichier nom : String

28

Nommage des associations

Indication du sens de lecture


Hberge Etu diant

U n iversit

U n iversit

Etudie dans

Etu d ian t

29
- 29 -

Navigabilit des associations

Par dfaut, la navigabilit est bidirectionnelle


A 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 flche un extrmit Navigation uni-directionnelle

Navigabilit

tant donne une association non dcore entre deux classes, on peut naviguer d'un type d'objet vers un autre type d'objet. par dfaut une association est navigable dans les deux sens. une indication de navigabilit suggre en gnral qu' partir d'un objet une extrmit on peut directement et facilement atteindre l'un des objets l'autre extrmit. lors d'une mise en uvre programme, ceci peut suggrer par exemple qu'un objet source mmorise une rfrence directe aux objets cible.

Exemple : tant donn un utilisateur, on dsire pouvoir accder ses mots de passe

tant donn un mot de passe, on ne souhaite pas pouvoir accder l'utilisateur correspondant

31

Association directionnelle

Un cours connat les livres qui lui sont ncessaires mais pas le contraire. Si la flche est absente, la navigation est bidirectionnelle
Livre Cours

Association directionnelle

Directionalit

Un dtail d'implmentation qui n'est pas toujours ncessaire dans les phases initiales de conception. Impact important sur les techniques d'implmentation et sur les performances.

Nommage des rles

Le rle dcrit une extrmit dune association


+Etudiant Universit Personne

+Employeur

+Enseignant

Une personne peut tre considre comme tudiant ou enseignant du point de vue de l'universit
- 34 -

34

Noms des rles

Rle : identifie l'extrmit d'une association


Company Name Address employer Works for employee Person Name Insurance no. Address

Les noms de rles sont obligatoires pour les associations rflexives


Manager
Person Name Insurance no. Address

Supervises

Salesperson

Multiplicit des rles

1 0..1 M .. N * 0 .. * 1 .. *

Un et un seul Zro ou un De M N (entiers naturels) Un nombre quelconque Un nombre quelconque un ou plusieurs


36

Visibilit des rles


Public Protg Priv


A * *

-Role priv * +Rolepublic #Role protg *

37

Les rles dfinissent des responsabilits

Connaissant une personne, on doit pouvoir retrouver ses employeurs

Il doit y avoir une mthode publique dans personne qui renvoie une collection d'instances de Company exemple java :
public Collection<Company> getEmployers();
Company Name Address Person Name Insurance no. Address

+employer Works for *

-employee 1..*

Les classes-associations

L'association est porteuse de proprits et/ou d'oprations


A * * B

C -a1 -a2 +op1() +op2()

D * *

39

Associations
Company

employer

Job

1..
employee

Person

Job

salary
worker

boss
0..1

Manages
40

Associations ternaires
Homme
1 1

Femme

Le mari Mariage

La marie

Autorit lgale
1

Maire

41

Association qualifie

Une association qualifie met en relation deux classes sur la base d'une clef. La technique associe de mise en uvre est souvent un tableau associatif ou un dictionnaire.

Une personne peut tre associe plusieurs banques. tant donns une banque et un numro de compte, il y a au plus une personne ayant ce numro de compte cette banque. Fichier Rpertoire 1 Contient * nom : String size : int Fichier Rpertoire
nom : String

Contient

0..1

size : int

42

Agrgation et composition

Connexions smantiques bidirectionnelles antisymtriques Forme de relation qui exprime un couplage plus fort entre les instances Reprsentation des relations de type :

matre et esclaves tout et parties compos et composant.

43
- 43 -

Agrgation : exemple
Car 2..*

Door la partie

1..*

House

le tout

UML Class Diagrams

44

Agrgation (suite)

Quand utiliser l'agrgation ?

Si on utilise est une partie de dans la description en langage naturel

La porte fait partie de la voiture

Si des oprations sur le tout sont automatiquement appliques la partie

Si on dplace la voiture, on dplace la porte

Si des proprits sont automatiquement propages du tout la partie

La voiture est bleue, donc sa porte est bleue. La porte est une partie de la voiture, la voiture n'est pas une partie de la porte
UML Class Diagrams 45

Si il y a une asymtrie intrinsque dans la relation

Composition

Une forme plus forte de l'agrgation

Le tout est seul possesseur de la partie.

La partie appartient un seul tout Le compos gre la cration et la destruction de ses composants

Le cycle de vie de la partie dpend de celui du tout

Circle Polygon

Point
3..*

Circle

Point

Composition = Attributs
Une fentre est compose dun titre, dun corps et de 2 scrollbars


scrollbar Slider

Window scrollbar [2]: Slider title: Header body: Panel

Window 1 2 1 1 title 1 Header body 1 Panel

Fig. 3-36, UML Notation Guide


47

Agrgation / Composition

PolygonPoint : Agrgation

On peut rajouter des points pendant la dure de vie du Polygone GraphicData est cr ou dtruit en mme temps que le polygone

PolygonGraphicData : Composition

48

Exemple : graphe non orient

49

Exemple : graphe orient

50

Exemple

51

Relation de Gnralisation

Relation de spcialisation (est-un, is-akind-of) entre classes

La classe spcialise (sous-classe) hrite des mthodes des attributs et des relations de la classegnrale (super-classe) Elle peut ajouter des attributs / mthodes Elle peut redfinir le comportement des mthodes (mais pas les attributs !) SuperClasse

SousClasse

52

Hirarchies de gnralisation
Arborescences de classes dabstraction croissante
Super-classe Classe plus gnrale

Sous-classe Classe plus spcialise

53

Principe de substituabilit
Programmeur

Barbara Liskov, Jeannette Wing (1993)


Si A est une sous-classe de P, les objets de type P dans un programme peuvent tre AnalysteProgrammeur remplacs par des objets de type A sans remettre en cause le bon fonctionnement du programme Si je confie une tche un Programmeur, je peux le remplacer par un Analysteprogrammeur et la tche sera aussi bien ralise (voire mieux !) (Prof. Barbara Liskov, M.I.T.) Un AnalysteProgrammeur est-unProgrammeur (le contraire n'est pas 54 vrai !)

Hritage du comportement
Super-classe Thermostat

Sous-classe

DigitalThermostat

AnalogThermostat

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

Exemple

56

Gnralisation : notation
Shape Separate Target Style

Polygon

Ellipse

Spline

. ..

Shape

Fig. 3-38, UML Notation Guide

Shared Target Style

Polygon

Ellipse

Spline

...

57

Hirarchies d'hritage
Super-classe Thermostat

Sous-classe

DigitalThermostat

AnalogThermostat

Sous-sous-classe

ProgrammableThermostat

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

58

Formes d'hritage

Hritage de spcification

La super-classe spcifie un comportement qui sera implment dans les sousclasses, mais pas dans la super-classe. Ca permet de garantir que toutes les sous-classes implmentent un comportement similaire

Hritage de spcialisation

La sous-classe est une forme spcialise de la super-classe, mais respecte ses spcification

Hritage d'extension

La sous-classe ajoute de nouvelles fonctionnalits celles hrites de la superclasse

Hritage de limitation

La sous-classe restreint l'usage d'un comportement hrit de la super-classe

Hritage de combinaison

La sous-classe hrite des caractristiques de plusieurs super-classes (hritage multiple)

59

Hritage de spcification
La super-classe spcifie des comportements requis (mthodes) sans les implmenter. Les sous-classes hritent d'implmentations vides, et doivent fournir une implmentation adquate. La spcification peut tre une classe abstraite ou une interface.

TimePiece Specification only, not implemented. SetCurrentTime GetCurrentTime

Clock Implementation provided by subclass Current Time SetCurrentTime GetCurrentTime

60

Hritage de spcialisation
Clock Implmentation fournie par la super-classe, hrite par les sous-classes Current Time SetCurrentTime GetCurrentTime DisplayTime

Uniquement la spcification pas d'implmentation classe abstraite

AnalogClock DisplayTime

DigitalClock DisplayTime

L'implmentation de cette opration est fournie par chacune des sous-classe. L'implmentation des autres oprations est hrite

61

Hritage d'extension
L'hritage permet de rajouter des nouvelles mthodes dans la sous-classe.

Mthodes implmentes

Clock currentTime : Time setCurrentTime getCurrentTime

AlarmClock Nouvelles mthodes ajoutes, les autres mthodes sont hrites setAlarmTime getAlarmTime
62

Example: Limitation
L'hritage peut tre utilis pour limiter l'utilisation de mthodes hrites, par exemple en levant une exception UnsupportedMethodException Oiseau Spcification et implmentation chante() vole()

Autruche Interdire l'utilisation de la mthode hrite. chante() vole() court()

Principe de substituabilit de 63 Liskov ?

Hritage multiple
Clock

Radio

DigitalClock

AlarmClockRadio

Une classe hrite des caractristiques de deux ou plusieurs classes diffrentes


64

Hritage multiple
Vehicle power {overlapping} WindPowered Vehicle power venue Land Vehicle venue {overlapping} Water Vehicle

MotorPowered Vehicle

Truck

Sailboat
Fig. 3-39, UML Notation Guide

65

Dpendance

Une relation transitoire entre classes, qui n'est pas reprsentable par association ou composition

Un objet sert crer 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 paramtre ou valeur de retour d'une mthode

Une classe dpend d'une autre si elle ne peut pas tre rutilise sans rutiliser galement l'autre

66

Dpendance : 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 fabriques) On ne peut pas utiliser la classe Menuisier sans disposer galement de la classe Table

Il y a une dpendance entre Menuisier et Table

67

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

Salle

Btiment Dpartment Cours

Universit Diplme

Enseignant

Major

EmploiDuTemps Etudiant
Rajouter d'autres classes si ncessaire, identifier les attributs associations, associations qualifies, composition, agrgation, gnralisation, cardinalits, rles

Diagrammes d'objets

Diagrammes d'objets

Les diagrammes dobjets reprsentent un ensemble dobjets et leurs liens. Ce sont des vues statiques des instances des lments qui apparaissent dans les diagrammes de classes. Ils prsentent la vue de conception d'un systme, exactement comme les diagrammes de classes, mais partir de cas rels ou de prototypes. Un diagramme dobjet est une instance dune diagramme de classes.

70

Reprsentation graphique

Le nom dun objet est soulign


Nom : Classe Nom :Classe

71

Suite de l'exercice

Crer un diagramme d'objets reprsentant les informations suivantes :

ISIS est un diplme du dpartement d'ingnierie du CUFR Jean-Franois Champollion En ISIS 1 anne, il y a un cours Rseaux et un cours UML Georges Untel est major de la 1 anne ISIS en 2007-08 Le cours UML du lundi 17 mars 2008 (8h15-10h15) est assur par Rmi Bastide en salle ISIS-1 du btiment GCE de l'Universit Paul Sabatier

Objets et classes
Task startDate : Date = 1.1.98 endDate : Date = 1.1.98 setStartDate (d : Date = default) setEndDate (d : Date = default)

Les objets montrent


Le nom de l'objet Le nom de la classe La valeur des attributs

Assignment 1: Task startDate = 1.2.98 endDate = 23.2.98

Assignment 1: Task startDate = 1.2.98 endDate = 23.2.98

Assignment 1: Task startDate = 1.2.98 endDate = 23.2.98

Diagramme dobjets

Cf. diagramme de classes Composition / agrgation

74

Example
Salesperson Generates Diagramme de classes: curtisClyde: Order Includes CustInfo order121: ace furniture: Diagramme d'objets order122: harmon assoc: line1: line2: line3: line4: line1: line2: Contains Line

3 types de diagrammes avec des objets

Diagrammes dobjets (point de vue statique) Diagrammes dinteraction (point de vue dynamique)

Diagramme de squence Diagramme de collaboration

76

Modlisation de la dynamique

Modlisation des interactions entre objets de plusieurs classes

Diagrammes dinteraction

Diagramme de squence Diagramme de collaboration

Modlisation du comportement des objets dune classe

StateCharts
77

Interactions

Interaction:

Un ensemble de communications entre instances


Appel de mthodes Cration /Destruction

Partiellement ordonn dans le temps

78

Diagrammes dinteraction

Montre les interactions entre instances dans un modle


Types

graphe dinstances et de stimuli Instances pr-existantes cration et destruction dinstances

Diagramme de squence (point de vue temporel) Diagramme de collaboration (point de vue structurel)

79

Diagrammes dinteraction

Diagramme de Squence
x a b c y z

Diagramme de Collaboration
1.1: a 1.2: c x y 1.1.1: b z

80

Diagramme de Squence
Instance Ligne de vie
name () name : Class other

stimulus

activation

new () : Class

destruction

retour

cration
81

Types de flches
Flt de contrle imbriqu

Flt de contrle asynchrone Retour


82

Exemples

Flt imbriqu
teller : Order
getValue price

Flot asynchrone
appl err handl alarm

: Article

unknown alarm

getName

83

CRC Cards

Classe, Responsabilits, Cooprations

Une manire "lgre" (papier/crayon) d'identifier les classes d'un systme Approche informelle, pralable une formalisation en UML Conception "centre sur les responsabilits" plutt que sur les attributs ou mthodes

84

CRC Cards : exemples

85