Cours GL&UML-Ch2-Modélisation UML-DCL-DO
Cours GL&UML-Ch2-Modélisation UML-DCL-DO
Cours GL&UML-Ch2-Modélisation UML-DCL-DO
Support de cours
Génie Logiciel et Modélisation UML
▪ Diagramme de classes
▪ Diagramme d’objets
▪ Diagramme de séquences
▪ Diagramme d’activité
Pour faire face à la complexité croissante des systèmes d’information, de nouvelles méthodes
et outils ont été créées. La principale avancée des quinze dernières années réside dans la
programmation orientée objet (P.O.O.)
→ Face à ce nouveau mode de programmation, les méthodes de modélisation classique (telle
MERISE) ont rapidement montré certaines limites et ont dû s’adapter.De très nombreuses
méthodes ont également vu le jour comme Booch, OMT …
→ Dans ce contexte et devant le foisonnement de nouvelles méthodes de conception «orientée
objet ».
→ Simula, premier langage de programmation à implémenter le concept de type abstrait à
l'aide de classes, date de 1967 ! En 1976 déjà, Smalltalk implémente les concepts
fondateurs de l'approche objet : encapsulation, agrégation, héritage.
Les premiers compilateurs C++ datent du début des années 80 et de nombreux langages
orientés objets "académiques" ont étayé les concepts objets (Eiffel, Objective C, Loops...). Il
y donc déjà longtemps que l'approche objet est devenue une réalité.
Connaître C++ ou Java n'est donc pas une fin en soi, il faut aussi savoir les utiliser à bon
escient. La question est donc de savoir : comment comparer deux solutions de découpe objet
d'un système si l'on ne dispose pas d'un moyen de représentation adéquat ? Il est très simple
de décrire le résultat d'une analyse fonctionnelle, mais qu'en est-il d'une découpe objet ?«
→ Pour remédier à ces inconvénients majeurs de l'approche objet, il est nécessaire de :
1. un langage (pour s'exprimer clairement à l'aide des concepts objets) Le langage doit
permettre de représenter des concepts abstraits (graphiquement par exemple), limiter les
ambiguïtés (parler un langage commun, au vocabulaire précis, indépendant des langages
orientés objet), faciliter l'analyse (simplifier la comparaison et l'évaluation de solutions).
2. Une démarche d’analyse et de conception objet est nécessaire afin de ne pas effectuer
une analyse fonctionnelle et se contenter d'une implémentation objet, mais penser objet
dès le départ, définir les vues qui permettent de décrire tous les aspects d'un système avec
des concepts objets.
Il faut donc disposer d'un outil qui donne une dimension méthodologique à l'approche
objet et qui permette de mieux maîtriser sa richesse.
C’est cette démarche antérieure à l’écriture que l’on appelle modélisation ; son produit
est un modèle
Un modèle est une représentation abstraite de la réalité qui exclut certains détails du
monde réel.
• Il permet de réduire la complexité d'un phénomène en éliminant les détails qui
n’influencent pas son comportement de manière significative.
• Il reflète ce que le concepteur considère comme important pour la compréhension et la
prédiction du phénomène modélisé. Les limites du modèle dépendent des objectifs
visés par sa création.
→ Pourquoi modéliser ?
Un modèle est une simplification de la réalité qui permet de mieux comprendre le système à
développer. Il permet de :
La Conception Orientée Objet (COO) est la méthode qui conduit à des architectures
logicielles fondées sur les objets du système, plutôt que sur une décomposition
fonctionnelle.
C'est la structure du système lui donne sa forme.
On peut partir des objets du domaine (briques de base) et remonter vers le système global :
approche ascendante
• Accent mis sur ce qu’est le système (ses composants)
• Identification des composants du système : les objets
• Fonction = collaboration entre objets
• Les fonctions sont indépendantes de la structure
• Un objet intègre à la fois des données et des opérations
Concepts Orientés-Objet :
▪ Abstraction
▪ Encapsulation
▪ Héritage
▪ Polymorphisme
▪ objets, classes, événements, états
o Analyse OO :
– Trouver les objets
– Les organiser (les classer et les regrouper)
– Décrire leurs interactions (scénarios, interfaces)
– Définir leurs opérations (d’après les interfaces nécessaires)
– Définir l’intérieur des objets (informations stockées)
o Programmation OO :
– On peut avoir analyse OO et programmation non OO
– Le style de programmation peut être OO même avec un langage classique
• Test OO : le test peut être considéré lui-même comme un objet
❑ 1993-1994: les auteurs de Booch, OOSE et OMT ( les méthodes Booch’93 et OMT-2 )
ont décidé de créer un langage de modélisation unifié avec pour objectifs:
• Modéliser un système des concepts à l'exécutable, en utilisant les techniques orientée
objet
• Réduire la complexité de la modélisation
• Utilisable par l'homme comme la machine
• Représentations graphiques mais disposant de qualités formelles suffisantes pour être
traduites automatiquement en code source
❑ En 1994, plus de 50 méthodes orientées objet, telles que Fusion, Shlaer-Mellor, ROOM,
Classe-Relation, Wirfs-Brock, Coad-Yourdon, MOSES, Syntropy, BOOM, OOSD,
OSA, BON, Catalysis, COMMA, HOOD, Ooram, DOORS... étaient utilisées.
❑ Naissance d’UML
• 1993-1994: Les 2 méthodes ( Booch’93 et OMT-2 ) deviennent leaders sur le
marché, elles sont de plus en plus proches
• Octobre 1994
o J. Rumbaugh (OMT) rejoint G. Booch chez Rational
o Annonce de l’unification des deux méthodes
• Octobre 1995: Méthode Unifiée v0.8
• Fin 1995: le fondateur d ’Objectory, Ivar Jacoson, rejoint à son tour Rational
• Janvier 97 : Soumission à l’OMG de la version UML 1.0
→ Historique
→ qu’est-ce qu’UML ?
UML: norme qui définit les diagrammes et les conventions à utiliser lors de la
construction de modèles décrivant la structure et le comportement d’un logiciel.
o Les modèles sont des diagrammes constitués d’éléments graphiques et de texte.
o UML n’est pas une méthode, mais un langage.
Les diagrammes UML peuvent être regroupés sous forme d’un diagramme de classes en
trois catégories principales en fonction de leur objectif et de ce qu'ils représentent dans la
modélisation d'un système logiciel:
Un diagramme UML est une représentation graphique, qui s'intéresse à un aspect précis
du modèle.
• Chaque type de diagramme UML possède une structure (les types des éléments
de modélisation qui le composent sont prédéfinis).
• Un type de diagramme UML offre toujours la même vue d'un système (il
véhicule une sémantique précise).
• Combinés, les différents types de diagrammes UML offrent une vue complète
des aspects statiques et dynamiques d'un système.
• le système
• les acteurs
• les cas d'utilisation
❑ Il contient: des descriptions textuelles
→ Le système
Nom de système
→ Les acteurs
Un acteurs est une entité extérieure au système modélisé, et qui interagit directement avec
lui. Exemple: un client, un guichetier, un responsable maintenance, Une même personne
peut jouer plusieurs rôles.
Un acteur exécute un ou plusieurs cas d'utilisation, et est représenté par:
• un petit bonhomme (stick man) avec son nom en dessous
• par un rectangle contenant le mot-clé << actor>> avec son nom (Un acteur non-
Humain)
• Par un mélange de ces 2 représentations
« actor »
Nom de l’acteur
→ Les acteurs
Attention
Un acteur correspond à un rôle, pas à une personne physique.
→ Les acteurs
❑ Les acteurs secondaires sont sollicités par le système, tandis que le plus souvent, ce
sont les acteurs principaux qui prennent l'initiative des interactions.
En général, les acteurs secondaires représentent d'autres systèmes informatiques avec
lesquels le système développé est interconnecté.
Exemple:
❑ Généralisation : le cas A est une généralisation du cas B (B est une sorte de A).
→ Généralisation
Exemple:
• Un virement est un cas particulier de paiement.
• Un virement est une sorte de paiement.
• La flèche pointe vers l'élément général.
• Le diagramme de cas d'utilisation décrit les grandes fonctions d'un système du point de
vue des acteurs, mais n'expose pas de façon détaillée le dialogue entre les acteurs et les cas
d'utilisation.
• Un simple nom est tout à fait insuffisant pour décrire un cas d'utilisation.
• Chaque cas d'utilisation doit être documenté pour qu'il n'y ait aucune ambiguïté
concernant son déroulement et ce qu'il recouvre précisément.
❑ Description textuelle
Une description textuelle d’un cas d’utilisation se compose de trois parties : identification,
description des scénarios et exigence non fonctionnelle
Exemple
Nous disposons des cas d'utilisation suivants :
1. Passer une commande
2. Passer une commande urgente
3. Suivre une commande
4. Valider l'utilisateur
5. Expédier commande totale ou partielle
• Le suivi de la commande englobe l'ensemble du processus, depuis la commande initiale
jusqu'à l'expédition.
• Cependant, il peut arriver que certaines commandes passées ne soient pas expédiées.
• Il convient de noter que passer une commande urgente est un cas particulier de passer
une commande.
• Pour passer une commande, il est impératif de valider l'utilisateur.
Exemple
Exercice 1
Exercice 2
• Les diagrammes de cas d'utilisation modélisent à QUOI sert le système : le système est
composé d'objets qui interagissent entre eux et avec les acteurs pour réaliser ces cas
d'utilisation.
• Concepts et instances
Exemple:
- Concept : Stylo
- Instance : le stylo que vous utilisez à ce moment précis est une instance du concept
stylo: il a sa propre forme, sa propre couleur, son propre niveau d'usure, etc.
• Une classe est une description abstraite d’un ensemble d’objets du domaine de
l’application : elle définit leur structure, leur comportement et leurs relations
• Une classe représente la description d’un ensemble d’objets possédant les mêmes
caractéristiques : elle spécifie la manière dont tous les objets de même type seront
décrits (désignation, label, auteur, etc).
• Un lien est une instance d'association. Il représente la relation entre deux ou plusieurs
entités.
→ Représentation
Le diagramme de classes met en œuvre des classes, contenant des attributs et des
opérations, et reliées par des associations ou des généralisations.
❑ Classe
• Une opération est la spécification d'une méthode (sa signature) indépendamment de son
implémentation.
• UML 2 autorise également la définition des opérations dans n'importe quel langage
donné.
Exemples de méthodes pour l'opération fact(n:int):int :
❑ Attributs de classe
• Par défaut, les valeurs des attributs définis dans une classe diffèrent d'un objet à un
autre. Parfois, il est nécessaire de définir un attribut de classe qui garde une valeur
unique et partagée par toutes les instances.
• Graphiquement, un attribut de classe (static) est souligné
❑ Opérations de classe
• Similaires aux attributs de classe
• Les opérations de classe sont des propriétés de la classe, et non de ses instances.
• Contrairement aux objets de la classe, elles n'ont pas accès aux attributs des
instances de la classe.
• Les opérations de classe représentent généralement les comportements ou les
actions que les objets de la classe peuvent effectuer.
❑ Notation complète
• Une association représente une relation sémantique entre les objets d'une classe.
l'abstraction.
1. Association
• Une association est une relation entre deux classes qui décrit les connexions structurelles
entre leurs instances.
• Une association indique donc qu’il peut y avoir des liens entre des instances des classes
associées.
Exemple:
1. Association
Les propriétés d'une association entre deux classes comprennent plusieurs éléments
paramétrables :
• Nom de l’association : Une association peut être nommée. Le nom est situé près de la
terminaison de l'association. Cependant, ce nom est facultatif.
• Nom de rôle: indication sur la participation de la classe à l’association
Ces propriétés sont essentielles pour définir correctement l'association entre les classes dans
un modèle UML.
1. Association
Exemple : un article n'appartient qu'à une seule catégorie (1) ; une catégorie concerne plus de
0 articles, sans maximum (*).
• La syntaxe est :
MultMin .. MultMax
• * à la place de MultMax signie plusieurs sans préciser de nombre
• n..n se note aussi n , et 0..* se note *
1. Association
1. Association
c) Association Binaire
• Dans une association binaire la multiplicité sur la terminaison cible contraint le nombre
d'objets de la classe cible pouvant être associés à un seul objet donné de la classe source
(la classe de l'autre terminaison de l'association).
• Une association binaire est matérialisée par un trait plein entre les classes associées.
• Elle peut être ornée d'un nom, avec éventuellement une précision du sens de lecture
(▸ou◂).
• Quand les deux extrémités de l'association pointent vers la même classe, l'association est
dite réflexive.
1. Association
c) Association Binaire
1. Association
c) Association Binaire
1. Association
e) Association n-aire
• Dans une association n-aire, la multiplicité apparaissant sur le lien de chaque classe
s'applique sur une instance de chacune des classes, à l'exclusion de la classe-association et
de la classe considérée.
• Une association n-aire lie plus de deux classes.
• On représente une association n-aire par un grand losange avec un chemin partant vers
chaque classe participante. Le nom de l'association, le cas échéant, apparaît à proximité du
losange.
1. Association
e) Association n-aire
Exemple
1. Association
d) Association Réflexive
• Dans ce type d'association, les deux extrémités de l'association pointent vers la même
classe. Cela signifie qu'une classe est associée à elle-même.
• L'association la plus utilisée est l'association binaire (reliant deux classes).
• Dans les associations réflexives, les rôles des classes associées sont souvent obligatoires.
Cela signifie qu'une instance de la classe doit être associée à au moins une autre instance
de la même classe.
1. Association
d) Association Réflexive
Exemple: Association réflexive n-aire
1. Association
f) Classe- Association
• Une association peut être raffinée et avoir ses propres attributs, qui ne sont disponibles
dans aucune des classes qu'elle lie.
• Comme, dans le modèle objet, seules les classes peuvent avoir des attributs, cette
association devient alors une classe appelée classe-association
• Une classe-association possède les caractéristiques des associations et des classes : elle
se connecte à deux ou plusieurs classes et possède également des attributs et des
opérations.
1. Association
f) Classe- Association
Exemple
• l'association Emploie entre une société et une personne possède comme propriétés le salaire et la date
d'embauche.
• En effet, ces deux propriétés n'appartiennent ni à la société, qui peut employer plusieurs personnes,
ni aux personnes, qui peuvent avoir plusieurs emplois.
• Il s'agit donc bien de propriétés de l'association Emploie. Les associations ne pouvant posséder de
propriété, il faut introduire un nouveau concept pour modéliser cette situation : celui de classe-
association.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 74
Diagramme de Classes
1. Association
g) Association dérivée
• Une association dérivée est conditionnée ou peut être déduite à partir d'autres autres
associations. On utilise également le symbole « / ».
a– Contrainte de partition
• Elle indique que toutes les instances d’une classe correspondent à une et une seule
instance des classes liées.
→ Toutes les sociétés sont soit clientes, soit considérées comme des prospects
b– Contrainte d’exclusion
Elle permet de préciser qu’une instance d’association exclut une autre instance.
c– Contrainte de totalité
• Toutes les instances d’une classe correspondent au moins à une des instances des classes
liées.
→Toute société est au moins partenaire ou client privilégiée. Et elle peut être les 2 à la
fois.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 78
Diagramme de Classes
• Elle permet de préciser qu’une collection est incluse dans une autre collection. (la flèche
de la relation de dépendance indique le sens de la contrainte).
• Une instance de la partie n'appartient jamais à plus d'une instance de l'élément composite
❑ Composition et agrégation
• Lorsqu'il existe une relation du tout à ses parties, nous parlons d'agrégation ou de
composition.
• La composition également appelée agrégation composite ou agrégation forte.
• Pour décider entre l'usage de la composition et de l'agrégation, il est essentiel de se poser
les questions suivantes :
1. Est-ce que la destruction de l'objet composite (le tout) entraîne nécessairement la
destruction des objets composants (les parties) ?
2. Lorsque le composite est copié, doit-on également copier les composants ou peut-
on les réutiliser ?
Si les réponses à ces deux questions sont affirmatives, alors l'utilisation de la composition
est appropriée.
❑ Composition et agrégation
Exemple
4. Relation d’héritage
• L'héritage une relation de spécialisation/généralisation.
• Les éléments spécialisés héritent de la structure et du comportement des éléments plus
généraux (attributs et opérations)
Exemple :
• La classe enfant possède toutes les propriétés de
ses classes parents (attributs et opérations)
• La classe enfant est la classe spécialisée (ici
Livre)
• La classe parent est la classe générale (ici
Article)
• Toutefois, elle n'a pas accès aux propriétés
privées.
❑ Les Interfaces
• Le rôle d'une interface est de regrouper un ensemble d'opérations assurant un service
cohérent offert par un classeur et une classe en particulier.
• Une interface est dénie comme une classe, avec les mêmes compartiments. On ajoute le
stéréotype « interface » avant le nom de l'interface.
• On utilise une relation de type réalisation entre une interface et une classe qui
implémente.
• Les classes implémentant une interface
doivent implémenter toutes les opérations
décrites dans l'interface
❑ Les Interfaces
Exemple
1er notation
2ème notation
❑ Classe paramétrée
• Pour définir une classe générique et paramétrable en fonction de valeurs et/ou de types :
Définition d'une classe paramétrée par des éléments spécifiés dans un rectangle en
pointillés
• Utilisation d'une dépendance stéréotypée «bind » pour définir des classes en fonction
de la classe paramétrée.
• Java : généricité
• C++ : templates
Exercice 3
• Une personne est caractérisée par son nom, son prénom, son sexe et son âge.
• Les objets de classe Personne doivent pouvoir calculer leurs revenus et leurs
charges.
• Les attributs de la classe sont privés, le nom, le prénom ainsi que l'âge de la
personne doivent être accessibles par des opérations publiques.
1. Donnez une représentation UML de la classe Personne, en remplissant tous les
compartiments adéquats.
• Deux types de revenus sont envisagés : d'une part le salaire et d'autre part
toutes les autres sources de revenus. Les deux revenus sont représentés par
des nombres réels (float).
• Pour calculer les charges globales, on applique un coefficient fixe de 20% sur
les salaires et un coefficient de 15% sur les autres revenus.
2. Enrichissez la représentation précédente pour prendre en compte ces nouveaux
éléments.
Exercice 4
Pour chacun des énoncés suivants, donnez un diagramme de classes :
2. Les personnes peuvent être associées à des universités en tant qu'étudiants aussi bien
qu’en tant que professeurs.
3. Un rectangle a deux sommets qui sont des points. On construit un rectangle à partir
des coordonnées de deux points. Il est possible de calculer sa surface et son périmètre,
ou encore de le translater.
4. Les cinémas sont composés de plusieurs salles. Les films sont projetés dans des salles.
Les projections correspondantes ont lieu à chacune à une heure déterminée.
→ Définitions
o Exprimer une exception (en modélisant des cas particuliers, des connaissances non
généralisables. . . )
- En revanche, les noms des objets sont soulignés et on peut rajouter son identifiant devant
le nom de sa classe.
Exemple:
- Les valeurs (a) ou l'état (f) d'un objet peuvent être spécifiées.
- Les instances peuvent être anonymes (a, c, d), nommées (b, f), orphelines (e), multiples
(d) ou stéréotypées (g).
D. de classes D. d’objets
→ Les liens
• Un lien se représente comme une association mais s'il a un nom, il est souligné.
Attention
On ne représente pas les
multiplicités qui n'ont aucun
sens au niveau des objets.