Vous êtes sur la page 1sur 132

Conception avec UML

Gerson Suny
IRIN - Universit de Nantes

Introduction
UML - Langage de modlisation unifi
Standard de lOMG (Object Management Group)
Une notation (syntaxe concrte)
Un mta-modle (syntaxe abstraite)
Ce nest pas une mthode (pas de
processus de dveloppement)

Un peu dhistoire

La jungle de mthodes des annes 90


OMT (Rumbaugh et al.), OOA/OOD
(Booch), OOA (Coad), OOSE (Jacobson),
OOA/OODLE (Schlaer & Mellor) , Fusion
(HP), Classe-Relation (Desfray).
et aussi: DFD (De Marco), Etat-transition
(Harel), ER (Chen), CRC (Wirf & Brooks),
JSD (Jackson)

Un peu dhistoire
Les annes 80-90:
Diffrents langage de modlisation
Diffrentes interprtations des
constructeurs de modlisation
Peu doutils, pas adapts
Pas dchange de modles
4

Objectifs dUML
Proposer un langage visuel de
modlisation, indpendant de

limplmentation et du processus de
dveloppement

Proposer une base formel pour


linterprtation des modles

Objectifs dUML
Intgrer des concepts de haut niveau:
Composants, Patrons de conception
(Patterns), Cadres dapplications
(Framewoks)

Encourager loutillage

UML et le processus de
dveloppement

Un processus est compos (au

minimum) des tapes suivantes:


Expression des besoins
Analyse
Conception
Ralisation, validation, maintenance
7

Analyse et conception
UML: une mme notation, deux niveaux
dabstraction diffrents

Une frontire floue, qui doit tre


prcise par une mthode de
dveloppement

Analyse avec UML


Gnralement:
Le rsultat de lanalyse est un modle
idal de la solution

Abstraction des particularits de la


plate-forme dimplmentation
(persistance, rseau, etc.)

Conception avec UML


Le rsultat de la conception est un

modle de la solution, adapt au monde


rel

Ce modle reste indpendant du


langage dimplmentation

10

Conception avec UML

Partie I - Structure
Partie II - Comportement

11

Partie I - Structure

12

Diagrammes Structurels
Classes
Objets
Composants
Dploiement
Structures composite

13

Diagramme de classes
Classificateurs, attributs et oprations
Associations
Gnralisation
Dpendances
Paquetages

14

Classificateurs

15

Rappel: objet
Encapsulation dun tat et dun
ensemble doprations (qui
sappliquent cet tat)

Abstraction dune entit relle


Identit unique
Existence temporelle (cration,
modification, destruction)

16

Rappel: classe
Description du comportement et des
proprits communs un ensemble
dobjets

Un objet est une instance dune


classe

Chaque classe a un nom

17

Notation
Sans dtails
Analyse
Conception
Proprits groupes
selon leur visibilit

HTML Page
HTML Page
title : String
size : Integer
render()
save()
HTML Page

HTML Page
+ title : String
+ /size : Integer
~ version : Integer
# contents : String
- visibility : Boolean = true
- tags : String [1..*]
+ render()
+ save()
- optimize()

public
title : String
/size : Integer
package
version : Integer
protected
contents : String
private
visibility : Boolean = true
tags : String [1..*]
public
render()
save()
private
optimize()

18

Attributs
Caractristique structurelle type dun
classificateur, qui spcifie la structure
des instances de ce classificateur

Peuvent tre drivs dautres attributs

19

