Download pdf - Modélisation avec UML

Transcript
Page 1: Modélisation avec UML

PO3T Programmation orientée objet

Séance 5

Modélisationavec UML

Sébastien Combéfis, Quentin Lurkin lundi 26 octobre 2015

Page 2: Modélisation avec UML

Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative CommonsAttribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.

Page 3: Modélisation avec UML

Rappels

Héritage et polymorphisme des objets

Référence polymorphique et conversion

Résolution des appels de méthodes (statique et dynamique)

Classe abstraite et interface

Factorisation de code similaire entre classes

Contrat à respecter pour l’implémentation

3

Page 4: Modélisation avec UML

Objectifs

Comprendre et utiliser la modélisation d’un logiciel

Structure et architecture de l’application orientée objet

Description de l’aspect dynamique et de l’exécution

Découvrir le langage UML

Diagramme de classe

Diagramme d’activité

4

Page 5: Modélisation avec UML

Modélisation

Page 6: Modélisation avec UML

Object Modelling Technique (OMT)

Notation développé en 1991 par Rumbaugh

Développé pour supporter la programmation orientée objet

Quatre buts pour l’utilisation en développement logiciel

Tester des entités physique avant construction (simulation)

Communiquer avec le client

Visualisation (présentation alternative de l’information)

Réduction de la complexité

Prédécesseur du langage UML

6

Page 7: Modélisation avec UML

Trois modèles d’OMT

Modèle objet pour les éléments statiques

Classes et associations, avec les attributs et les opérations

Modèle dynamique pour une vue état/transition

États, transitions et évènements pour déclencher les transitions

Modèle fonctionnel gère l’aspect processus

Processus, stockage et flux de données et acteurs

7

Page 8: Modélisation avec UML

Unified Modelling Language (UML)

Language de modélisation utilisé en ingénierie logicielle

Notation unifiée pour visualiser le design d’un système

Standard de l’Object Management Group (OMG) en 1997

Également adopté comme un standard ISO en 2005

Très utilisé pour le design de programme en orientée objet

Mais pourrait être utilisé pour le design de base de données

8

Page 9: Modélisation avec UML

Modélisation

Permet de visualiser le plan architectural d’un système

À l’aide d’un ensemble de diagrammes

Distinction entre le modèle du système et les diagrammes

Diagramme = représentation graphique partielle d’un système

Deux vues d’un système

Statique décrit la structure du système

Dynamique décrit le comportement dynamique du système

9

Page 10: Modélisation avec UML

Diagrammes prédéfinis en UML 2

Quatorze diagrammes prédéfinis divisés en deux catégories

Structurel Classe (Class diagram)Objet (Object diagram)Composant (Component diagram)Déploiement (Deployment diagram)Package (Package diagram)Structure composite (Composite structure diagram)Profil (Profile diagram)

Comportemental Cas d’utilisation (Use case diagram)États-transitions (State machine diagram)Activité (Activity diagram)

Interaction Séquence (Sequence diagram)Communication (Communication diagram)Aperçu de l’interaction (Interaction overview diagram)Temps (Timing diagram)

10

Page 11: Modélisation avec UML

Diagramme structurel

Page 12: Modélisation avec UML

Diagramme de classe

Capturer les relations statiques dans le programme

Comment les éléments du programme sont mis ensemble

Plusieurs types de relation

Stockage de références vers d’autres classes

Appartenance de classes

...

Capture de la « structure physique » d’un système

12

Page 13: Modélisation avec UML

Représenter une classe (1)

Classe modélisée par un diagramme de classe

Définition composée de trois compartiments

Nom pour identifier la classe

Attributs avec visibilité et valeur par défaut (optionnel)

Opérations avec visibilité

Employee{author = Combéfis}

+office : String#salary : Float = 1000−name : String

+getName() : String+promote() : void

13

Page 14: Modélisation avec UML

Représenter une classe (2)

Possibilité d’ajouter des valeurs tagguées

Rattachées à un élément qui définit leur portée

Quatre niveau de visibilité

+ pour public

− pour private

# pour protected

~ pour package

Employee{author = Combéfis}

+office : String#salary : Float = 1000−name : String

+getName() : String+promote() : void

14

Page 15: Modélisation avec UML

Attribut

Un attribut est un type primitif simple ou un objet

Peut être une relation vers d’autres objets complexes

Deux formes possibles pour un attribut

Attribut déclaré directement dans la classe

Relation entre classes

Propriétés de multiplicité, d’unicité et d’ordre

Définissable pour les deux formes d’attribut

visibilité nom : type [multiplicité] = défaut {propriétés}

15

Page 16: Modélisation avec UML

Visibilité

Quatre niveaux de visibilité

