Cours n°3 UML

Programming, Math, etc. · exam

Browse all génie logiciel documents

Cours n°3

UML

1

Plan

(cid:1) Introduction

(cid:1) Modéliser avec UML

(cid:1) Diagrammes de cas d’utilisation

(cid:1) Diagrammes de classes

(cid:1) Notion de paquetage

(cid:1) Diagrammes d’objets

(cid:1) Diagrammes de séquence

(cid:1) Diagrammes de collaboration

(cid:1) Diagrammes d’états/transition

(cid:1) Autres diagrammes

UML

2

Diagramme de classes

UML

3

Vue statique

(cid:1) Vue Fonctionnelle

(cid:1) diagrammes de cas d'utilisation

(cid:1) Vues statiques du système :

(cid:1) diagrammes de classes

(cid:1) diagrammes d'objets

(cid:1) diagrammes de composants

(cid:1) diagrammes de déploiement

(cid:1) Vues dynamiques du système :

(cid:1) diagrammes de séquence

(cid:1) diagrammes de collaboration

(cid:1) diagrammes d'états-transitions

(cid:1) diagrammes d'activités

UML

4

Class diagrams

(cid:1) Expriment la structure statique du système en terme de

classes et de relations entre ces classes

(cid:1) Une classe est un type abstrait caractérisé par des

propriétés (attributs et méthodes) communes à un

ensemble d'objets et permettant de créer des objets ayant

ces propriétés

UML

5

Objets et classes

Objet : une entité concrète avec une

identité bien définie qui encapsule

un état et un comportement. L ’état

est représenté par des valeurs

d’attribut et des associations, le

comportement par des méthodes.

Un objet est une instance d ’une classe.

Classe : une description d’un ensemble

d’objets qui partagent les mêmes

attributs, opérations, méthodes,

relations et contraintes.

Une classe peut posséder des

attributs ou des méthodes « de

classe ».

MaVoiture : Voiture

marque = Renault

Modèle = Nevada

Immatriculation = 648ADX38

AnnéeModele = 1992

Kilométrage = 285 000

Voiture

marque : chaîne

Modèle : chaîne

Immatriculation : chaîne (8)

AnnéeModele : date

Kilométrage : entier

Rouler ( )

Kilometrage_annuel_moyen ( )

Convention graphique d’une classe

Nom_de_classe

Nom_de_classe

Attributs

Méthodes

UML

7

Syntaxe

(cid:1) Attribut :

(cid:1) nom : type = val_initiale

(cid:1) Méthode :

(cid:1) nom (arg : type = val_defaut, …) : type_retour

(cid:1) Niveaux d’accès :

(cid:1) Public

(cid:1) Protected

(cid:1) Private -

+

#

UML

8

Exemples / niveaux d’abstraction

voiture

Classe non documentée

UML

9

Exemples / niveaux d’abstraction

voiture

immatriculation

couleur

marque

puissance

poids

date

propriétaire

demarrer

arreter

conduire

vendre

attributs

méthodes

voiture

Classe non documentée

Classe documentée

UML

10

Exemples / niveaux d’abstraction

voiture

immatriculation

couleur

marque

puissance

poids

date

propriétaire

demarrer

arreter

conduire

vendre

voiture

+ immatriculation : string

+ couleur : string

+ marque : string

puissance : int

poids : int

  • date : Date
  • propriétaire : string

attributs

types

+ demarrer()

  • contact() : bool

+ conduire(a : string = « marseille », b : string)

+ vendre(prix : float)

méthodes

prototype

voiture

Classe non documentée

Classe documentée

Classe détaillée

Niveaux d’accès

UML

11

Sémantique

(cid:1) Un diagramme de classes est une collection d'éléments de modélisation

statiques (classes, paquetages...), qui montre la structure d'un modèle

(cid:1) Un diagramme de classes fait abstraction des aspects dynamiques et

temporels

(cid:1) Pour un modèle complexe, plusieurs diagrammes de classes

complémentaires doivent être construits

On peut par exemple se focaliser sur :

