Vous êtes sur la page 1sur 28

UNIFIED MODELING LANGUAGE (UML) 1.

Introduction UML (Unified Modeling Language) est une mthode de modlisation oriente objet dveloppe en rponse lappel propositions lanc par lOMG (Object Management Group) dans le but de dfinir la notation standard pour la modlisation des applications construites laide dobjets. Elle est hrite de plusieurs autres mthodes telles que OMT (Object Modeling Technique) et OOSE (Object Oriented Software Engineering) et Booch. Les principaux auteurs de la notation UML sont Grady Booch, Ivar Jacobson et Jim Rumbaugh. Elle est utilise pour spcifier un logiciel et/ou pour concevoir un logiciel. Dans la spcification, le modle dcrit les classes et les cas dutilisation vus de lutilisateur final du logiciel. Le modle produit par une conception oriente objet est en gnral une extension du modle issu de la spcification. Il enrichit ce dernier de classes, dites techniques, qui nintressent pas lutilisateur final du logiciel mais seulement ses concepteurs. Il comprend les modles des classes, des tats et dinteraction. UML est galement utilise dans les phases terminales du dveloppement avec les modles de ralisation et de dploiement. UML est une mthode utilisant une reprsentation graphique. Lusage dune reprsentation graphique est un complment excellent celui de reprsentions textuelles. En effet, lune comme lautre sont ambigues mais leur utilisation simultane permet de diminuer les ambiguits de chacune delle. Un dessin permet bien souvent dexprimer clairement ce quun texte exprime difficilement et un bon commentaire permet denrichir une figure. Il est ncessaire de prciser quune mthode telle que UML ne suffit pas produire un dveloppement de logiciel de qualit elle seule. En effet, UML nest quun formalisme, ou plutt un ensemble de formalismes permettant dapprhender un problme ou un domaine et de le modliser, ni plus ni moins. Un formalisme nest quun outil. Le succs du dveloppement du logiciel dpend videmment de la bonne utilisation dune mthode comme UML mais il dpend surtout de la faon dont on utilise cette mthode lintrieur du cycle de dveloppement du logiciel. Dans UML, il existe plusieurs formalismes ou modles : le modle des classes le modle des tats le modle des cas dutilisation le modle dinteraction le modle de ralisation le modle de dploiement Le modle des classes est le plus utile. Cest un formalisme pour reprsenter les concepts usuels de lorient objet. Le modle des tats et le modle dinteraction permettent de reprsenter la dynamique des objets. Le modle des cas dutilisation permet de dcrire les besoins de lutilisateur final du logiciel. Le modle de ralisation et le modle de dploiement, moins importants que les autres modles de UML, ne seront pas dcrits par ce document. Rfrences : Pierre-Alain Muller Modlisation objet avec UML, Eyrolles 1997. Rumbaugh OMT, cours et exercices, Eyrolles.
Bruno Bouzy 14/06/01

Notes de cours UML

Ce document ne prsente que les modles traitant de la technologie objet. Il prsente le modle des classes dans la partie 2, les modles des tats et dinteraction dans la partie 3. Le modle des cas dutilisation est dcrit dans la partie 4. Enfin, la partie 5 effectue un lien possible entre une conception UML et une programmation Java ou C++. 2. Le modle des classes Le modle des classes dUML saisit la structure statique d'un systme en montrant les objets dans le systme, les relations entre les objets, les attributs et les oprations qui caractrisent chaque classe d'objets. C'est le plus important des modles dUML. Il utilise plusieurs types de diagrammes : les diagrammes de classes, les diagrammes dobjets. 2.1. Objets et classes
Objets

Un objet est une entit qui a un sens dans le contexte de l'application. Un objet possde une identit. Instance d'objet -> rfrence une chose prcise Classe d'objets -> rfrence un groupe de choses similaires
Classes

Une classe d'objets dcrit un groupe d'objet ayant des proprits similaires, un comportement commun, des relations communes avec les autres objets. Personne , Socit , Animal , Fentre sont des classes d'objets.

Diagrammes de classes et diagrammes dobjets

Les diagrammes de classes permettent de modliser les classes. Les diagrammes dobjets permettent de modliser les instances. En UML, le mot objet est souvent li la notion dinstance alors quen orient objet usuel, le mot objet est souvent li aux deux notions de classe et dinstance. Dans ce document, nous restons le plus explicite possible en gardant le mot instance. exemple dune classe et dune instance (objet) :
Personne Candice : Personne Bob : Personne

Bruno Bouzy

14/06/01

Notes de cours UML

Personne est une classe. Candice est une instance qui appartient la classe Personne . Bob est une instance dont la classe nest pas prcise. La troisime instance est un objet anonyme dont la classe est prcise mais pas le nom. Les instances et classes sont reprsentes par des rectangles. Les noms des instances et des classes commencent par une majuscule. Un nom de classe est toujours au singulier : pas de S la fin, mme si conceptuellement une classe est un ensemble dinstances. Le nom dune instance est suivi de : et du nom de la classe laquelle elle appartient. Le tout est soulign. Un diagramme de classes ne peut pas contenir plusieurs fois la mme classe. Un rectangle unique correspond chaque classe du diagramme.
Commentaires

Un diagramme UML peut tre prcis laide commentaires. Un commentaire est crit entre accolades. {Ceci est un commentaire} Les commentaires sont utiles pour minimiser les ambiguits des diagrammes.
Attributs