Visibilité publique (public) rend l’élément visible de partout

Visibilité privée (private) restreint la visibilité à la classe

Visibilité protégée (protected) utilisée avec l’héritage

Publique pour les sous-classes et privée ailleurs

Visibilité package rend l’élément visible dans le package

Applicable pour les attributs et les pour les opérations

16

Page 17: Modélisation avec UML

Multiplicité

La multiplicité définit le nombre d’instances de l’attribut

Pour chaque instance de la classe principale créée

Simple entier, un liste d’entier, un intervalle d’entiers

Multiplicité par défaut est de 1, valeur non bornée avec *

Flight−name : String−passengers : Person[0..400]−operator : Airline−partners : Airline[*]−pilots : Person[2]

17

Page 18: Modélisation avec UML

Propriété des attributs

Imposer un stockage séquentiel des éléments avec {ordered}

Pour les attributs multiples uniquement, non ordonné par défaut

Autoriser les doublons avec {notunique}

Pour les attributs multiples uniquement, {unique} par défaut

Figer la valeur d’un attribut avec {readOnly}

La valeur de l’attribut ne peut être changée une fois initialisée

18

Page 19: Modélisation avec UML

Contrainte des attributs

Ajout de restriction sur les éléments avec des contraintes

Expression booléenne derrière l’élément ou comme note

On peut ajouter une étiquette à la contrainte

Qu’on place devant l’expression booléenne, suivie de :

Car−length : Float {length > 0}−seating : Int−color : Color

iscar : 0 < seating<= 7

19

Page 20: Modélisation avec UML

Attribut dérivé

Attribut dérivé ne doit pas être dans l’implémentation

Il peut être calculé à partir d’autres

Peut néanmoins être présent pour raison d’efficacité

Signalé en préfixant le nom avec un slash ( / )

Pair−x : Float−y : Float−/ordered : Boolean

+getX() : Float+getY() : Float+isOrdered() : Boolean

ordered == trueif x <= y, andfalse otherwise

20

Page 21: Modélisation avec UML

Relation

Représentation d’un attribut par une relation

Illustre comment l’attribut est en lien avec la classe

Une classe qui contient l’attribut et une qui le représente

Lien entre les classes, avec le nom de l’attribut

Mêmes informations que pour attribut déclaré dans la classe

Mais placées à différents endroits

School−name : String+getName() : String

1−director

Person−firstname : String−lastname : String−birthdate : Date

+getName() : String+getBirthdate() : Date

21

Page 22: Modélisation avec UML

Opération

Une opération permet d’invoquer un comportement

Le comportement agit sur une instance de la classe

UML fait la distinction entre opération et méthode

Opération spécifie comment invoquer un comportement

Méthode implémente l’opération

visibilité nom (paramètres) : type {propriétés}

22

Page 23: Modélisation avec UML

Paramètre

Un paramètre d’une opération se définit comme un attribut

Nom, type, multiplicité, valeur par défaut et propriétés

La direction décrit comment un paramètre est utilisé

in : passé à l’opération

inout : passé par l’appelant, modifiable par l’opération

out : modifié par l’opération

return : passé par l’appelant, renvoyé par l’opération

direction nom : type [multiplicité] = défaut {propriétés}

23

Page 24: Modélisation avec UML

Contrainte des opérations (1)

Association de contraintes sur les opérations

Contrat que l’implémentation de l’opération doit respecter

Définition des contraintes comme pour les attributs

Quelques contraintes spéciales (étiquettes prédéfinies)

Precondition doivent être satisfaite avant l’appel

Postcondition seront satisfaites après l’appel

bodyCondition contraint la valeur de retour

24

Page 25: Modélisation avec UML

Contrainte des opérations (2)

Shape−position : Coord−color : Color

+nbSides() : Int+draw(c : Canvas) : void

Square+nbSides() : Int+draw(c : Canvas) : void

bodyCondition :Int > 0

bodyCondition :Int == 4

Precondition :c.contains(position)

Postcondition : theshape has been drawnin the specified canvas

25

Page 26: Modélisation avec UML

Effet de bord

Indiquer que l’objet n’est pas modifié avec {query}

L’implémentation ne peut pas modifier l’état de l’objet

L’appel de l’opération ne provoque aucun effet de bord

Person−firstname : String−lastname : String

+getName() : String {query}

26

Page 27: Modélisation avec UML

Classe abstraite

Classe abstraite contient des opérations sans implémentation

Peut ne contenir aucune opération

Impossible de créer une instance d’une classe abstraite

Étendue par des classes concrètes

Nom de la classe écrit en italique dans le diagramme UML

Animal+isMammal() : Bool+yell() : void

27

Page 28: Modélisation avec UML

Relation de dépendance

