Modélisation avec UML

Preview:

Citation preview

PO3T Programmation orientée objet

Séance 5

Modélisationavec UML

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

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

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

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

Modélisation

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

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

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

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

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

Diagramme structurel

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Diagramme comportemental

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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