Un attribut est une proprit commune tous les objets dune classe. Par exemple, nomFamille et ge peuvent tre des attributs de la classe Personne . Pour chaque instance dune classe ayant un attribut, linstance possde cet attribut et cet attribut peut prendre une valeur pour une instance d'un objet. Un attribut doit contenir une valeur pure et pas un autre objet. Sinon on prfre utiliser la notion de relation (cf. plus loin). Les attributs sont dfinis dans la 2me partie du rectangle dsignant la classe. On fait suivre le nom de chaque attribut par : et le type de lattribut. Pour dcrire les attributs dune instance, on utilise galement un deuxime rectangle contenant la liste des attributs avec leur valeur. Par exemple, le diagramme ci-dessous montre la classe Personne avec les attributs nomFamille et age et linstance Camille de la classe Personne dont le nom de famille est Claudel et lage est 20 ans.
Camille : Personne nomFamille = Claudel age = 20

Personne nomFamille: String age: int

Bruno Bouzy

14/06/01

Notes de cours UML

Oprations et mthodes

Une opration est associe une classe ; cest une fonction ou une transformation qui peut tre applique aux objets d'une classe. Par exemple, Embaucher , licencier , payer sont des oprations de la classe Socit . Chaque opration possde un objet cible ou instance sur lequel elle s'applique. La mme opration peut s'appliquer sur plusieurs classes d'objets : on dit qu'elle est polymorphe. Une mthode est l'implmentation d'une opration sur une classe. En programmation oriente objet (Java, C++) on parle de mthodes et en spcification et conception orientes objet (OMT, UML), on parle doprations. Une opration peut avoir des paramtres. (de la mme manire quune fonction ou procdure en possde en programmation classique). Quand une opration possde plusieurs mthodes dans plusieurs classes, elles doivent avoir la mme signature. signature : nombre et types des arguments. proprit est un terme gnrique pour dsigner un attribut ou une opration.
Personne nom: String age : int changer-de-travail() changer-d-adresse() ObjetGomtrique couleur : int position : vecteur dplacer (delta: vecteur) selectionner (p: point) : booleen tourner (angle: int)

Sur cet exemple, la classe Personne possde deux oprations ou mthodes : changer-detravail() et changer-d-adresse() sans paramtre ni valeur de retour. La classe ObjetGomtrique possde 3 oprations ou mthodes : la mthode dplacer() possdant le paramtre delta de type vecteur , la mthode slectionner() possdant le paramtre p de type point et retournant une valeur de type booleen , et la mthode tourner() sans paramtre ni valeur de retour. Une requte est une opration qui se contente de calculer une valeur fonctionnelle sans modifier un objet. (par opposition aux oprations qui modifient un ou plusieurs objets). Les attributs de base caractrisent l'objet. Les attributs drivs se calculent partir des attributs de base. En rsum, une classe est reprsente par un rectangle possdant jusqu' 3 zones : NomClasse ListeAttributs ListeMthodes La premire zone est obligatoire alors que les deux suivantes sont optionnelles.
Bruno Bouzy 4 14/06/01

Notes de cours UML

2.2. Liens et associations Les liens permettent d'tablir des relations entre objets (ou instances). Les associations permettent d'tablir des relations entre classes. Un lien est une connexion entre des instances d'objets. Une association dcrit un groupe de liens ayant un sens commun et c'est une connexion entre des classes d'objets. travaille-pour est une association de la classe Personne avec la classe Socit . a-pour-capitale est une association de la classe Pays avec la classe Ville . Pour une association binaire : il existe un rle vers l'avant et un rle inverse. UML permet de spcifier le sens de lecture de lassociation avec les symboles > et <. emploie est le rle inverse de travaille-pour . est-la-capitale-de est le rle inverse de a-pour-capitale
Pays A-pour-capitale> Ville

France : Pays

A-pour-capitale>

Paris : Ville

Une association est souvent implmente sous forme de pointeurs dans les langages de programmation. En UML ou tout autre mthode de modlisation, cette utilisation de pointeurs est interdite et remplace par la notion dassociation. Plus loin, nous verrons comment passer dune association modlise avec une mthode oriente objet (UML, OMT) des attributs pointeurs dun langage orient objet (Java, C++). Une association peut relier une, deux ou plusieurs classes. Dans le cas o elle relie n classes elle est dite n-aire et dans le cas o elle relie deux classes, elle est dite binaire. Le symbole reprsentant une association n-aire est le losange. Il est plac au centre de lassociation ; les n branches de lassociation lont pour origine et ont les n classes de lassociation pour destination.
travaillent-au-sein-dun-en-utilisant
Projet Langage

Personne

Ci-dessus, la figure reprsente une association ternaire exprimant lide que des personnes travaillent au sein dun projet en utilisant un langage . Lutilisation des associations n-aires est souvent trs ambige mais elle sert pour esquisser un modle lorsque la prcision est inutile, par exemple au dbut dune spcifications de besoins. Pour tre plus prcis sur le diagramme ci-dessus, il faut remplacer lassociation par trois associations binaires reliant les 3 classes deux deux.
Multiplicit

Bruno Bouzy

14/06/01

Notes de cours UML

Pour les deux rles dune association binaire, la multiplicit est un ensemble de valeurs indiquant le nombre possible d'instances de la classe destination du rle qui peuvent tre relies une instance de la classe origine du rle. En premire approximation, on la dcrit souvent comme tant un (lintervalle [1,1]) ou plusieurs (lintervalle [0,+[). Il existe donc des associations un--un ou un-a-plusieurs ou plusieurs--plusieurs . La multiplicit est thoriquement un ensemble de valeurs mais en pratique cest souvent un intervalle. Par exemple, lassociation travaille-pour entre la classe Personne et la classe Socit est une association un-a-plusieurs dans le cas o plusieurs personnes travaillent pour une socit donne et une seule socit emploie une personne donne. Lassociation a-pourcapitale est une association binaire un-a-un . "1" signifie un exactement "1..*" signifie de un plusieurs "*" et "0..*" signifient de zro plusieurs "3..5" signifie l'intervalle 3 5 inclus "2, 4, 18" signifie explicitement les valeurs 2, 4, 18 * = plusieurs par dfaut, une ligne simple =