Dépendance lorsqu’une classe utilise une autre (relation uses)

La relation entre les classes n’est pas durable

Quelques exemples

Une opération reçoit un paramètre de type d’une autre classe

Le type de retour d’une opération est d’une autre classe

...

Math ArithmeticException

28

Page 29: Modélisation avec UML

Relation d’association

Association lorsqu’une classe retient une autre (relation has-a)

La relation entre les classes est durable

Les vies des objets ne sont pas dépendantes

Un objet peut être détruit sans que l’autre ne le soit

City Person

Une ville possède unbourgmestre

29

Page 30: Modélisation avec UML

Propriété des associations

On indique la navigabilité avec une flèche sur l’association

Et on peut ajouter une croix pour indiquer la non navigabilité

Le nom d’une association donne son contexte

Utilisation multiplicité lorsque l’association est un attribut

Par défaut, la multiplicité est de 1

Classrooma pour élèves des

1..*× Person

30

Page 31: Modélisation avec UML

Relation d’aggrégation

Représente une association forte (relation owns-a)

Il y a appartenance entre deux classes

On peut indiquer la navigabilité et la multiplicité

Person 1..2 Address

Une personne pos-sède l’adresse de sondomicile légal et éven-tuellement l’adresse dubureau à son travail

31

Page 32: Modélisation avec UML

Relation de composition

Représente une association très forte (relation is-part-of )

Une classe est composée à partir d’autres classes

Les vies des objets composés sont liées à celle du principal

Les objets composés disparaissent en même temps que le principal

List * ListElement

Une liste possède 0, 1ou plusieurs éléments

32

Page 33: Modélisation avec UML

Relation de généralisation

Une classe généralise une autre plus spécifique (relation is-a)

Une classe est construite en dérivant d’une autre

Pas de multiplicité ni de nom sur les relations de généralisation

Animal

SeaHorse

33

Page 34: Modélisation avec UML

Classe d’association

Une classe d’association représente une association complexe

Possède un nom et des attributs

Résultera typiquement en trois classes lors de l’implémentation

Student 1..* * Exam

ExamResult−grade : Int

34

Page 35: Modélisation avec UML

Interface (1)

Une interface a des déclarations de propriétés et méthodes

Représente un contrat qu’une implémentation doit respecter

Deux représentations graphique différentes

Comme une relation ou notation « ball-and-socket »

« interface »Sortable

+isBefore(o : Sortable) : Bool

Person+isBefore(o : Sortable) : Bool

Alphabetizer

35

Page 36: Modélisation avec UML

Interface (2)

Moins de détails sur l’interface

Focus sur la relation entre les classes

L’interface est indiquée sous la « ball »

Et la classe qui dépend de l’interface avec un « socket »

Person Sortable Sortable Alphabetizer

36

Page 37: Modélisation avec UML

Template

Classe paramétrisée reçoit des types en paramètre

Permet d’indiquer un type de classe avec lequel la classe interagit

Plusieurs templates à séparer avec des virgules

On peut ajouter une restriction comme ElemType : Sortable

List−size : Int−elements : ElemType[*]

+size() : Int+get(i : Int) : ElemType+add(e : ElemType) : void

ElemType

37

Page 38: Modélisation avec UML

Binding

Binding à faire en spécifiant un type concret pour le template

Lorsque la classe est utilisée comme attributou dans une relation (composition, généralisation...)

List−size : Int−elements : ElemType[*]

+size() : Int+get(i : Int) : ElemType+add(e : ElemType) : void

ElemType

StudentList

«bind» <ElementType -> Student>

38

Page 39: Modélisation avec UML

Diagramme comportemental

Page 40: Modélisation avec UML

Diagramme d’activité

Capturer l’exécution et le comportement d’un système

Permet de modéliser n’importe quel comportement

Représente le comportement suite aux appels de méthodes

Lorsqu’on modélise un logiciel

Deux éléments de base : activité et action

Une activité est un comportement composé d’actions

40

Page 41: Modélisation avec UML

Activité et action

Activité décomposée en actions, étapes élémentaires

Une action ne peut pas être décomposée

Une activité possède un nom et des paramètres éventuels

Représentation avec un rectangle aux coins arrondis

Retrait d’argentaccount : Account

Demander lemontant

Débiter lecompte

41

Page 42: Modélisation avec UML

Début et fin de l’activité

Nœuds spéciaux pour marquer le début et la fin d’une activité

Point noir pour le début et point noir entouré pour la fin

On peut attacher des pré et postconditions à une activité

À indiquer en haut dans la boite de l’activité

Retrait d’argentaccount : Account

«Precondition» Solde positif«Postcondition» Compte débité

Demander lemontant

Débiter lecompte