(cid:1) les classes qui participent à un cas d'utilisation (cf. collaboration)

(cid:1) les classes associées dans la réalisation d'un scénario précis

(cid:1) les classes qui composent un paquetage

(cid:1) la structure hiérarchique d'un ensemble de classes

UML

12

Association

(cid:1) Une association exprime une connexion sémantique

entre deux classes

(cid:1) L'association est instanciable dans un diagramme

d'objets ou de collaboration, sous forme de liens entre

objets issus de classes associées

UML

13

Association classique

Personne

Entreprise

travaille

UML

14

Association en forme verbale

active

(cid:1) Précise le sens de lecture

Personne

Hôtel

< héberge

UML

15

Rôles

Personne

employé

employeur

Entreprise

Personne

client

Hôtel

personnel

UML

16

Cardinalités

(cid:1) Nombre d’éléments participant à la relation

(cid:1) x : exactement "x" (entier naturel > 0)

(cid:1) exemples : "1", "7"

(cid:1) x..y : de "x" à "y" (entiers naturels ou variables avec

y > x)

(cid:1) exemples : "0..1", "3..n", "1..31"

(cid:1) : plusieurs (équivalent à "0..n" et "0..")

(cid:1) x..* : "x" ou plus

(cid:1) exemples : "0..", "5.."

UML

17

Cardinalités

Homme

Femme

0..1

mariéA

0..1

Personne

enfant

0..*

*

parent

Advertisement

2

UML

Maison

1

18

Association à navigabilité restreinte

(cid:1) Par défaut, une association est navigable dans les deux

sens

(cid:1) La réduction de la portée de l'association peut être

exprimée dans un modèle pour indiquer que les

instances d'une classe ne "connaissent" pas les

instances d'une autre

Electeur

*

UML

Candidat

0..1

vote

19

Exemple de lecture d’un diagramme

Un box peut être loué par au

Un contrat concerne la location

maximum un seul contrat ou peut

d'un seul box à la fois.

rester non loué.

Un véhicule est autorisé à aller

Un box peut être vide ou contenir

dans un box (au minimum) ou

au maximum 2 véhicule.

plus.

Un locataire peut souscrire plusieurs

Un contrat ne concerne qu'un seul

contrat mais doit en avoir souscrit au

locataire.

moins un.

(cid:1) Faites une description de ce diagramme de classes en explicitant en une phrase

chacune des multiplicités :

Box –contrat – Box ; Box – Véhicule – Box ; Contrat – Locataire – Contrat

Agrégation

(cid:1) L'agrégation est une association non symétrique,

qui exprime un couplage et une relation de

subordination

(cid:1) Représente une relation de type "ensemble /

élément"

(cid:1) A un même moment, une instance d'élément

agrégé peut être liée à plusieurs instances d'autres

classes : l'élément agrégé peut être partagé

(cid:1) Une instance « ensemble » peut exister sans

élément (et inversement) : Cycles de vies

indépendants

UML

21

Agrégation

(cid:1) Une agrégation peut notamment (mais pas

nécessairement) exprimer :

(cid:1) qu'une classe (un "élément") fait partie d'une autre

("l‘ensemble"),

(cid:1) qu'un changement d'état d'une classe, entraîne un

changement d'état d'une autre,

(cid:1) qu'une action sur une classe, entraîne une action sur une

autre

UML

22

Exemple

Figure

*

*

Point

x

y

Appartenance faible =

(cid:1) Partage possible du composant avec d’autres Agrégat/Eléments

Agrégés

(cid:1) Une instance agrégée peut exister sans son agrégat et inversement

UML

23

Composition

(cid:1) Cas particulier d’agrégation : contenance

physique

(cid:1) Représente une relation de type "composé /

composant"

(cid:1) Les cycles de vies des composants et du composé

sont liés : si le composé est détruit (ou copié), ses

composants le sont aussi

(cid:1) A un même moment, une instance de composant

ne peut être liée qu'à un seul composé

UML

24

Exemple

Voiture

Carrosserie

Moteur

Piston

UML

25

Héritage : convention graphique