un

La multiplicit est crite du ct de la classe destination du rle. Ne pas se proccuper de la multiplicit trop tt dans le dveloppement. La distinction majeure doit tre faite entre un et plusieurs...
Attributs de lien

Un attribut de lien est une proprit de lien. notation : une bote rattach par une boucle l'association
Fichier Accessible-par utilisateur

permission d'accs

Modliser une association en classe

L'tape suivante est de modliser une association sous forme de classe.


L'agrgation

Lagrgation est une relation compos-composant ou partie de dans laquelle les objets reprsentant les composants d'une chose sont associs un objet reprsentant l'assemblage (ou l'agrgation) entier. L'agrgation est transitive non symtrique.

Bruno Bouzy

14/06/01

Notes de cours UML

L'agrgation est une forme spciale d'association. Le symbole reprsentant lagrgation est le losange. Il est situ ct de la classe compose.
Document Paragraphe Phrase

La figure ci-dessus exprime lide quun document est compos de paragraphes, eux-mmes composs de phrase.
Agrgation & association

L'agrgation est un cas particulier d'association.


Socit travaille-pour Personne Division Service

Agrgation et association
Composition & Agrgation

UML propose la notion de composition. Cette notion est trs proche de celle dagrgation. La composition est une agrgation ralise par valeur. Elle se note avec un rectangle noir.
Muraille Chateau Donjon

Tout se passe comme si les classes composantes taient des attributs de la classe compose.
Chteau monDonjon: Donjon maMuraille: Muraille

En fait cette distinction entre composition et agrgation est intressante lors de la programmation mais rarement lors dune spcification ou dune conception.
Agrgations rcursives

fixe variable : nombre fixe de niveaux mais nombre de parties par niveau variable rcursif : l'agrgat contient directement ou indirectement une instance de la mme sorte que l'agrgat.
Propagation des oprations

Si on effectue une opration sur l'agrgat, cela propage des oprations de copie au niveau des objets parties de l'agrgat.
Bruno Bouzy 7 14/06/01

Notes de cours UML

exemple: Un document est compos de paragraphes. Un paragraphe est compos de caractres. document.copie se propage en paragraphe.copie qui se propage en caractre.copie
Document Paragraphe Caractre copie copie

copie

copie

copie

propagation des oprations

Bruno Bouzy

14/06/01

Notes de cours UML

2.3. Gnralisation, hritage, redfinition


super-classe et sous-classes

La gnralisation est la relation entre une classe et une ou plusieurs versions affines de la classe. On appelle la classe dont on tire les prcisions, la super-classe et les autres classes les sousclasses. La notation utilise pour la gnralisation est le triangle :
Equipement

Pompe

Radiateur

Rservoir

Dans cet exemple, la classe Equipement gnralise les classes Pompe , Radiateur et Reservoir . La relation inverse de la gnralisation est la spcialisation. Dans lexemple, les classes Pompe , Radiateur et Reservoir spcialisent la classe Equipement . La notation utilise pour reprsenter la spcialisation en UML est aussi le triangle. La diffrence entre gnralisation et spcialisation est faible ; ce nest quune question de sens de lecture du diagramme : la gnralisation suit la direction indique par le triangle et la spcialisation, la direction oppose.
Hritage et dfinition de proprits

Si une proprit est dfinie dans la super-classe, la proprit existe alors dans toutes les sousclasses. On dit que la sous-classe hrite des proprits de la super-classe. Par exemple, si on dfinit la mthode fonctionner dans la classe Equipement : Equipement

fonctionner() ; Alors toute instance dune sous-classe, par exemple une pompe, hritera de la mthode fonctionner et pourra donc appeler cette mthode. Gnralisation et hritage sont transitifs travers un nombre arbitraire de niveaux.

Bruno Bouzy

14/06/01

Notes de cours UML

Les notions de anctre et de descendant existent en UML ; elles correspondent aux notions habituelles. Quand une instance utilise une proprit qui nest pas dfinie dans la classe de linstance, le langage objet remonte larbre dhritage depuis la classe de linstance jusqu la premire classe o est dfinie la proprit. La classe dorigine d'une proprit est la classe la plus gnrale o est dfinie la proprit.

Discriminant

Un discriminant correspond un type de gnralisation. Exemple : la classe Vhicule peut tre gnralise par le mode de dplacement (propulsion, moteur essence, nergie musculaire, etc) ou par l'environnement de dplacement (air, eau, terre, etc). Le discriminant qui va de Vhicule Bateau est eau . Lusage veut quune seule proprit doit tre gnralise la fois.
Utilisation de la gnralisation

La gnralisation facilite la modlisation en regroupant ce qui est commun aux classes de ce qui ne l'est pas. L'hritage des oprations aide lors de l'implmentation rutiliser des classes.
Gnralisation complte ou incomplte

Une gnralisation peut tre prcise complte ou incomplte grce un commentaire associ au diagramme. Par exemple, avec le diagramme de gnralisation suivant :
Animal

{Incomplte}
Chien Chat Cheval

le commentaire {Incomplte} plac sous le diagramme exprime lide que des instances de la classe Animal sont des chats, des chiens, des chevaux ou dautres animaux. Par contre, le commentaire {Complte} exprime lide quun animal ne peut tre autre chose quun chat, un chien ou un cheval.
Redfinition des proprits

Une sous-classe peut redfinir une caractristique de la super-classe en dfinissant une proprit portant le mme nom. La nouvelle proprit remplace celle de la super-classe pour les objets de la sous-classe. Une redfinition ne pas changer la signature de la proprit.

Bruno Bouzy

10

14/06/01

Notes de cours UML

Par exemple, si lon dfinit la mthode fonctionner dans la classe Pompe : Pompe

fonctionner() ; Alors cette dfinition est en fait une RE-dfinition car la mthode fonctionner existe dj dans la classe Pompe car elle est hrite de la classe Equipement . La redfinition ne prsente un intrt que si lon veut spcifier quune pompe fonctionne de manire spciale par rapport aux autres quipements.
Agrgation & gnralisation

L'agrgation est diffrente de la gnralisation. Elle met en relation des instances. La gnralisation met en relation des classes. agrgation gnralisation agrgation gnralisation = = = = relation "partie de" relation "sorte de" ou "est un" relation "ET" relation "OU"

Une lampe est faite d'un socle ET d'une ampoule ET d'un abat-jour ET d'un interrupteur ET d'un cble Une lampe est un lampe incandescence OU une lampe ptrole OU une lampe fluorescence

2.4. Classes abstraites, instanciation Une classe abstraite est une classe qui n'a pas d'instances directes. En UML, une classe abstraite est note en italique. Une classe concrte est une classe qui a des instances directes. On appelle aussi une classe concrte, une classe instanciable. Par exemple, la classe Voiture . Une Toyota est une Voiture . Une Citron est une Voiture . Ma Toyota rouge est une instance directe de la classe Toyota . C'est une instance indirecte de la classe Voiture . La classe Toyota est instanciable . La classe Voiture ne lest pas. La classe Voiture est une classe abstraite. La classe Toyota est une classe concrte.
Voiture

Toyota

Citron

Ferrari

Bruno Bouzy

11

14/06/01

Notes de cours UML

Linstanciation est une relation qui relie une classe une instance. Dans un langage de programmation, linstanciation correspond au moment ou le constructeur de la classe est appel :
Personne p = new Personne( Alice ) ; // en java Personne * p = new Personne( Alice ) ; // en C++

Dans cet exemple, la classe Personne est instanciable.


Instanciation & Spcialisation

Attention ne pas confondre instanciation et spcialisation. On peut crire : a) Toyota est une Voiture. b) Citron est une Voiture. c) Ma 2CV est une Citron. d) Ma Toyota est une Voiture. a) et b) sont des spcialisations b) et d) sont des instanciations Pour diffrencier une instanciation dune spcialisation il faut se demander si lon est capable de remplacer le est (qui est un mot trop vague) par est une sorte de ou plutt par est un exemple de (qui sont des mots plus prcis). Si on est capable de remplacer le est plutt par un est une sorte de alors on a une spcialisation. Et si on est capable de remplacer le est par un est un exemple de alors on a une instanciation. 2.5. Gnralisation par extension ou par restriction extension : une sous-classe ajoute des proprits la super-classe. restriction : les valeurs prises par les proprits sont restreintes. L'appartenance une classe peut tre dfinie de deux faons: implicitement par une rgle explicitement par numration
Les oprations redfinies

