SlideShare une entreprise Scribd logo
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

PPSX
diagramme de classe
KEY
Uml classes Par les exemples
PDF
Initiation à UML: Partie 1
PPTX
Introduction aux architectures des SI
PPTX
Chp2 - Diagramme des Cas d'Utilisation
PPTX
Introduction aux systèmes répartis
PPSX
diagramme de séquence UML
PPTX
Chp3 - Diagramme de Classes
diagramme de classe
Uml classes Par les exemples
Initiation à UML: Partie 1
Introduction aux architectures des SI
Chp2 - Diagramme des Cas d'Utilisation
Introduction aux systèmes répartis
diagramme de séquence UML
Chp3 - Diagramme de Classes

Tendances (20)

PDF
TD4-UML-Correction
PPTX
Chp1 - Introduction aux méthodologies de Conception
PDF
Tp3 - UML
PDF
Correction Examen 2016-2017 POO .pdf
PDF
Uml 2 pratique de la modélisation
PDF
Architecture réparties et les services web
PPSX
Igl cours 3 - introduction à uml
PDF
Chp4 - Diagramme de Séquence
PPTX
Architectures 3-tiers (Web)
PPTX
Modélisation uml avec le diagramme de classe
PDF
Cours python
PPTX
Introduction au génie logiciel
PDF
Exercices uml-corrige
PPTX
gestion de magasin vente matériels informatique
PPTX
Chp2 - Vers les Architectures Orientées Services
PDF
UML Part 4- diagrammres de classes et d'objets mansouri
PDF
Architectures distribuées
PDF
Diagramme de Séquence
PDF
TP2-UML-Correction
PPSX
diagramme des cas d'utilisation
TD4-UML-Correction
Chp1 - Introduction aux méthodologies de Conception
Tp3 - UML
Correction Examen 2016-2017 POO .pdf
Uml 2 pratique de la modélisation
Architecture réparties et les services web
Igl cours 3 - introduction à uml
Chp4 - Diagramme de Séquence
Architectures 3-tiers (Web)
Modélisation uml avec le diagramme de classe
Cours python
Introduction au génie logiciel
Exercices uml-corrige
gestion de magasin vente matériels informatique
Chp2 - Vers les Architectures Orientées Services
UML Part 4- diagrammres de classes et d'objets mansouri
Architectures distribuées
Diagramme de Séquence
TP2-UML-Correction
diagramme des cas d'utilisation
Publicité

En vedette (20)

PDF
PDF
Type abstrait de données
PDF
Composition, agrégation et immuabilité
PDF
Comment Internet fonctionne-t-il ?
PDF
Introduction à LaTeX : le système de composition professionnel
PDF
Programmation de systèmes embarqués : Internet of Things : système connecté e...
PDF
Programmation de systèmes embarqués : Bus et périphériques de communication
PDF
Johnny-Five : Robotique et IoT en JavaScript
PDF
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
PDF
la contribution de la résilience organisationnelle et l'agilité organisationn...
PDF
Python avancé : Qualité de code et convention de codage
PDF
Développement informatique : Programmation concurrente
PDF
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
PDF
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
PDF
Python avancé : Ensemble, dictionnaire et base de données
PDF
Python avancé : Lecture et écriture de fichiers
PDF
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
PDF
Tests unitaires : Utilisation de la librairie CUnit
PDF
Développement informatique : Programmation graphique
PDF
Arbre et algorithme de recherche
Type abstrait de données
Composition, agrégation et immuabilité
Comment Internet fonctionne-t-il ?
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 : Bus et périphériques de communication
Johnny-Five : Robotique et IoT en JavaScript
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
la contribution de la résilience organisationnelle et l'agilité organisationn...
Python avancé : Qualité de code et convention de codage
Développement informatique : Programmation concurrente
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Lecture et écriture de fichiers
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Tests unitaires : Utilisation de la librairie CUnit
Développement informatique : Programmation graphique
Arbre et algorithme de recherche
Publicité

Similaire à Modélisation avec UML (20)

PPT
Présentation sur le diagramme de séquence.ppt
PPTX
Phase d'analyse- Modelisation par UML.pptx
PDF
2-UML_Analyse (Architecture)_Unified process.pdf
PDF
Design patterns
PDF
Qualité de code et bonnes pratiques
PDF
Diagramme de Classe
PPT
Generateur de code java (GenJAVA)
PDF
PPTX
Diagramme de-composants152
PDF
Support de cours Conception orientée objets - partie 1.pdf
PPT
Interface collectionsinter
PPT
Patrons de creation
PDF
Java cours n° 2 - classe-objet-constructeur
PPTX
Contraintes uml
PPT
System c eniso_jan_fev_07
PDF
Cours Diagramme de classes 2EME ANNEE.pdf
PDF
Chap 6 : classes et interfaces
PPTX
UML CAI Conception (DSI,IA...) - 2021-2022.pptx
Présentation sur le diagramme de séquence.ppt
Phase d'analyse- Modelisation par UML.pptx
2-UML_Analyse (Architecture)_Unified process.pdf
Design patterns
Qualité de code et bonnes pratiques
Diagramme de Classe
Generateur de code java (GenJAVA)
Diagramme de-composants152
Support de cours Conception orientée objets - partie 1.pdf
Interface collectionsinter
Patrons de creation
Java cours n° 2 - classe-objet-constructeur
Contraintes uml
System c eniso_jan_fev_07
Cours Diagramme de classes 2EME ANNEE.pdf
Chap 6 : classes et interfaces
UML CAI Conception (DSI,IA...) - 2021-2022.pptx

Plus de ECAM Brussels Engineering School (16)

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