SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
PO3T Programmation orientée objet
Séance 5
Modélisation
avec UML
Sébastien Combéfis, Quentin Lurkin lundi 26 octobre 2015
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons
Attribution – 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 == true
if x <= y, and
false 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 : the
shape has been drawn
in 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 un
bourgmestre
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
Classroom
a 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 son
domicile légal et éven-
tuellement l’adresse du
bureau à 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, 1
ou 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 attribut
ou 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’argent
account : Account
Demander le
montant
Débiter le
compte
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’argent
account : Account
«Precondition» Solde positif
«Postcondition» Compte débité
Demander le
montant
Débiter le
compte
42
Pré et postconditions locales
Pré et postconditions locales sur les actions
Ajout de notes sur les actions pour ces conditions
Retrait d’argent
account : Account
«Precondition» Solde positif
«Postcondition» Compte débité
Demander le
montant
Débiter le
compte
«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
Exam
Vérification
des réponses
Encodage des
points 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 de
l’acier Piece
Stockage de
la 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 de
l’acier
Piece Piece Stockage de
la 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 de
l’acier
∆
Report
Piece Piece Stockage de
la pièce
Prévenir la
maintenance
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érification
identifiants
[true]
[false]
Montrer page
d’accueil
Montrer page
100e 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éparation
offre 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é
Acceptation
de l’employé
Création
compte e-mail
Affectation
bureau
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
Servir
le plat
Cuire la
viande
Cuire les
patates
54
Crédits
https://www.flickr.com/photos/mazzuk/1481457389
https://en.wikipedia.org/wiki/File:UML_logo.gif
https://www.flickr.com/photos/colinsd40/15183445332
https://www.flickr.com/photos/marcwathieu/4074527074
55

Contenu connexe

Tendances

Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27megaplanet20
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
Présentation cours UML.pptx
Présentation  cours UML.pptxPrésentation  cours UML.pptx
Présentation cours UML.pptxPrinceLankoand
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objetAmir Souissi
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 
Introduction aux systèmes répartis
Introduction aux systèmes répartisIntroduction aux systèmes répartis
Introduction aux systèmes répartisHeithem Abbes
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Faycel Chaoua
 
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeENSET, Université Hassan II Casablanca
 
Chp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'UtilisationChp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'UtilisationLilia Sfaxi
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduceAmal Abid
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseLilia Sfaxi
 
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-TotalCoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-TotalAhmed Mekkaoui
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 

Tendances (20)

Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27
 
Uml
UmlUml
Uml
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Middleware
MiddlewareMiddleware
Middleware
 
Présentation cours UML.pptx
Présentation  cours UML.pptxPrésentation  cours UML.pptx
Présentation cours UML.pptx
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Igl cours 3 - introduction à uml
Igl   cours 3 - introduction à umlIgl   cours 3 - introduction à uml
Igl cours 3 - introduction à uml
 
Introduction aux systèmes répartis
Introduction aux systèmes répartisIntroduction aux systèmes répartis
Introduction aux systèmes répartis
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2
 
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
 
Chp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'UtilisationChp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'Utilisation
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduce
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-Eclipse
 
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-TotalCoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 

En vedette

Introduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelIntroduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSECAM Brussels Engineering School
 
la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...najwa sabouk
 
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-ÉtoileDe la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-ÉtoileECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésECAM Brussels Engineering School
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséDécouvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséECAM Brussels Engineering School
 

En vedette (20)

UKO-JAVA1001-slides
UKO-JAVA1001-slidesUKO-JAVA1001-slides
UKO-JAVA1001-slides
 
Type abstrait de données
Type abstrait de donnéesType abstrait de données
Type abstrait de données
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
 
Comment Internet fonctionne-t-il ?
Comment Internet fonctionne-t-il ?Comment Internet fonctionne-t-il ?
Comment Internet fonctionne-t-il ?
 
Introduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelIntroduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnel
 
Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communication
 
Johnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScriptJohnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScript
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
 
la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...la contribution de la résilience organisationnelle et l'agilité organisationn...
la contribution de la résilience organisationnelle et l'agilité organisationn...
 
Python avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codagePython avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codage
 
Développement informatique : Programmation concurrente
Développement informatique : Programmation concurrenteDéveloppement informatique : Programmation concurrente
Développement informatique : Programmation concurrente
 
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-ÉtoileDe la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséDécouvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
 
Tests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnitTests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnit
 