Redfinir pour restreindre : Exemple : le type d'un argument d'une opration d'une sous-classe peut se spcialiser. exemple : La classe Ensemble possde une opration ajouter(Element). La classe Entier hrite de la classe Element. La classe EnsembleEntiers hrite de la classe Ensemble. La classe EnsembleEntiers redfinies l'opration ajouter en spcialisant le type Element en Entier. Redfinir pour optimiser: Exemple : l'opration ajouter(Entier) de la classe EnsembleEntier peut tre optimise si par exemple les ensembles d'entiers sont ordonns. Redfinir pour raisons pratiques:

Bruno Bouzy

12

14/06/01

Notes de cours UML

2.6. Hritage multiple L'hritage multiple permet une classe d'avoir plus d'une super-classe et d'hriter des proprits de tous ses parents. Une classe avec plusieurs super-classe est appele une classe de jointure.
Vhicule

{Inclusif}
Vhicule Terrestre Vhicule Marin

Auto

Vhicule Amphibie

Bateau

Hritage multiple La classe Vehicule Amphibie hrite la fois de la classe Vhicule Terrestre et la fois de la classe Vhicule Marin . Cest la classe de jointure. Afin dexprimer que les sous-classes Vhicule Terrestre et Vhicule Marin ne sont pas disjointes, UML prvoit dinsrer le commentaire {Chevauchement} ou {Inclusif} au niveau de la gnralisation concernant ces deux classes. En labsence de commentaire sur une gnralisation, cette gnralisation est disjointe. Mais UML prvoit la possibilit de mettre explicitement le commentaire {Exclusif} ou {Disjoint} a ct dune gnralisation.
Gnralisation & Hritage

Les concepts objet de gnralisation et dhritage sont troitement lis mais elle sont diffrente. La gnralisation est une relation conceptuelle entre plusieurs classes alors que lhritage est un mcanisme qui dcoule du concept de gnralisation. Lhritage est un mcanisme qui est implment dans les langage orient objet dont le programmeur na pas se soucier.

Bruno Bouzy

13

14/06/01

Notes de cours UML

2.7. Proprits de classe ou proprit dinstance ? UML, comme les autres mthodes orientes objet, propose une distinction entre proprits de classe et proprit dinstance. Une proprit de classe est un proprit dont la valeur est identique pour toutes les instances de la classe et une proprit dinstance est une proprit dont la valeur est diffrente pour chaque instance. Par exemple, si dans un garage tous les mcaniciens sont habills en bleu, alors lattribut couleurDeTravail de la classe Mecanicien sera dfinie en attribut de classe. En UML, une proprit de classe est souligne. (En Java ou en C++, on utilise le mot-cl static, en OMT on utilise $).
Mcanicien

couleurHabit : int