42

Page 43: Modélisation avec UML

Pré et postconditions locales

Pré et postconditions locales sur les actions

Ajout de notes sur les actions pour ces conditions

Retrait d’argentaccount : Account

«Precondition» Solde positif«Postcondition» Compte débité

Demander lemontant

Débiter lecompte

«localPostcondition»Le montant demandéest inférieur au solde

43

Page 44: Modélisation avec UML

Arête d’activité

Description du flux d’exécution au sein d’une activité

À l’aide d’arêtes reliant les actions

Les arêtes indiquent les flux de contrôle et de donnée

Les arêtes sont dirigées et peuvent être nommées

Exécution concurrente des actions non liées par des arêtes

Possibilité d’exécution parallèle sur une machine multiprocesseurs

44

Page 45: Modélisation avec UML

Nœud d’activité

Trois différents types de nœuds

Paramètre d’entrée et de sortie pour l’activité

Objet représentant des données complexes

Contrôle pour diriger le flux de contrôle

Les différents nœuds sont reliés par des arêtes d’activité

Par défaut une simple arête dirigée

45

Page 46: Modélisation avec UML

Nœud de paramètre

Une activité reçoit des paramètres et produit des résultats

Nœuds de paramètre placés au bord de l’activité

Nœud de paramètre représenté par un rectangle

Nom ou description des paramètres dans le rectangle

Correction d’un examen

ExamVérificationdes réponses

Encodage despoints Grade

46

Page 47: Modélisation avec UML

Nœud objet (1)

Données qui circulent dans l’activité représentée par des objets

La donnée est transférée entre deux actions

Représente une instance d’une classe transférée entre actions

Production d’un objet par une action et réception par une autre

Découpe d’une pièce

Coupe del’acier Piece

Stockage dela pièce

47

Page 48: Modélisation avec UML

Nœud objet (2)

Notation compacte à l’aide de pins pour les entrées/sorties

On attache le rectangle de l’objet sur l’action

Les pins sont reliés par une arête pour indiquer le transfert

Production d’un objet par une action et réception par une autre

Découpe d’une pièce

Coupe del’acier

Piece Piece Stockage dela pièce

48

Page 49: Modélisation avec UML

Pin d’exception

Pin d’exception indique une condition d’erreur

Ajout d’un triangle près de la pin

Permet plusieurs chemins possibles en sortant d’une action

Découpe d’une pièce

Coupe del’acier

Report

Piece Piece Stockage dela pièce

Prévenir lamaintenance

49

Page 50: Modélisation avec UML

Nœud de contrôle (1)

Contrôle du flux d’exécution à l’aide de nœuds spéciaux

Prise de décision, concurrence et synchronisation

Plusieurs types de nœud de contrôle

Début indique le point d’entrée de l’activité

Décision permet plusieurs chemins selon une condition

Fork pour lancer des actions concurrentes

Final indique le point de sortie de l’activité

50

Page 51: Modélisation avec UML

Nœud de décision

Choix d’un chemin de sortie en fonction d’une condition

Gardes sur les arêtes et éventuellement entrée de condition

Nœud représenté par un diamant et gardes entre crochets

Connexion d’un utilisateur

Vérificationidentifiants

[true]

[false]Montrer paged’accueil

Montrer page100e visiteur

«decisionInput»numLogins == 100

51

Page 52: Modélisation avec UML

Nœud de fusion

Fusion de plusieurs actions vers une autre

Rend disponible à un nœuds les informations de plusieurs autres

Il ne s’agit pas d’une synchronisation d’actions

Engagement d’un employé

Préparationoffre d’emploi

Vérification candi-dature spontanée

Recruter can-didat

52

Page 53: Modélisation avec UML

Nœud de fork

Exécution concurrente de plusieurs actions

Les données sont dupliquées pour toutes les arêtes sortantes

Une arête entrante et plusieurs sortantes

Chaque branche se finit avec un nœud de fin de branche

Engagement d’un employé

Acceptationde l’employé

Créationcompte e-mail

Affectationbureau

53

Page 54: Modélisation avec UML

Nœud de jointure

Jointure de plusieurs actions avant de poursuivre une autre

Attend que les actions concurrentes soient toutes terminées

Plusieurs arêtes entrantes et une arête sortante

Permet de rassembler des branches en une seule

Préparation d’un plat

Servirle plat

Cuire laviande

Cuire lespatates

54

Page 55: Modélisation avec UML

Crédits

https://www.flickr.com/photos/mazzuk/1481457389https://en.wikipedia.org/wiki/File:UML_logo.gifhttps://www.flickr.com/photos/colinsd40/15183445332https://www.flickr.com/photos/marcwathieu/4074527074

55


Recommended