Super_classe

Sous_classe

UML

26

Généralisation

Oeuvre

Titre

Auteur

Reference

Livre

NbPages

Film

Duree

Opera

Orchestre

Roman

BD

UML

27

Généralisation

Oeuvre

Titre

Auteur

Reference

Livre

NbPages

Film

Duree

Opera

Orchestre

Roman

BD

UML

28

Généralisation

Vehicule

marque

modele

VitesseMax

Voiture

Plaque

cylindree

Bateau

tirantEau

voiles

Avion

altitudeMax

portee

UML

29

Règles de généralisation (…)

(cid:1) La généralisation ne porte ni nom particulier ni valeur de

multiplicité.

(cid:1) Lagénéralisationestunerelationnonréflexive:uneclassenepeut

pasdériverd’elle-même.

(cid:1) Lagénéralisationestunerelationnonsymétrique:siuneclasseB

dérived’uneclasseA,alorslaclasseAnepeutpasdériverdela

classeB.

(cid:1) Lagénéralisationestparcontreunerelationtransitive:siCdérive

d’uneclasseBquidériveelle-mêmed’uneclasseA,alorsCdérive

égalementdeA.

Relation d'héritage

Les sous-classes « héritent » des propriétés des super-classes

(attributs, méthodes, associations, contraintes)

Compte

solde

créditer()

débiter()

*

Banque

{inv: solde > -5000}

CompteEpargne

tauxIntérêt

ajouterIntérêts ()

{inv: tauxIntérêt < 100}

*

Banque

CompteEpargne

solde

tauxIntérêt

créditer()

débiter()

calculIntérêts ()

{inv: solde > -5000 et

tauxIntérêt < 100}

Relation d'héritage et

redéfinitions

Une opération peut être "redéfinie"

dans les sous-classes

Permet d'associer des méthodes

spécifiques à chaque pour réaliser une

même opération

Compte

solde

créditer(

)

débiter()

CompteEpargne

créditer()

débiter()

ajouterIntérêts ()

Relation de sous-typage, Vision

ensembliste

Compte

tout objet d’une sous-classe

appartient également à la

super-classe

M1

M0

Compte

Epargne

c3

ce1

ce2

ce3

c4

c4

c1

c2

Compte

CompteEpargne

Classes associatives

Pour associer des attributs et/ou des méthodes aux associations

=> classes associatives

Personne

employés

Advertisement

*

sociétés

0..2

Société

Emploi

salaire

augmenter()

Le nom de la classe correspond au nom de l’association

(problème: il faut choisir entre forme nominale et forme verbale)

Classes associatives

employés

Personne

*

sociétés

0..2

Société

M1

M0

e1

salaire =

salaire = 1500

1500

employé

employé

Mark

sana

employé

e2

salaire = 5000

e3

salaire = 1000

Emploi

salaire

augmenter()

xerox

Le salaire est une information correspondant

• ni à une personne,

• ni à une société,

ST

mais à un emploi (un couple personne-société).

Classes associatives

RAPPEL: Pour une association donnée, un couple d'objets ne peut être connectés

que par un seul lien correspondant à cette association.