Développement informatique : Programmation graphique
Développement informatique : Programmation graphiqueDéveloppement informatique : Programmation graphique
Développement informatique : Programmation graphique
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
 

Similaire à Modélisation avec UML

Similaire à Modélisation avec UML (20)

Design patterns
Design patternsDesign patterns
Design patterns
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
UML.pptx
UML.pptxUML.pptx
UML.pptx
 
Diagramme de Classe
Diagramme de ClasseDiagramme de Classe
Diagramme de Classe
 
Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)
 
POO
POOPOO
POO
 
Csharp2014
Csharp2014Csharp2014
Csharp2014
 
Diagramme de-composants152
Diagramme de-composants152Diagramme de-composants152
Diagramme de-composants152
 
Support de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdfSupport de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdf
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinter
 
Patrons de creation
Patrons de creationPatrons de creation
Patrons de creation
 
Java cours n° 2 - classe-objet-constructeur
Java   cours n° 2 - classe-objet-constructeurJava   cours n° 2 - classe-objet-constructeur
Java cours n° 2 - classe-objet-constructeur
 
Contraintes uml
Contraintes umlContraintes uml
Contraintes uml
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classe
 
System c eniso_jan_fev_07
System c eniso_jan_fev_07System c eniso_jan_fev_07
System c eniso_jan_fev_07
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
UML Diagrammes Statiques
UML Diagrammes StatiquesUML Diagrammes Statiques
UML Diagrammes Statiques
 
Uml
UmlUml
Uml
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
Memo java
Memo javaMemo java
Memo java
 

Plus de ECAM Brussels Engineering School

Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéECAM Brussels Engineering School
 
Laboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetLaboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetECAM Brussels Engineering School
 
Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...ECAM Brussels Engineering School
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleECAM Brussels Engineering School
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...ECAM Brussels Engineering School
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreECAM Brussels Engineering School
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresECAM Brussels Engineering School
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...ECAM Brussels Engineering School
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionECAM Brussels Engineering School
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
 

Plus de ECAM Brussels Engineering School (16)

Introduction à la formation Digitalent
Introduction à la formation DigitalentIntroduction à la formation Digitalent
Introduction à la formation Digitalent
 
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
 
Laboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetLaboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projet
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
 
Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielle
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulières
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
 

Modélisation avec UML

  • 1. PO3T Programmation orientée objet Séance 5 Modélisation avec UML Sébastien Combéfis, Quentin Lurkin lundi 26 octobre 2015
  • 2. Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
  • 3. 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
  • 4. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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 == true if x <= y, and false otherwise 20
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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 : the shape has been drawn in the specified canvas 25
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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 un bourgmestre 29
  • 30. 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 Classroom a pour élèves des 1..* × Person 30
  • 31. 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 son domicile légal et éven- tuellement l’adresse du bureau à son travail 31
  • 32. 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, 1 ou plusieurs éléments 32
  • 33. 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
  • 34. 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
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. Binding Binding à faire en spécifiant un type concret pour le template Lorsque la classe est utilisée comme attribut ou 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
  • 40. 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
  • 41. 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’argent account : Account Demander le montant Débiter le compte 41
  • 42. 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’argent account : Account «Precondition» Solde positif «Postcondition» Compte débité Demander le montant Débiter le compte 42
  • 43. Pré et postconditions locales Pré et postconditions locales sur les actions Ajout de notes sur les actions pour ces conditions Retrait d’argent account : Account «Precondition» Solde positif «Postcondition» Compte débité Demander le montant Débiter le compte «localPostcondition» Le montant demandé est inférieur au solde 43
  • 44. 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
  • 45. 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
  • 46. 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 Exam Vérification des réponses Encodage des points Grade 46
  • 47. 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 de l’acier Piece Stockage de la pièce 47
  • 48. 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 de l’acier Piece Piece Stockage de la pièce 48
  • 49. 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 de l’acier ∆ Report Piece Piece Stockage de la pièce Prévenir la maintenance 49
  • 50. 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
  • 51. 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érification identifiants [true] [false] Montrer page d’accueil Montrer page 100e visiteur «decisionInput» numLogins == 100 51
  • 52. 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éparation offre d’emploi Vérification candi- dature spontanée Recruter can- didat 52
  • 53. 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é Acceptation de l’employé Création compte e-mail Affectation bureau 53
  • 54. 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 Servir le plat Cuire la viande Cuire les patates 54