Par contre si les mcaniciens sont habills de couleurs diffrentes, alors lattribut couleurDeTravail de la classe Mecanicien sera imprativement dfinie en attribut dinstance. Puisque leur valeur est commune toute la classe, les proprits de classe sont valorises une seule fois dans la classe et sont communes toutes les instances. Toutes les mthodes classiques de gestion des instances dune classe telles que : void detruireToutesLesInstances() Instance deIHMACreationDUneInstance() void deIHMADestructionDUneInstance() Instance getInstance(String) seront judicieusement places en mthodes de classe. Dans une classe, il peut tre pratique de placer certaines informations de la classe en attributs de classe. Par exemple, la liste des instances dune classe. Si on choisit de la placer dans la classe elle-mme, elle sera un attribut de classe. Mais on peut aussi prfrer placer la liste des instances dans la classe qui utilise la classe ou dans une instance composite qui utilise la classe ; dans ce cas, la liste des instances est un attribut dinstance de la classe utilisatrice.

Bruno Bouzy

14

14/06/01

Notes de cours UML

2.8. Visibilit des proprits, principe dencapsulation des donnes UML, comme les autres mthodes orientes objet, propose une distinction entre proprits prives, protges et publiques. Une proprit prive est un proprit visible de lintrieur de la classe et invisible de lextrieur. Une proprit protge est un proprit visible de lintrieur des sous-classes de la classe et invisible dailleurs. Une proprit publique est un proprit visible de partout.
Notation UML

Une proprit publique est prcde du signe +. Une proprit prive du signe et une proprit protge du signe #.
Exemple :

Objet

Compte - secret # cl + nom

Client

Compte Bancaire Dans cet exemple, lattribut secret de la classe Compte est priv : il nest visible que depuis la classe Compte . Lattribut cl est protg : il est visible de la classe Compte et de la classe CompteBancaire qui est sa sous-classe. Enfin, lattribut nom est publique donc visible de partout : des classes Compte , CompteBancaire et Client . (Il est galement visible depuis la classe Objet mais il est maladroit dutiliser une sous-classe dans une classe.)
Principe dencapsulation

Le principe dencapsulation des donnes est un mcanisme qui oblige rendre privs les attributs et publiques les mthodes. Ce principe, un peu brutal, offre lavantage de pouvoir faire voluer le logiciel plus facilement lorsque la spcification de laccs aux attributs changera (il suffira alors de ne changer que le corps des mthodes daccs aux attributs), ou bien en programmation concurrente lorsque plusieurs tches sont susceptibles daccder aux donnes simultanment. Mais, contrairement ce que la plupart des livres de programmation objet contiennent, nous dconseillons le suivi de ce principe aux dbutants en programmation objet. La mtaproprit dune proprit dtre de classe ou dinstance (cf paragraphe prcdent) est, selon nous, beaucoup plus importante que la mtaproprit de visibilit. Heureusement, la syntaxe UML offre la souplesse de spcifier la visibilit, prive, protge ou publique pour chaque proprit et ainsi de ne pas obliger le modlisateur suivre le principe dencapsulation.

Bruno Bouzy

15

14/06/01

Notes de cours UML

2.9. Rgles et conseils . Ne pas mettre de flches pour reprsenter les associations dans les diagrammes de classes. Les symboles > et < sont prvus cet effet pour indiquer le sens correct de lassociation. . Ne pas mettre des S aux noms de classe. . Pas de pointeurs ou rfrences vers d'autres objets sous forme d'attribut : utiliser les associations. . Un diagramme de classes ne doit pas contenir deux fois la mme classe. . Deux classes peuvent tre associes par plusieurs associations diffrentes. . Respecter absolument la correspondance entre le diagramme dinstances et le diagramme classes. . Sparer les diagrammes dinstances, de classes et de gnralisation. . Il est possible de mettre des agrgations sur un diagramme classes. . Il est possible et conseill de faire plusieurs diagrammes classes, un par point de vue que lon veut exprimer. . Garder un modle simple aussi simple que possible : pas de complications. . Choisir les noms avec soin. Attention aux sens multiples dun mot. Le choix des bons noms est la facette dterminante de la modlisation objet. . Eviter si possible les associations ternaires ou n-aires ; surtout lorsque lon se rapproche de la phase de codage. . Eviter les gnralisations profondment imbriques. . Le modle objet ne se trouve pas du premier coup. Il doit tre rvis plusieurs fois avant dtre dans une version correcte et stable. Soumettre le modle des avis extrieurs. . Documenter les modles objets avec les raisons commentes qui guident les choix effectus. . Ne pas exprimer les multiplicits trop tt. . A partir dun ensemble dexemples sur un domaine il est possible de trouver des multiplicits diffrentes. Si on gnralise strictement les exemples, les multiplicits sont prcises. Si lon utilise nos connaissances sur le monde rel, les multiplicits sont moins prcises. . Un diagramme de classes ne doit pas, dans la mesure du possible, contenir une classe et une de ses spcialisations.

Bruno Bouzy

16

14/06/01

Notes de cours UML

2.10. Sur-spcification des classes Les erreurs courantes en orient objet peuvent tre causes par une sur-spcification des classes; ce qui signifie avoir trop de classes. Ce paragraphe rpertorie les principales erreurs dues une surspcification.
Nommer une classe GestionT

Si dans le modle objet, apparat une classe GestionT et une classe T, cest une erreur. En effet, une classe est dj une entit informatique qui faite pour grer (des instances). Donc crire classe getsionT est un euphmisme. Pour supprimer cette erreur, supprimer la classe GestionT.
Nommer une classe BParticulier

Une classe est une entit globale . Une instance dsigne une entit particulire . Donc appeler une classe BParticulier est maladroit. Supprimer la classe Bparticulier et remplacer par la classe B si elle nexiste pas dj.
Eviter si possible les noms de classe composs NomAdjectif

Eviter si possible les noms de classes composs dun nom et dun adjectif : exemple CompteBancaire , TrainDemand , surtout quand la classe TrainDemand nhrite pas de Train , car dans ce cas, un TrainDemand nest pas un Train ; ce qui est troublant pour le sens commun Par contre, si la classe NomAdjectif hrite de la classe Nom alors il ny a pas dambigut et le problme nexiste pas.
Interdire les changements de classe au cours de la vie dune instance