(sauf si l'association est décorée par {nonunique} en UML2.0)

p1

Emploi>

Emploi>

s1

Cette contrainte reste vraie dans le cas où l’association est décrite à partir d ’une

classe associative.

: Emploi

salaire = 1500

p1

s1

: Emploi

salaire = 700

Classes associatives

Personne

employé

*

Emploi

salaire

sociétés

0..2

Société

e1

p1

s1

Ci-dessus, une personne peut avoir deux emplois, mais pas dans la même société

employé

0..2

Personne

1

Emploi

salaire

*

société

1

Société

Ci-dessus, une personne peut avoir deux emplois dans la même société

p1

e1

e2

s1

Classes associatives : traduction

A

rolea(s)

carda

roleb(s)

cardb

B

Transformation

systèmatique pour

revenir aux

concepts de base

A

rolea

c(s)

1

cardb

C

C

c(s)

roleb

carda

1

B

Il ne peut y avoir qu'un objet C entre un

objet A et un objet B donné

Classes associatives : traduction

employés

Personne

*

sociétés

0..2

Société

Emploi

emplois

emplois

Personne

employé

1

0..2

Emploi

société

*

1

Société

Il ne peut y avoir qu'un Emploi entre une

Personne et une Société

Exemple 1

Virement

montant

Ou ?

compteDébité

*

{non unique}

compteDébité

Compte

*

compteCrédité

Virement

montant

*

1

*

1

Compte

compteCrédité

M1

M0

Situation

possible ?

v1

compteDébité

c1

compteCrédité

c2

Peut-on avoir plusieurs

virements entre deux

comptes ?

compteDébité

compteCrédité

v2

Exemple 2

Participation

nbDeButs

Joueur

Joueur

joueurs

*

joueur

matchs

*

Match

Participation

*

*

match

Match

1

participations

nbDeButs

participations

1

Il ne peut y avoir qu'une Participation entre

Joueur et un Match

M0

Situation

possible ?

joueur

ali

joueur

p1

p2

match

finale

match

Un joueur peut il avoir

plusieurs participations à un

match donné ?

Exemple 3

CarteGrise

dateDélivrance

Personne

propriétaires

*

voitures

Voiture

{non unique}

{non unique}

*

Personne

propriétaire

*

CarteGrise

*

voiture

Voiture

1

carteGrises

dateDélivrance

Advertisement

carteGrises

1

M0

Situation

possible ?

propriétaires

ali

propriétaires

cg1

cg2

voitures

la106

voitures

Exemple 4

Veuvage

date

montantAssurance

Ou ?

conjointLaisséVeuf

0..1

Personne

Veuvage

date

montantAssurance

*

0..1

conjointLaisséVeuf 1 1

conjointDécédé

*

conjointsDécédés

Personne

M0

Situation

possible ?

v1

conjointLaisséVe

uf

ali

conjointLaisséVe

uf

v2

conjointsDécédé

s

sana

conjointsDécédé

s

Peut on toucher deux

fois l'assurance ?

Classes associatives

Les classes associatives sont des associations mais aussi des classes.

Elles ont donc les mêmes propriétés et peuvent par exemple être liées par des

associations.

Personne

employé

*

société

0..2

Société

FicheDePaye

*

Emploi

salaire

augmenter()

Associations n-aires

(cid:1) Généralisation des classes associatives binaires : Une

association peut relier une, deux ou plusieurs classes

Créneau

-date

-heure

-durée

Salle

Filière

Enseignant

Association n-aire

(cid:1) association reliant plus de deux classes

Personne

employé

s

*

sociétés

0..2

Société

Emploi

salaire

augmenter()

46

Association qualifiée

(cid:1) Une association qualifiée met en relation deux classes

sur la base d’un attribut spécifique appelé « clé »

Banque

numCompte

*

1..n

Personne

UML

47

Contraintes sur les associations

(cid:1) Les contraintes sont des expressions qui précisent le

rôle ou la portée d'un élément de modélisation (elles

permettent d'étendre ou préciser sa sémantique)

(cid:1) Sur une association, elles peuvent restreindre le

nombre d'instances visées ("expressions de

navigation")

(cid:1) Les contraintes peuvent s'exprimer en langage naturel.

Graphiquement, il s'agit d'un texte encadré d'accolades

UML

48

Principales contraintes

(cid:1) Contrainte {ordonnée} : une relation d’ordre

décrit les objets

(cid:1) Contrainte {sous-ensemble} : une collection est

incluse dans une autre collection

(cid:1) Contrainte {ou-exclusif} : pour un objet donné,

une seule association est valide

UML

49

Exemples

Peintre

1

peint

1..n

{ordonnée}

Personne

militaire

général

Personne

enseignant

{sous-ensemble}

{ou-exclusif}

étudiant

Tableau

Armée

BTS

50

Synthèse sur les associations

sens de

lecture

Nom de rôle

Nom d ’association

Cardinalités

ClasseA

x : string

roleA

< AssociationX

0..*

ClasseB

Composition

(ou agrégation )

AssociationX

attributZ

Navigation

Classe associative

A vous de jouer

’’Réservation de vols dans une agence de voyage’’

Diagrammes de

classes ?

1° Des compagnies aériennes proposent différents vols.

2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.

3° Un client peut réserver un ou plusieurs vols, pour des passagers

différents.

4° Une réservation concerne un seul vol, et un seul passager.

5° Une réservation peut être annulée ou confirmée.

6° Un vol a un aéroport de départ et un aéroport d’arrivée.

7° Un vol a un jour et une heure de départ et un jour et une heure

d’arrivée.

8° Un vol peut comporter des escales dans des aéroports

9° Une escale a une heure d’arrivée et une heure de départ.

10° Chaque aéroport dessert une ou plusieurs villes

(cid:1) Modélisation de la phrase :

1° Des compagnies aériennes proposent différents vols.

CompagnieAerienneet Volssont 2 objets métiers : 2 classes

CompagnieAerinne

Propose

Vol

1..*

• Un vol est réalisé par une seule compagnie mais partagé par plusieurs affréteurs

CompagnieAerinne

Propose

1..*

affréteur

Vol

1..*

(cid:1) Modélisation de la phrase :

2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.

CompagnieAerinne

Propose

1..*

affréteur

1..*

Vol

état (ouvert, fermé)

(cid:1) Tout objet peut avoir un état (diagramme d’états).

(cid:1) Dans un diagramme de classes tout concept dynamique est modélisé en opération.

(cid:1) Il faut représenter la 2° phrase par 2 opérations : ouvrirReservation( )et fermerReservation( )

(cid:1) Dans quelle classe ? Responsabilité d’une classe

CompagnieAerinne

Propose

1..*

affréteur

Vol

1..*

ouvrirVol( )

fermerVol( )

(cid:1) Les opérations sont déclarées dans l’objet dans lequel elles doivent s’exécuter

(cid:1) Les autres pourront déclencher ces opérations par envoi de messages

(cid:1) La classe CompagnieAerienne a une association avec la classe vol.

(cid:1) Modélisation des phrases :

7° Un vol a un jour et une heure de départ et un jour et une heure d’arrivée.

(cid:1) Les dates et les heures de départ et d’arrivée ne représentent que des valeurs : attributs.

CompagnieAerinne

Propose

1..*

affréteur

1..*

Vol

dateDepart

heureDepart

dateArrivee

heureArrivee

ouvrirVol( )

fermerVol( )

(cid:1) Pour savoir si un élément doit être représenté en attribut ou en objet :

Advertisement

(cid:1) S’il n’ y a que sa valeur qui est intéressante : c’est plutôt un attribut.

(cid:1) Si plusieurs questions peuvent concerner l’élément, alors il faut le représenter en objet.

(cid:1) Modélisation des phrases :

6° Un vol a un aéroport de départ et un aéroport d’arrivée.

(cid:1) Par quoi peut-on représenter l’élément ‘’Aéroport’’ ?

3 réponses sont envisageables :

1.

Soit avec une classe et une association de multiplicité 2

Aéroport

2

nom

{ ordered}

Vol

dateDepart

heureDepart

dateArrivee

heureArrivee

aeroportDepart

aeroportArivvee

ouvrirVol( )

fermerVol( )

(cid:2) Modélisation peu parlante.

(cid:1) Modélisation des phrases :

6° Un vol a un aéroport de départ et un aéroport d’arrivée.

2. Soit avec 2 classes

Vols

dateDepart

heureDepart

dateArrivee

heureArrivee

aeroportDepartr

aeroportArivvee

ouvrirReservation( )

fermerReservation( )

1

1

AeroportDepart

AeroportArrivee

Aéroport

nom

(cid:2) Modélisation non correcte. Tout aéroport peut être de départ et d’arrivée.

(cid:1) Modélisation des phrases :

6° Un vol a un aéroport de départ et un aéroport d’arrivée.

2. Soit avec 2 associations

Vol

dateDepart

heureDepart

dateArrivee

heureArrivee

ouvrirVol( )

fermerVol( )

Départ

Aéroport

1

Nom

Arrivée

1

(cid:2) Le rôle de chaque association précise son sens.

(cid:1) Modélisation des phrases :

10° Chaque aéroport dessert une ou plusieurs villes

(cid:1) On ne peut pas savoir la multiplicité de ‘’Aéroport’’

Aéroport

dessert

Ville

0..*

1..*

(cid:1) Si on considère que desservir une ville signifie l’aéroport le plus proche, il n’ en y a qu’un :

la multiplicité est de 1

(cid:1) Si on considère que desservir une ville signifie les aéroports dans un rayon de 35 km :

la multiplicité est de 0..*

(cid:1) Modélisation des phrases :

8° Un vol peut comporter des escales dans des aéroports

9° Une escale a une heure d’arrivée et une heure de départ.

(cid:1) Une escale a les propriétés heure d’arrivée et heure de départ, c’est donc un objet.

Vol

dateDepart

heureDepart

dateArrivee

heureArrivee

ouvrirVol( )

fermerVol( )

0..*

0..*

1..*

Depart

Aéroport

Arrivee

1

1

nom

1

(cid:1) Quelles sont alors les multiplicités entre ‘’Vols’’ et

‘’Escale’’, entre ‘’Escale’’ et ‘’Aeroport’’ et entre

‘’Aeroport’’ et ’Vols’’ ?

Escale

heureArrivee

heureDepart

0..*

0..*

(cid:1) Modélisation des phrases :

8° Un vol peut comporter des escales dans des aéroports

9° Une escale a une heure d’arrivée et une heure de départ.

(cid:1) ‘’Escale’’a peu d’informations propres. Elle n’est qu’une partie de ’’Vol’’.

(cid:1) On peut la représenter comme une spécialisation de ’’Aéroport’’. Mais elle n’est pas totalement un aéroport.

(cid:1) La meilleure solution serait de la modéliser comme une classe d’association entre et ’Vols’’et ‘’Aéroport’’.

Vol

dateDepart

heureDepart

dateArrivee

heureArrivee

ouvrirVol( )

fermerVol( )

0..*

0..*

0..*

Départ

1

Aéroport

Arrivée

nom

1

Escale

0..*

{Ordered}

Escale

heureArrivee

heureDepart

(cid:1) Modélisation des phrases :

4° Une réservation concerne un seul vol, et un seul passager.

5° Une réservation peut être annulée ou confirmée.

(cid:1) La réservation et le passager sont 2 concepts métier : 2 classes d’objets

(cid:1) Un réservation concerne un seul vol et un seul passager: donc 2 associations entre ‘’Vol’’et

’’Réservation’’et entre ’’Réservation’’et ‘’Passager’’.

(cid:1) La 5° phrase se traduit par l’ajout de 2 opérations annuler( )et confirmer( ) dans ‘’Reservation’’.

concerne

Vol

dateDepart

heureDepart

dateArrivee

heureArrivee

1

ouvrirVol( )

fermerVol( )

Réservation

Annuler( )

Confirmer( )

concerne

1

Passager

(cid:1) Modélisation des phrases :

3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.

(cid:1) Il faut discerner un client d’un passager

Client

1

a effectué

0..*

Vol

concerne

0..*

1

Réservation

Annuler( )

Confirmer( )

0..*

concerne

1

Passager

(cid:1) Le diagramme des classes complet est :

Client

nom Prénom

adresse

téléphone

e-mail

1

a effectué

0..*

Réservation

date

numéro

Annuler( )

Confirmer( )

0..*

concerne

1

Passager

nom Prénom

CompagnieAerinne

nom

1..*

Propose

1..*

Vol

dateDepart

heureDepart

dateArrivee

heureArrivee

ouvrirVol( )

fermerVol( )

concerne

0..*

1

Aéroport

nom

0..*

0..*

départ

1

arrivée

1

escale

0..*

0..*

{ordered}

InfosEscale

heureArrivee

heureDepart

Ville

nom