Attributs
Syntaxe: [visibility][/]name[:type][multiplicity]
[=default][{property-string}]
Proprits:
{readOnly}, {union}, {subset <p>}, {redefines <p>},
{ordered}, {bag}, {seq}, {composite}
Visibilit: [+,~,#,-]
Peuvent tre souligns (attributs de classe)
20

Opration
Caractristique comportementale dun
classificateur qui spcifie le nom, les

types, les paramtres et les contraintes

pour invoquer un comportement associ

21

Opration
Syntaxe: [visibility]name (parameter-list)property-string
parameter: [direction]name : type-expression
[multiplicity] = default-value [property-string]

Peut tre souligne (opration de


classe)

Proprits?

22

Exercice I
Implmentation dune
classe:

Ecrire, en un langage
objets, la classe

HTML Page et ses


attributs

HTML Page
+ title : String {readOnly}
+ /size : Integer
~ version : Integer
# contents : String
- visibility : Boolean = true
- tags : String [1..5]
+ render()
+ save()
- optimize()

Vous avez 5 minutes

23

Solution
Choisir une stratgie dimplmentation
Cette stratgie donnera une smantique
aux classes modlises

Ladapter au langage dimplmentation


Pattern Generation Gap

24

Solution propose (1/4)


indexing
description: "Page HTML"
note: "Ceci est un exemple, ne pas utiliser"
status: "in progress"
date: "15.9.2003"
revision: "$Revision$"
author: "G. Sunye"
class HTML_PAGE
inherit
GENERAL
creation make

feature {NONE}
title : STRING
version : INTEGER
contents : STRING
visibility : BOOLEAN
tags : LINKED_LIST[STRING]

Tous les attributs sont


privs

25

Solution (2/4)

feature {ANY}
make is
do

visibility := true

create tags.make
end -- make
set_title(s : STRING) is
once
title := s;
end; -- set_title
get_title : STRING is
do
Result := title
end -- get_title
get_size : INTEGER is
do

Cration des mthodes

daccs (get/set) pour tous


les attributs

Utilisation de once pour


implmenter les variables
read only

Result := contents.count
end -- get_size

26

Solution (3/4)
feature {HTML_PAGE, HTML_DOCUMENT}
set_version(i: INTEGER) is
do
version := i
end -- set_version
get_version : INTEGER is
do
Result := version
end -- get_version

feature {HTML_PAGE}
set_contents(s: STRING) is
do
contents := s
end -- set_contents

La visibilit des

mthodes doit respecter


celle des attributs,

dfinie dans le modle


UML

get_contents : STRING is
do
Result := contents
end -- get_contents

27

feature {NONE}

Solution (4/4)

set_visibility(b: BOOLEAN) is
do

visibility := b

end -- set_visibility

get_visibility : BOOLEAN is
do
Result := visibility
end -- get_visibility
add_tag(s : STRING) is
require
not_void: s /= Void
max: tags.count < 5
do
tags.add_last(s)
end -- add_tag
remove_tag(s : STRING) is
do
tags.remove(tags.index_of(s))

Cration des

mthodes dajout
et suppression

pour les attributs


de cardinalit > 1

ensure
exists: tags.occurrences(s) == 0
end
end -- HTML_PAGE

28

Problmes
Comment respecter les cardinalits?
La vrification de la cardinalit

suprieure est assez simple coder.


Pour linfrieure, ce nest pas le cas...

29

Exercice II
Pour la prochaine sance:
Proposer une solution de vrification
de la cardinalit infrieure

30

Remarque importante
UML nest pas un C++ visuel
ni Java, Eiffel, Smalltalk, Python,

Sather, Ruby, Dylan, Objective-C,


Clos, Perl5, Beta, ObjPascal, C#,
SmallScript, Scheme, Curl, Cecil,

OCAML, Delphi, Oberon, Self, etc.

31

Conseil de modlisation
Un modle UML nest pas la copie
conforme du code source

Il doit avoir le minimum possible


dinformations

Pour rsumer: ne surchargez pas vos


modles avec des informations
redondantes

32

Autres classificateurs
Classes abstraites
Datatypes
Interfaces
Classes paramtres

33

Classes abstraites
Encapsulent un

comportement commun

Etudiant

Ne possdent pas
dinstances

Possdent des

Etudiant
{abstract}

oprations abstraites

34

Classes abstraites
deferred en Eiffel
abstract en Java
pure virtual en C++
mthodes ^self shouldNotImplement en
Smalltalk

35

Datatypes
Type, dont:
les valeurs nont
pas didentit

dataType
Date
day : Integer
month : Integer
year : Integer

les oprations sont


de fonctions
pures

36

Datatypes
Enumeration
Types primitives:

enumeration
Temperature
Cold
Hot

Boolean, Integer,

UnlimitedNatural,
String

37

Interfaces
Une dclaration dun

Interface
Serializable
+ read()
+ write

Exporter
write()

ensemble cohrent
doprations

Une interface peut

HTML Page
title : String
size : Integer
render()
save()

tre implmente ou
demande

HTML Page
title : String
size : Integer
render()
save()

Exporter
write()
Serializable

38

Classes paramtres
Indispensable pour les classes
conteneurs (e.g. Listes)

Existe en Ada, Eiffel et C++

Vecteur
item : T
taille : int
ajouter()
supprimer()

(templates)

Nest pas ncessaire en


Smalltalk et Python

<<bind>> <Point>

Polygone

Nexiste pas en Java

39

Exercice III
Ecrire, en un langage

dataType
Date
day : Integer
month : Integer
year : Integer

objets, les

datatypes Date et
Temperature

enumeration
Temperature
Cold
Hot

Vous avez 5 minutes.

40

Solution
Encore une fois, il nexiste pas de
solution unique

Limplmentation dpend de la stratgie


choisie

41

expanded class TEMPERATURE


inherit
ANY
redefine
out
end;

Solution (1/2)

feature {ANY} -- Queries


out : STRING
cold : TEMPERATURE is once Result.set_image ("cold") end
hot : TEMPERATURE is once Result.set_image ("hot") end
from_string (str : STRING) is
-- this will be implemented soon by my students
end -- from_string
feature {NONE} -- Private
all_images : DICTIONARY[TEMPERATURE, STRING] is
once
create Result;
Result.put(cold, cold.out);
Result.put(hot, hot.out);
end -- all_images
set_image (new_image : STRING) is

Utiliser une

expanded class
Utiliser once

pour assurer que

les instances sont


uniques

do
out := new_image.twin;
end -- set_image
end -- TEMPERATURE

42

Solution (2/2)
expanded class DATE
creation
make,
from_string
feature -- Creation
make(d : INTEGER, m : INTEGER, y : INTEGER) is
-- Creation and initialization
do
day := d
month := m
year := y
end -- make

Assurer que les


mthodes sont
des fonctions
pures

from_string(s : STRING) is
-- Creation and initialization from a STRING
do
-- My students will complete this
end -- from_string

43

Solution (3/2)
feature {ANY}
add_days(d : INTEGER) : DATE is
do
create Result.make(day+d, month, year)
end --add_days
feature {NONE} -- Private
day : INTEGER;
month : INTEGER;
year : INTEGER;
invariant
not day > 31
not month > 12
end -- UML_MULTIPLICITY

44

Conseil de modlisation
Une classe qui ne possde que des

attributs est un signe probable dune


mauvaise conception

Une classe qui ne possde pas


dattributs lest aussi

45

Associations

46

Rappel: association
Une association entre deux classes

reprsente un lien stable entre deux


objets (instances de ces classes)

47

Rappel: association
feature {VISITOR}
accept(v: VISITOR) is
do
v.visitExemple(Current)
end -- set_contents

Un lien

dutilisation,

temporaire, nest
pas une

association

48

Notation
Nom

HTMLPage

container

Rles
Cardinalits

Possde

Direction de lecture
1 contents

Navigabilit

HTMLFolder

49

Cardinalits - Notation
Exacte : 1
Plusieurs (0 n): *
Optionnelle: 0,1
Spcifie: 1, 2, 4
Intervalle: 1-10

50

Proprits des rles


{set} : chaque lment est prsent au
plus une fois (par dfaut)

{bag} : un lment peut tre prsent plus


dune fois

{ordered}: set ordonn


{sequence}: bag ordonn

51

Proprits des rles


{redefined <end-name>} : redfinition
dun autre rle

{subsets <property-name} : le rle


reprsente un sous-ensemble

{union} : union drive de tous ses sousensembles

52

Cas particuliers (1/2)


Association rflexive
Association n-aire
Association qualifie
Association-classe
Agrgation partage
Agrgation composite
53

Association rflexive
Liaison entre objets de la mme classe

Personne

enfant
*

0..2
parent

54

Association n-aire
Association entre plus de deux classes
Interprtation confuse des cardinalits
enseignement
Enseignant

1..*

Matire

1..*
Classe

55

Association qualifie
Banque

compte

0..1

Personne

Qualificatif: attribut spcial, qui permet


de rduite la cardinalit (de n 1)

Une clef permettant de distinguer un


objet de faon unique

56

Association-classe
Aussi appele classe de liaison

Etudiant

Matire

Note
valeur : int
op()
op()

57

Agrgation
Notion de tout et partie
Partage et composite
Voiture

4,6

Roue

1
Chassis

58

Exercice IV
User
name : String
outForCoffee()

Implmenter les

classes et la classe-

authorization on

*
station

profile

Workstation
name : String
shutdown()

Authorization
priority
shell

association
5 minutes

59

Solution
Patterns utiliss:
Itrateur: parcours de lassociation
Fabrique abstraite: cration des liens
Singleton: une fabrique unique

60

class USER
inherit
GENERAL
create make

La classe USER

feature {ANY}
make is
do
create station.make;
end -- make

feature {ANY} -- Interface


get_station : ITERATOR_ON_USER_STATION_LIST is
do
create Result.make(station);
end -- get_station
out_for_coffee is
do
obsolete
end --out_for_coffee
feature {NONE} -- Implementation
add_station(station : WORKSTATION) : AUTHORIZATION is
do
Result := authorization_factory.link(station, Current);
end -- add_station
authorization_factory : AUTHORIZATION_FACTORY is
once
create Result
end -- authorization_on
station : LINKED_LIST[AUTHORIZATION]
end -- USER

Implmentation
dun liste

dautorisations
Implmentation
dune fabrique
(presque un
singleton)

61

class
inherit

WORKSTATION

GENERAL
create make
feature {ANY} -- Creation.
make is
do
create profile.make

Workstation

end -- make

feature {ANY} -- Interface.


get_profile : ITERATOR_ON_PROFILE_LIST is
do
create Result.make(profile)
end -- get_profile
shutdown is
do
obsolete
end -- shutdown

feature {NONE} -- Implementation.


add_profile(profile : USER) : AUTHORIZATION is
do
Result := authorization_factory.link(Current, profile);
end -- add_profile
authorization_factory : AUTHORIZATION_ON_FACTORY is
once
create Result
end -- authorization_factory
profile : LINKED_LIST[AUTHORIZATION]
end -- WORKSTATION

Utilisation dun
itrateur

62

Authorization (1/2)

class AUTHORIZATION

feature {ITERATOR_ON_AUTHORIZATION_LIST}
set_priority(p : STRING) is
do
priority := p
end -- set_priority
set_shell(s : STRING) is
do
shell := s
end -- set_shell
get_priority : STRING is
do
Result := priority
end -- get_priority
get_shell : STRING is
do
Result := shell
end -- get_shell
get_profile : USER is
do
Result := profile
end -- get_profile
get_station : WORKSTATION is
do
Result := station
end -- get_station
(...)

Mthodes daccs
aux attributs et

aux lments lis


Accessibles
seulement
travers des
itrateurs

63

Authorization (2/2)
(...)
feature {AUTHORIZATION_FACTORY}
set_profile(p : USER) is
do
profile := p
end -- set_profile
set_station(s : WORKSTATION) is
do
station := s
end -- set_station

Le lien est tablie


par la fabrique

feature {NONE}
priority : STRING
shell : STRING
profile : USER
station : WORKSTATION
end -- AUTHORIZATION

64

Itrateurs (1/3)

Indexing
Project: "Eiffel/OS X//iterator_on_authorization_list"
File: "iterator_on_authorization_list.e"
Description: "Implements... ."
Author: "Gerson Suny"
Copyright: " 2003 __MyCompanyName__"
Version: 1.0
Date: "Mon Sep 29 2003"
Keywords: iterator_on_authorization_list

class
inherit

ITERATOR_ON_AUTHORIZATION_LIST

ITERATOR_ON_LINKED_LIST[AUTHORIZATION]
redefine
make
create
make

Utilisation des
ressources du
langage

(itrateurs Eiffel)

feature {ANY} -- Creation.


make(l : LINKED_LIST[AUTHORIZATION]) is
do
Precursor(l);
end -- make
Result := current_item.get_profile
end -- get_profile
(...)

65

Itrateurs (2/3)

(...)
feature {USER, WORKSTATION} -- Interface.
set_priority(p : STRING) is

do
current_item.set_priority(p)
end -- set_priority
set_shell(s : STRING) is
do
current_item.set_shell(s)
end -- set_shell
get_priority : STRING is
do
Result := current_item.get_priority
end -- get_priority
get_shell : STRING is
do
Result := current_item.get_shell
end -- get_shell
get_profile : USER is
do
Result := current_item.get_profile
end -- get_profile
get_station : WORKSTATION is
do
Result := current_item.get_station
end -- get_station
end -- ITERATOR_ON_AUTHORIZATION_LIST

Accs aux

attributs de la

classe-association
Accs aux

lments lis

66

Itrateurs (3/3)
class
inherit

Spcialisation de
ITERATOR_ON_USER_STATION_LIST

ITERATOR_ON_AUTHORIZATION_LIST
create
make
feature {ANY} -- Creation.
feature {USER}
shutdown is
do
Current.get_station.shutdown
end -- shutdown
feature {NONE} -- Implementation.
end -- ITERATOR_ON_USER_STATION_LIST

litrateur sur la

classe-association
Accs aux mthodes
de la classe

Workstation par

dlgation (respect de
la loi de Demeter)

67

Discussion
Litrateur peut-il garder la mme
interface pour des cardinalits
diffrentes?

O doivent tre places les mthodes


dajout et suppression?

Faut-il crer des nouvelles classes pour


les collections?

68

Remarque importante

Ne jamais nommer une association


contenant une classe-association

69

Exercice V
Pour la prochaine sance:
Proposer une implmentation

diffrente pour chaque proprit de


rle: <bag>, <seq>, <ordered>

70

Conseil de modlisation
La cohrence dans linterprtation dun
modle est essentielle.

Regardez dun il critique lextraction


automatique de modles UML partir
de code source

71

Conseil de modlisation
Pour rsumer:
Un ensemble de rectangles et de
flches nest pas forcment un
modle de conception

72

Gnralisation

73

Gnralisation
Hritage, caractristique des langages
objets

Partage de structure et comportement


entre classes

74

Notation
Relation est une sorte de, est
remplaable par

Etudiant
{abstract}

Etudiant de
Matrise

Etudiant

Etudiant de
DESS

Etudiant de
Matrise

Etudiant de
DESS

75

Generalization Set
Personne

{complete, disjoint}

{incomplete, disjoint}

Etudiant

Homme

Femme

complete/incomplete: couverture. Une personne est


soit un homme, soit une femme. Une personne peut
tre aussi un tudiant
disjoint/overlapping: si les classificateurs partagent
des instances
76

Gnralisation
Attributs
Oprations
Associations
Contrats, tats, etc. (mais cela, nous
verrons plus tard)

77

Attributs
Un attribut qui a le

Personne
nom : String
secu : Integer
naissance : Date

mme nom quun

attribut hrit est une


redfinition

Personne
id {redefines nom}
naissance : Integer

78

Oprations
Une opration peu tre
redfinie si:

Dpartement
virer (e : Etudiant)

elle a le mme nombre


de paramtres

Le type de chaque

paramtre est conforme


au paramtre

Dpartement d'info
virer (e : EtudiantInfo)

correspondant

79

Associations
appartient

Etudiant

Etudiant de
Matrise

Dpartement

Etudiant de
DESS

Les associations sont hrites par les


sous-classes

80

Associations
Il est possible de spcialiser une
association

Double emploi avec <redefined> ?


Etudiant

Etudiant en
informatique

appartient

appartient
{redefined appartient}

Dpartement

Dpartement
d'info

81

Exercice VI
Pour la prochaine sance, proposer une
solution dimplmentation pour:

la redfinition dun rle dassociation


Lhritage multiple en Java ou
Smalltalk

82

Dpendances
Relation entre deux lments (client et
fournisseur)

Abstraction
Permission
Ralisation
Substitution
83

Abstraction (1/2)
Entre lments de diffrents niveaux
smantiques
derive : lments drivs, pas forcment
du mme type
refine : raffinement entre modles
trace : (aussi) - utilis pour marquer les
changements entre modles.

84

Abstraction (2/2)
type
Personne

refine

Personne
Impl

Relation entre un type du modle

danalyse avec une classe du modle de


conception

85

Intrt de labstraction

Outillage de mthodes de

dveloppement (RUP, Catalysis, etc.)

86

Permission
Etudiant
+ nom
- cartable

permit
Professeur

Droits daccs aux proprits prives

87

Ralisation
Relation entre deux ensembles
dlments, de spcification et
dimplmentation

Utilis pour reprsenter: raffinement,


optimisation, transformations,
synthses, etc.
realize
88

Substitution
Relation entre classificateurs. Les
instances du fournisseur peuvent
remplacer celles du client

Etudiant
+ nom
- cartable

substitute
Espion

89

Usage
call : dpendance entre oprations
(o classes)

create : le client cr des instances du


fournisseur (classificateurs)

instantiate : les oprateurs du client


crent des instances du fournisseur

90

Usage (2/2)

send : entre une opration et un


signal

91

Intrt de lusage
Reprsentation des associations non
permanentes

Trs utiles pour estimer la testabilit


dun modle ou limpact dun
changement

92

Strotypes
Principal mcanisme dextension dUML
Permet lextension (ou plutt la

restriction) de la plupart des lments


de modlisation: classe, objet,

opration, acteur, cas dutilisation,


diagrammes, etc.

93

Notation
Peuvent introduire:
une nouvelle
notation

des contraintes
dutilisation

persistent
Personne
nom : String
secu : Integer
naissance : Date

persistent
Personne
nom : String
secu : Integer
naissance : Date

Personne
nom : String
secu : Integer
naissance : Date

Personne

Trs utiles pour

linterprtation dun
modle

94

Etiquettes (tagged values)


Pair de la forme tiquette=valeur,

attache aux lments de modlisation


Personne
{author = G. Suny,
status = incomplete}
nom : String
secu : Integer
naissance : Date

95

Notes
Complments de modlisation

sous forme textuelle, attaches


Dpartement
virer (e : Etudiant)

un lment ou un diagramme
Peuvent tre strotypes

Dpartement d'info
virer (e : EtudiantInfo)

Le dpartement d'informatique
ne peut virer que les tudiants
d'informatique

96

Profils
Mcanisme dextension, permettant

dadapter UML laide dun ensemble


de strotypes

Le profil Standard contient les


strotypes utiliss dans UML

Autres profils: J2EE/EJB, COM, .NET,


CCM, etc.

97

Conseil de modlisation
Un modle est fait pour tre compris!
Utilisez les notes, les strotypes et les
tiquette pour mieux lexpliquer.

Priorit la qualit et non la quantit

98

Paquetage (1/3)

Groupement dlments, qui leur fournit


un espace de nommage commun

99

Paquetage (2/3)
Utilis pour structurer une application
Il se compose de classes et dautres
paquetages

Il rfrence des classes ou dautres


paquetages

100

Paquetage (3/3)

Utilis pour rglementer la visibilit des

classes et paquetages qui le composent

101

Notation
Types

Vues externe et
interne

Types

datatype
Date

102

Dpendances entre
paquetages

Importation (import): les lments de


lespace de nommage sont imports

Accs (access): les lments sont


simplement utiliss
Persistence

Gestion
access

import
Types

103

Fusion de paquetages
Une fusion dfinie la manire dont un
paquetage tend un autre

Compos de liens de gnralisation et


de redfinition

104

Notation

Enumerations

My Types
merge

Vue externe

merge
Types

105

Notation
My Types

Vue interne

datatype
Types::Date

datatype
Date

106

Diagrammes Structurels
Classes
Objets
Composants
Dploiement
Structures composite

107

Diagramme dinstances
Reprsentation dobjets, de liens et de
valeurs.

Trs utiles pour expliquer les

associations entre classes ou le rsultat


dune opration

108

Notation
Similaire celle dune classe
Le nom de linstance et celui de la classe
sont souligns et spars par :
Les deux noms sont facultatifs
Arnaud : Etudiant
adresse = "13 r du pont"
age : Integer = 38

appartient

: Dpartement
nom = "Informatique"

109

Diagrammes Structurels
Classes
Objets
Composants
Dploiement
Structures composite

110

Diagramme de composants
Composant
Connecteur
Artefact
Port

111

Composant
Partie remplaable dun systme
Son comportement est spcifi par des
interfaces requises et fournies

112

Notation

Interfaces requises et

component
Dictionnaire
provided interfaces
Synonymes
Antonymes
required interfaces
Texte structur

fournies

Synonymes
component
Dictionnaire
Texte structur

Antonymes

113

Port
Point dinteraction

entre un composant

(ou classificateur) et
son environnement

Antonymes
Synonymes

component
Dictionnaire

La nature de ces
interactions est

spcifie par des


interfaces

114

Connecteur
Dictionnaire

:Index

Liaison entre un

Antonymes

Texte structur

contrat externe (port)

:Langue

et la ralisation
Assemblage,
dlgation

Texte structur
component
:Texte

component
:Dictionnaire
Texte structur

115

Diagrammes Structurels
Classes
Objets
Composants
Dploiement
Structures composite

116

Diagramme de dploiement

Artefact, Communication Path,

Dploiement, device (dispositif), Noeud

117

Artefact
Spcification dune pice physique

dinformation utilise dans le processus


de dveloppement

Fichiers source, modles, scripts,


binaires, document, etc.

118

Artefact
Un artefact est un classificateur: il
possdes des proprits et des
oprations

Il peut sassocier avec dautres


artefacts

119

Notation
artifact
Order.jar

Strotypes

standards: source,
executable

artifact
Order.jar

120

Noeud

Ressource logique dans laquelle sont


dployes les artefacts

121

Notation
Connexion, instances
Zope

1..4

:Zope

ZODB

deploy

CMF

:Zope
artifact
Plone

artifact
CMF

122

Chemin de communication

Association entre deux noeud,

permettant lchange de signaux et de


messages

123

Spcification de
dploiement
artifact
Order.jar

deployment spec
description.xml

Ressource (artefact) dterminant les

paramtres dexcution dun artefact

124

Diagrammes Structurels
Classes
Objets
Composants
Dploiement
Structures composite

125

Structures composite

Structures internes
Collaborations

126

Structures internes

Spcification dlments crs


lintrieur dun classificateur

127

Notation
Triangle

Proprits

:Point [3]

:Color

Instances
Rfrences
Triangle
make(c : Color)

:Triangle
create
b:Point

c:Point

a:Point

blue:Color

128

Collaborations
Spcification de la structure dun
ensemble dlments (rles) qui
ralisent une tache commune

Reprsentation de la structure dun


patron de conception

129

Notation (1/3)
Rle: rle dune classe
participant une
collaboration

Observer

/Observer:Dependent

/Subject:Model

Connecteur: lien
permettant la

communication entre
deux classes

130

Notation (2/3)
Les proprits dfinies par les

classificateurs doivent tre possdes


par les classes jouant leurs rles
Observer

Observer
Dependent
update()

Subject
Model
notify()
addDependent()

131

Notation (3/3)
Occurrence dune collaboration

Fentre

Donne
Observer

Subject
:Observer

132

Vous aimerez peut-être aussi