Si les classes CompteDebiteur et CompteCrediteur hritent de la classe Compte , cela cre un gros problme. En effet, une instance dune classe garde le mme type, est toujours une instance de la mme classe, au cours de toute sa vie dinstance ; cest dire entre sa cration et sa destruction. Une instance ne peut tre cre dans la classe CompteDebiteur , puis transfre vers la classe CompteCrediteur lorsque un client va remplir son compte ! Cest possible dans la vie relle mais pas en technologie oriente objet ! Pour grer ce cas, le montant du compte donnera implicitement linformation sur le fait que le compte est dbiteur ou crditeur.
Ne pas remettre dans la sous-classe, les attributs ou mthodes hrits de la super-classe

Quand on ne veut pas les redfinir, il ne faut pas remettre les mmes attributs ou mthodes dans la classe hrite (la sous-classe) et dans la classe gnrale (la super-classe): en objet, le principe de lhritage est de dfinir les choses une seule fois un seul endroit ! Si on veut signifier quil est redfini, on remet nouveau lattribut ou la mthode dans la classe hrite.

Bruno Bouzy

17

14/06/01

Notes de cours UML

2.11. Placement des informations


Placer les informations au bon endroit

Il faut placer les attributs et les mthodes dans la classe adquate : ne pas placer les infos sur un client dans la classe mcanicien.
Ne pas mettre un attribut sur le type de lobjet

Une classe ne doit pas contenir un attribut sur le type de linstance cre. Si cest le cas, essayer de spcialiser cette classe en plusieurs sous-classes.
Mettre les informations de liste dinstances en attribut de classe ou pas ?

Placement en attribut de classe dune classe ou bien en attribut dinstance dune classe utilisatrice de la classe : il faut choisir une faon de placer les listes dobjet. Chacune des deux mthodes a son avantage. En choisir une.
Mettre les noms de rle des associations ou pas ?

En phase de spcification des besoins ou en conception gnrale, en OMT, il ne faut pas mettre les associations sous forme dattribut dans les rectangles dcrivant les classes. En conception dtaille ou en codage, on les met avec les noms de rle des associations (monClient, monMcanicien seront deux rles des classes Mcanicien et Client si celles ci sont associes)

Bruno Bouzy

18

14/06/01

Notes de cours UML

3. Le modle des tats et le modle dinteraction La partie prcdente dcrivait le formalisme modlisant statiquement un domaine, savoir le modle des classes. Ce modle ne permettait pas de modliser laspect dynamique d'un domaine. Le modle des tats et le modle dinteraction permettent la modlisation du point de vue dynamique. Il modlise lvolution des objets au cours du temps. Le modle des tats comprend les diagrammes dtats-transitions. Le modle dinteraction comprend les diagrammes de collaboration et les diagrammes de squence. Etat Un objet possde un tat un instant donn. Ltat de lobjet est une notion durable lchelle de temps dvolution des objets. Par exemple, si lobjet est un d jouer, on peut dire que le d possde 6 tats possibles et que le d pos sur la table est dans un tat durable (tant quon ne le lance pas). Ltat peut tre spcifi explicitement: MaClasse int etat Ltat peut aussi ne pas tre explicitement prsent sous forme dun attribut. Dans ce cas, ltat de lobjet au sens strict correspond lensemble des attributs de lobjet. Et ltat au sens large correspond lensemble des attributs et liens de l'objet. Evnements Un vnement est un stimuli externe ou interne lensemble des objets. Il se produit instantanment lchelle dvolution du systme. Un vnement est not entre guillemets. Par exemple : Le vol AF-123 part de Chicago . Un vnement peut tre reu ou envoy par un objet. Quand lobjet est spcifi par le contexte, on note avec une flche vers le bas un vnement reu par lobjet et une flche vers le haut un vnement envoy par lobjet. Par exemple, voici un vnementReu , et voici un vnementEnvoy . Si lobjet nest pas spcifi, les flches nont pas de signification car un mme vnement peut tre envoy par un objet et reu par un autre. Les vnements peuvent tre hirarchiss dans un diagramme de gnralisation. Par exemple : Evenement

DpartAvion

ArriveAvion

Bruno Bouzy

19

14/06/01

Notes de cours UML

Diagramme de squence Pour commencer dcrire lvolution dun ensemble dobjets, il est possible de dessiner dabord un diagramme de squence. Horizontalement, on place les instances concernes par un scnario et on relie les instances par des flches indiquant le flux dvnements. Verticalement, le temps est reprsent. Ce type de diagramme donne une premire ide des vnements qui pourront tre pertinents dans la modlisation. On rpte ce diagramme autant de fois quil existe de scnarii dvnements possibles Exemple du tlphone: Dans le suivi dvnements ci-dessous, un utilisateur appelant dcroche le tlphone qui envoie un signal sur la ligne tlphonique et la tonalit lutilisateur appelant : UtilAppelant AppareilAppelant LigneTl AppAppel UtilAppel

dcroche tonalit

ALTdcroche

Diagramme de collaboration Un diagramme de flux ou diagramme de collaboration est un diagramme sur lequel les classes dobjets sont reprsentes avec des rectangles relis par des flches reprsentant les flux dvnements entre les classes. exemple : ev2 ev1 A ev3 ev5 B

ev4 Ici, lvnement ev1 est recevable par la classe A. Les vnements ev2 , ev3 et ev4 sont missibles par A. Les vnements ev2 et ev3 sont recevable par la classe B. Enfin, lvnement ev5 est missible par la classe B. Ce type de diagramme sert rpertorier tous les vnements, reus et envoys, relatifs chaque classe. Diagramme d'tat-transitions : Un diagramme dtat est un graphe dont les nuds sont les valeurs possibles de ltat de lobjet et les arcs sont les transitions entre ces valeurs.

Bruno Bouzy

20

14/06/01

Notes de cours UML

Par abus de langage dans la suite du document, on dit que les nuds du graphe sont les tats de lobjet au lieu de dire les valeurs des tats de lobjet. Le diagramme dtats est le diagramme que lon cherche obtenir lorsque lon modlise la dynamique des objets. Il peut tre obtenu soit directement dans les cas simples, soit indirectement dans les cas complexes, aprs avoir faits les diagrammes de suivi dvnements et/ou les diagrammes de flux dvnements. Sur un diagramme dtats, on place les vnements reus et envoys par lobjet et les transitions associes. On place aussi les actions et les activits. Il existe plusieurs types dactions : entre, sortie, interne ou de transition. Les actions et activits Une action est suppose avoir une dure nulle lchelle dvolution des objets. Une activit par contre a une dure non nulle lchelle dvolution des objets. Une action est effectue la suite de la rception dun vnement (notion instantane) alors quune activit est effectue pendant que lobjet est dans un tat (notion durable). Une activit est spcifie avec le mot-cl do :. Action d'entre Une action dentre est effectue lorsque l'on rentre dans un tat. Elle est annonce avec le mot-cl entry :. Action de sortie Une action de sortie est effectue lorsque l'on sort dun tat. Elle est annonce avec le mot-cl exit :. Action interne Une action interne est effectue lorsque lobjet reoit un vnement sans faire changer l'tat de lobjet. Elle est annonce avec le mot-cl on suivi du nom de lvnement entre guillemets. exemple : on evenement : . Action de transition Une telle action est une action associe une transition. Dans ce cas, une condition ou garde peut tre associ(e) la rception de lvnement associ la transition. le garde est spcifi entre crochets [] et laction est prcde du /. Par exemple, dans la phrase suivante : Quand je sors le matin, si la temprature est glaciale, je mets mes gants. , on a les correspondances suivantes "Quand je sors le matin, si la temprature est glaciale, (vnement) (condition)

Bruno Bouzy

21

14/06/01

Notes de cours UML

je mets mes gants." Elle est formule avec

(action de transition)

vnement : [condition] / action

Par exemple, le diagramme suivant exprime une transition entre deux tats avec une activit activit1 associe ltat tat1, une action de transition action1, une condition condition1, sur rcption de lvnement vnement1.
etat 1 do : activit 1 vnement1 [condition1] / action1 etat 2 ...

Sur lexemple suivant, lactivit activit est effectue pendant que lobjet est dans ltat tat1 ; en entre de ltat tat1, laction action1 est effectue ; en sortie, laction action2 est effectue ; enfin, si lvnement vnement est recu dans ltat tat1 alors laction interne action3 est effectue.
etat 1 do : activit entre : action1 exit : action2 on vnement : action3 etat 2 ...

Une action interne est diffrente d'une transition rflexive. En effet, cette dernire entrane l'excution de l'action de sortie de l'tat juste avant et lexcution de laction dentre juste aprs. Lorsque plusieurs transitions arrivent sur un tat, le choix du placement dune action sur une transition ou bien en entre de ltat doit tre fait avec prcision. De mme, lorsque plusieurs transitions partent dun tat, le choix du placement dune action sur une transition ou bien en sortie de ltat est dterminant. Transition automatique Une transition automatique est une transition qui se dclenche la fin dune activit de lobjet. Elle est dite automatique car elle se dclenche sans que lobjet ne reoive dvnement. Une transition automatique peut avoir un garde et une action associs. Etat initial et tats finaux Ltat initial dun objet est spcifi avec un rond noir plein et les tats finaux avec des ronds noirs encercls.

etat intermdiaire

Bruno Bouzy

22

14/06/01

Notes de cours UML

Hirarchie d'tats En cours de modliation avec un diagramme dtats, il peut tre judicieux de regrouper plusieurs tats en un seul ou bien de dcomposer un tat en plusieurs sous-tats. Exemple : tat4 tat1 ev1 ev3 tat2 ev2 tat3

Ici, ltat tat4 est un sur-tat des tats tat1, tat2, tat3. Les deux transitions qui rentrent dans ltat tat4 spcifient dans quel sous-tat on arrive. La transition sortante de ltat tat4 exprime que, quel que soit le sous-tat dans lequel lobjet se trouve, si lvnement ev3 arrive, alors lobjet sort de ltat tat4. On peut bien sr placer des actions dentre ou de sortie sur des sur-tats ou des sous-tats. Relations entre le modle objet le modle dynamique Le modle dynamique spcifie les squences acceptables de modification d'objet. Le modle dynamique d'une classe est hrit dans les sous-classes ; il est possible de redfinir un diagramme dtats dans une sous-classe. Ce qui est naturel puisque un tat dobjet est un attribut dobjet (donc hritable et redfinissable). Toutes les classes ne ncessitent pas de diagramme d'tats Selon les domaines modliser, on peut commencer ou non par faire les scnarios dvnements et les diagrammes de flux avant de faire les diagrammes dtats.

Bruno Bouzy

23

14/06/01

Notes de cours UML

4. Le modle des cas dutilisation Les cas dutilisation (use cases) ont t formaliss par Ivar Jacobson. Ils dcrivent sous forme dactions et de ractions, le comportement dun systme du point de vue dun utilisateur. Avant UML, ils ntaient pas formaliss par les autres mthodes objet telles que OMT. Les cas dutilisation sont utiles lors de llaboration du cahier des charges ou du document de spcifications des besoins du logiciel. Le modle des cas dutilisation comprend les acteurs, le systme et les cas dutilisation. Lensemble des fonctionnalits du systme est dtermin en examinant les besoins de chaque acteur, exprims sous forme de famille dinteractions dans les cas dutilisation. Les acteurs se reprsentent sous forme de petits personnages qui dclenchent les cas. Ces derniers se reprsentent par des ellipses contenues dans un rectangle reprsentant le systme. systme acteur A cas X acteur B cas Y Dans cet exemple, lacteur A dclenche le cas X et lacteur B dclenche le cas Y. Il existe quatre catgories dacteurs : les acteurs principaux, les acteurs secondaires, le matriel externe, les autres systmes. Chaque acteur doit tre dcrit en 3 ou 4 lignes de manire claire et concise. Un cas dutilisation dcrit un ensemble de scnarios du point de vue de lutilisateur grce a des diagrammes de squence ou des diagrammes de collaboration. Les relations entre cas dutilisation relation de communication relation dutilisation relation dextension dclenche <<Utilise>> <<Etend>>

Bruno Bouzy

24

14/06/01

Notes de cours UML

Rgles de mise en uvre La description du cas dutilisation comprend les points suivants : le dbut du cas exprim par : les cas dbute quand X se produit , la fin du cas exprim par : les cas se termine quand Y se produit , linteraction entre le systme et les acteurs qui dcrit clairement la frontire du systme, les changes dinformations la chronologie et lorigine des informations utilisant : les diagrammes de squence ou les diagrammes dactivits. les rptitions de comportement du type :
boucle quelquechose fin de boucle

ou :
pendant que autre chose fin pendant

les situations optionnelles Diagrammes dactivits Les diagrammes dactivits suivent les mme formalisme que les diagrammes dtat-transitions sauf que les tats sont remplacs par des activits, avec la possibilit pour les activits de se synchroniser.

Bruno Bouzy

25

14/06/01

Notes de cours UML

5. De UML vers le codage (C++ ou Java) Ce paragraphe traite du passage dune conception gnrale ou dtaille faite avec UML vers le codage en C++ ou en Java. Classe, instance, attribut, mthode Une classe, une instance, un attribut ou une mthode UML sera une classe, une instance, un attribut ou une mthode en Java et une classe, une instance, un membre ou une fonction membre en C++. Il ny a pas dambiguit. Le passage est un--un. Attributs et mthodes de classe ou dinstance UML, C++ et Java font la distinction entre les attributs ou mthodes de classe ou dinstance . La correspondance est la suivante : attribut, mthode de classe attribut, mthode dinstance UML soulign Java static C++ static -

Association Pour les associations UML, il y a plusieurs faons de faire. Mais dans tous les cas, une association UML se traduira par un ou plusieurs attributs. Ces attributs seront des pointeurs ou des rfrences vers des objets ou des listes.
Exemple dune association un--un :
Pays A-pour-capitale> Ville

En C++ on crira :
class Pays { Ville * aPourCapitale ; } ; class Ville { Pays * estLaCapitaleDe ; } ;

Ainsi, les deux rles de lassociation UML seront traduits par deux pointeurs C++. En Java, on crira :
class Pays { Ville aPourCapitale ; } class Ville { Pays estLaCapitaleDe ; }

Ainsi, les deux rles de lassociation UML seront traduits en deux rfrences Java.

Bruno Bouzy

26

14/06/01

Notes de cours UML

On remarquera que cette faon de faire est complte mais que toute relation du modle UML ne se traduit pas ncessairement en un couple de pointeurs ou rfrences au niveau du codage. On peut trs bien nimplmenter quun seul sens de lassociation UML en ne prenant quun seul pointeur ou une seul rfrence. Cette faon de faire marche bien pour les associations dont la multiplicit est 0 ou 1. Pour les associations un--plusieurs, le programmeur a besoin dautre chose.
Exemple dune association un--plusieurs :
Pays

A-pour-region>

Region

Dans ce cas, un pays ayant plusieurs rgion, on a besoin dun attribut pouvant contenir un nombre quelconque dlments. Un attribut de type tableau nest pas adapt car il possde une taille qui limite le nombre dlments. Un attribut tant de la classe Liste conviendra parfaitement . En C++, on crira par exemple :
class Pays { Liste * aPourRegions ; } ; class Region { Pays * estUneRegionDe ; } ;

En synthtisant les deux exemples prcdents sur les pays, les villes et les rgions, on peut dire que les attributs monovalus (un attribut qui contient au plus une valeur) de UML seront traduits en pointeurs ou rfrences sur des objets au niveau du codage C++ ou Java et que les attributs multivalus (un attribut qui peut contenir un nombre quelconque de valeurs) seront traduits en listes dobjets, ou la limite en tableaux dobjets.

Bruno Bouzy

27

14/06/01

Notes de cours UML

Traduire une agrgation UML : par rfrence ou par contenance ? Les relations dagrgation et de composition UML se traduisent au niveau du codage en C++ ou en Java. A premire vue, en C++, on peut faire la distinction grossire suivante :
Pays A-pour-capitale Ville

ou :
Pays Ville

sera traduit par :


class Pays { Ville * aPourCapitale ; } ; class Ville { Pays * estLaCapitaleDe ; } ;

et la composition:
Pays Ville

sera traduite au niveau de la classe Pays par :


class Pays { Ville aPourCapitale ; } ;

En C++, cela signifie que lobjet Ville est contenu dans lobjet Pays. Cela traduit le fait quun Pays est compos de Ville. Donc le C++ permet de traduire la distinction ( agrgation composition ) dUML en une distinction (pointeur - objet contenu). En Java, tout est rfrenc il ny a pas de pointeur et la distinction [objet contenu, objet rfrenc] nexiste pas. Il ny a pas dobjet contenu en Java : que des objets rfrencs. On crira toujours :
class Pays { Ville aPourCapitale ; } class Ville { Pays estLaCapitaleDe ; }

que lassociation soit une agrgation ou pas.

Bruno Bouzy

28

14/06/01

Vous aimerez peut-être aussi