Cours UML
Cours UML
Etablissement : 3iA
PROGRAMME D’ENSEIGNEMENT
CHAPITRE 1 PRÉSENTATION DE UML
En fait, c'est la quasi-totalité de l'application qui devra être adaptée, pour gérer les
nouvelles données et réaliser les traitements correspondants. Et cela, à chaque fois qu'on décidera de
gérer un nouveau type de document !
B. GENESE D’UML
UML (Unified Modeling Language ou langage unifié de modélisation) est un langage
graphique destiné à la modélisation de systèmes et de processus. UML est un langage basé sur
l’approche par objets, et provient de plusieurs notations qui l’ont précédé. Aujourd’hui, UML
est promu par l’OMG (Object Management Group), un consortium de plus de 800 sociétés et
universités actives dans le domaine des technologies de l’objet.
UML est sémantiquement riche, il est donc assez difficile de retenir tous ses concepts. Nous
espérons que cet ouvrage vous sera utile pour les appréhender et les mémoriser. Lorsque vous
serez amené à modéliser en UML, nous espérons également que le présent document vous servira
de guide dans la mesure ou il est basee sur un .ouvrage de reference editee par la celebre maison
d’edition Editions ENI.
UML est basé sur l’approche par objets. Cette dernière voit le jour bien avant UML dans le
domaine des langages de programmation. Simula, le tout premier langage à objets est né dans les
années 1960. Ce langage connaît de nombreux successeurs : Smalltalk, C++, Java ou plus récemment
C#.
Dans un langage de programmation, la description des objets est réalisée de façon formelle
avec une syntaxe rigoureuse. Cette syntaxe n’est pas lisible par des non-programmeurs et reste
difficile à déchiffrer pour des programmeurs. À la différence des machines, les humains
préfèrent utiliser les langages graphiques pour représenter des abstractions. Ils maîtrisent ce type
de langage plus facilement et obtiennent une vue d’ensemble d’un système en un temps beaucoup plus
court.
Dans les années 1980 et au début des années 1990, les notations graphiques se multiplient,
chacun utilisant bien souvent sa propre notation. En 1994, James Rumbaugh et Grady Booch
décident de se regrouper pour unifier leurs notations. Celles-ci provenaient de leurs méthodes
: OMT pour James Rumbaugh et méthode Booch pour Grady Booch. En 1995, Yvar Jacobson
décide de rejoindre l’équipe des "trois amigos". Cette équipe travaille alors au sein de Rational
Software.
La version 1.0 d’UML est publiée en 1997. Le travail d’évolution de la notation est
devenu trop important pour trois personnes. Les trois amigos demandent l’aide de l’Object
Management Group (OMG), un consortium de plus de 800 sociétés et universités travaillant dans le
domaine des technologies de l’objet. La notation UML est adoptée par l’OMG en novembre 1997
dans sa version 1.1. L’OMG crée en son sein une
Task Force chargée de l’évolution d’UML Depuis cette époque, cette Task Force a mis à jour
UML plusieurs fois. En mars 2003, la version 1.5 voit le jour et la version récente de UML est 2.5,
elle constitue la première évolution majeure depuis la sortie d’UML en 1997. De nouveaux
diagrammes ont été ajoutés et les diagrammes existants ont été enrichis de nouvelles
constructions.Rappelons qu’UML est une notation(langage) destinée à la modélisation par
objets de systèmes et de processus. UML ne contient pas un guide méthodologique (une
méthode ou processus) mais constitue un support de modélisation. Les méthodes de modélisation
basées sur UML sont nombreuses (XP, UP, RUP ...).
CHAPITRE 2 - LES CONCEPTS DE L’APPROCHE PAR
OBJETS
Ce chapitre a pour objectif de vous faire découvrir les différents concepts et principes de
l’approche objet qui sont à la base d’UML. Leur connaissance est indispensable pour comprendre
les éléments utilisés dans la panoplie des diagrammes d’UML qui seront abordés dans les chapitres
suivants.
A. L’objet
Un objet est une entité identifiable du monde réel. Il peut avoir une existence physique
(un cheval, un livre) ou ne pas en avoir (un texte de loi). Identifiable signifie que l’objet peut être
désigné.
Exemple :
- Ma jument Jorphée
- Mon livre sur UML
- L’article 15 du code de procédure pénal
En UML, tout objet possède un ensemble d’attributs (sa structure) et un ensemble de
méthodes (son comportement). Un attribut est une variable destinée à recevoir une valeur. Une
méthode est un ensemble d’instructions prenant des valeurs en entrée et modifiant les valeurs des
attributs ou produisant un résultat. Même un objet statique du monde réel est toujours perçu
comme dynamique. Ainsi en UML, un livre est perçu comme un objet capable de s’ouvrir lui-
même à la énième page. Tout système conçu en UML est composé d’objets interagissant entre eux
et effectuant les opérations propres à leur comportement.
Exemple : Un troupeau de chevaux est un système d’objets interagissant entre eux, chaque objet
possédant son propre comportement. Le comportement global d’un système est ainsi réparti entre
les différents objets. Dans notre exemple, il suffit de faire le parallèle avec le monde réel pour le
comprendre.
B. L’abstraction
L’abstraction est un principe très important en modélisation. Elle consiste à retenir
uniquement les propriétés pertinentes d’un objet pour un problème précis. Les objets utilisés en
UML sont des abstractions d’objets du monde réel. L’abstraction est une simplification
indispensable au processus de modélisation. Un objet UML est donc une abstraction de l’objet du
monde réel par rapport aux besoins du système, dont on ne
retient que les éléments essentiels
Exemple : On s’intéresse aux chevaux pour l’activité de course. Les propriétés d’aptitude de
vitesse, d’âge et d’équilibre mental ainsi que l’élevage d’origine sont pertinentes pour cette
activité et sont retenues.
On s’intéresse aux chevaux pour l’activité de transport des charges . Les propriétés d’âge, de taille,
de force et de corpulence sont pertinentes pour cette activité et sont retenues.
.
C. Les classes d’objets
Un ensemble d’objets similaires, c’est-à-dire possédant la même structure et le même
comportement et constitués des mêmes attributs et méthodes, forme une classe d’objets. La
structure et le comportement peuvent alors être définis en commun au niveau de la classe.
Chaque objet d’une classe, encore appelé instance de classe, se distingue par son identité propre et
possède des valeurs spécifiques pour ses attributs.
Exemple : L’ensemble des chevaux constitue la classe Cheval qui possède la structure et le
comportement décrits à la figure ci-contre.
Le nom d’une classe apparaît au singulier. Il est toujours constitué d’un nom
commun précédé ou suivi d’un ou plusieurs adjectifs qualifiant le nom. Ce nom est
significatif de l’ensemble des objets constituant la classe.
D. L’encapsulation
L’encapsulation consiste à masquer des attributs et des méthodes de l’objet vis-à-vis
des autres objets. En effet, certains attributs et méthodes ont pour seul objectif des traitements
internes à l’objet et ne doivent pas être exposés aux objets extérieurs. Encapsulés, ils sont appelés
les attributs et méthodes privés de l’objet.
L’encapsulation est une abstraction puisque l’on simplifie la représentation de l’objet
vis-à-vis des objets extérieurs. Cette représentation simplifiée est constituée des attributs et
méthodes publiques de l’objet. La définition de l’encapsulation se fait au niveau de la classe.
Les objets extérieurs à un objet sont donc les instances des autres classes.
Exemple : Lorsqu’il court, un cheval va effectuer différents mouvements comme lever les jambes,
lever la tête, lever la queue. Ces mouvements sont internes au fonctionnement de l’animal et n’ont
pas à être connus à l’extérieur. Ce sont des méthodes privées. Ces opérations accèdent à une partie
interne du cheval : ses muscles, son cerveau et sa vue. Cette partie interne est représentée sous
la forme d’attributs privés. L’ensemble de ces attributs et méthodes est illustré à la figure ci-
contre.
Dans la notation UML, les attributs et méthodes publics sont précédés du signe plus
tandis que les attributs et méthodes privés (encapsulés) sont précédés du signe moins
E. La spécialisation et la généralisation
Jusqu’à présent, chaque classe d’objets est
introduite séparément des autres classes. Une classe peut
également être définie comme un sous-ensemble d’une
autre classe, ce sous-ensemble devant toujours constituer
un ensemble d’objets
similaires. Il s’agit alors d’une sous-classe d’une autre
classe. Elle constitue ainsi une spécialisation de cette autre
classe.
Exemple : La classe des chevaux est une sous-classe de
la classe des mammifères.
La généralisation est la relation inverse de
la spécialisation. Si une classe est une spécialisation d’une
autre classe, cette dernière est une généralisation de la
première. Elle en est sa surclasse.
Exemple : La classe des mammifères est une surclasse de la classe des chevaux.
La relation de spécialisation peut s’appliquer à plusieurs niveaux, donnant lieu à une
hiérarchie de classes.
Exemple : La classe des chevaux est une sous-classe de la classe des mammifères, elle-même sous-classe
de la classe des animaux. La classe des chiens est une autre sous-classe de la classe des
mammifères. La hiérarchie correspondante des classes est représentée à la figure ci-contre.
F. L’héritage
L’héritage est la propriété qui fait bénéficier à une sous-classe de la structure et du
comportement de sa surclasse. L’héritage provient du fait qu’une sousclasse est un sous-
ensemble de sa surclasse. En conséquence, elles bénéficient de la structure et du comportement
définis dans cette surclasse, en plus de la structure et du comportement introduits au niveau de la
sous-classe.
Exemple : Soit un système où la classe Cheval est une sous-classe directe de la classe Animal,
un cheval est alors décrit par la combinaison de la structure et du comportement issus des classes
Cheval et Animal, c’est-à-dire avec les attributs âge, taille, poids, nom et élevage ainsi que les
méthodes manger et courir.
G. Les classes abstraites et concrètes
L’examen de la hiérarchie présentée à la section spécialisation et generalisation montre
qu’il existe deux types de classes dans la hiérarchie :
Ø Des classes qui possèdent des instances, à savoir les
classes Cheval et Chien. Ces classes sont appelées classes
concrètes.
Ø Des classes qui n’en possèdent pas directement, comme
la classe Animal. En effet, si dans le monde réel, il
existe des chevaux, des chiens, le concept d’animal reste,
quant à lui, abstrait. Il ne suffit pas à définir
complètement un animal. La classe Animal est appelée
une classe abstraite.
Une classe abstraite a pour vocation de posséder
des sous-classes concrètes. Elle sert à factoriser des attributs
et des méthodes communs à ses sous-classes.
Exemple : La figure ci-contre reprend la hiérarchie en
indiquant précisément les classes abstraites et les classes
concrètes. En UML, le nom des classes abstraites apparaît en
caractères italiques.
H. Le polymorphisme
Le polymorphisme signifie qu’une classe
(très généralement abstraite) représente un
ensemble constitué d’objets différents car ils sont instances
de sous-classes distinctes. Lors de l’appel d’une méthode de
même nom, cette différence se traduit par des
comportements différents (sauf dans le cas où la méthode
est commune et héritée de la surclasse dans les
sous-classes).
Exemple Soit la hiérarchie de classes illustrée à la
figure 3.7. La méthode caresser a un comportement
différent selon que le cheval est instance de
ChevalSauvage ou de ChevalDomestiqué. Dans le
premier cas, le comportement sera un refus (se traduisant
par un cabrement) alors que dans le second, le
comportement sera une acceptation. Si l’on considère la
classe Cheval dans son intégralité, on a donc un ensemble
de chevaux qui ne réagissent pas de la même façon lors de
l’activation de la méthode
Caresser.
I- La composition
Un objet peut être complexe et composé d’autres objets. L’association qui unit alors ces
objets est la composition. Elle se définit au niveau de leurs classes mais les liens sont bâtis entre les
instances des classes. Les objets formant l’objet composé sont appelés composants.
Exemple: Un cheval est un exemple d’objet complexe. Il est constitué de ses différents organes
(jambes, tête, etc.).
La composition peut prendre deux formes :
Ø la composition faible ou
agrégation ; Ø la composition
forte.
Dans la composition faible, les composants peuvent être partagés entre plusieurs objets
complexes. Dans la composition forte, les composants ne peuvent être partagés et la destruction
de l’objet composé entraîne la destruction de ses composants.
Exemple : Si l’on reprend l’exemple précédent
dans le cas d’un cheval de course harnaché et si l’on
ajoute la selle dans les composants, on obtient :
Ø Une composition forte pour les jambes et la tête
; en effet, jambes et tête ne peuvent pas être
partagées et la disparition du cheval entraîne la
disparition de
ses organes.
Ø Une agrégation ou composition faible pour la selle.
L’ensemble est illustré à la figure ci contre
J. La spécialisation des éléments : la notion de stéréotype
Nous avons introduit dans ce chapitre les concepts de
l’approche par objets. Nous introduisons maintenant les
stéréotypes d’UML dont le but est de spécialiser ces concepts. Un
stéréotype est constitué d’un mot clé explicitant cette
spécialisation. Celui-ci est noté entre guillemets. Cette
spécialisation est réalisée indépendamment du système que l’on
cherche à modéliser.
Exemple Le concept de classe abstraite est un concept
spécialisé du concept de classe. Nous avons vu qu’une classe
abstraite est représentée comme une classe avec un nom en
italiques. Cette représentation graphique inclut un stéréotype
implicite, mais il est
également possible de ne pas mettre le nom de la classe en italiques et de
préciser explicitement le stéréotype «abstract». Ce stéréotype explicite est illustré à la figure
ci-contre Il peut être employé lors de l’écriture manuelle de diagrammes UML.
En résumé, L’approche par objets forme la base d’UML. Elle est constituée de concepts
(objets, classes, spécialisation, composition) et de principes (abstraction, encapsulation).
Cet ensemble fait de l’approche par objets un véritable support pour la modélisation de
systèmes complexes, et au-delà d’UML, pour leur programmation.
Nous verrons dans les chapitres suivants comment les différents diagrammes d’UML
s’appuient sur les concepts et principes de l’approche par objets.
CHAPITRE 3 - LA MODÉLISATION DES
EXIGENCES
Ce chapitre a pour objectif de vous faire découvrir les cas d’utilisation employés pour
décrire les exigences fonctionnelles. attendues, lors de la rédaction du cahier des charges d’un
système, ou les fonctionnalités d’un système existant.
L’ensemble des cas d’utilisation d’un système contient les exigences fonctionnelles
attendues ou existantes, les acteurs (utilisateurs du système) ainsi que les relations qui unissent
acteurs et fonctionnalités. Cet ensemble détermine également les frontières du système, à savoir
les fonctionnalités remplies par le système et celles qui lui sont externes.
Les cas d’utilisation servent de support pour les étapes de modélisation, de développement
et de validation. Ils constituent un référentiel du dialogue entre les informaticiens et les clients et,
par conséquent, une base pour l’élaboration au niveau fonctionnel du cahier des charges. Nous
débuterons par présenter les concepts clés de cette étape que nous appuierons par la suite d’exemples.
1. CONCEPTS DE BASE
A. Notion de Cas d’utilisation
Les cas d’utilisation décrivent sous la forme d’actions et de réactions, le comportement du
système étudié du point de vue des utilisateurs. Ils définissent les limites du système et ses
relations avec son environnement.
Cette définition doit être complétée. En effet, elle ne précise pas si un cas d’utilisation doit
décrire l’intégralité ou une partie du dialogue entre un utilisateur et le système. Elle peut être
formulée ainsi : "Entre un utilisateur et le système, un cas d’utilisation décrit les interactions liées
à un objectif fonctionnel de l’utilisateur".
Un cas d’utilisation explicite la partie des exigences fonctionnelles du système concernant
l’un des objectifs d’un utilisateur. Ce dernier est aussi appelé, de façon plus précise, cas
d’utilisation avec objectif utilisateur. Exemple : Considérons comme système un élevage de
chevaux. L’achat d’un cheval par un client constitue un cas d’utilisation.
B. Notion d’Acteur
Un utilisateur externe du système peut jouer différents rôles vis-à-vis du système. Un
couple (utilisateur, rôle) constitue un acteur spécifique désigné en UML uniquement par le nom
du rôle. Cette définition est étendue aux autres systèmes qui interagissent avec le système. Ils
forment autant d’acteurs qu’ils jouent de rôle. Deux catégories d’acteurs doivent être distinguées :
Ø les acteurs primaires, pour lesquels l’objectif du cas d’utilisation est essentiel ;
Ø les acteurs secondaires qui interagissent avec le cas d’utilisation mais dont l’objectif
n’est pas essentiel.
Exemple : Reprenons l’exemple précédent du cas d’utilisation de l’achat d’un cheval par un
client. L’acheteur d’un cheval est un acteur primaire. Les haras nationaux qui enregistrent le
certificat de vente constituent un acteur secondaire.
C. Notion de Scénario
Un scénario est une instance d’un cas d’utilisation dans laquelle toutes les conditions
relatives aux différents événements ont été fixées. Il n’y a donc pas d’alternatives lors du
déroulement. À un cas d’utilisation donné correspondent plusieurs scénarios. Comme une classe
qui détient les aspects communs de ses instances, un cas d’utilisation décrit de façon commune
l’ensemble de ses scénarios en utilisant des branchements conditionnels pour représenter les
différentes alternatives.
Exemple : L’achat de Jorphée par Fien constitue un exemple de scénario du cas
d’utilisation d’achat d’un cheval. Toutes les alternatives du déroulement sont connues, car Fien a
acquis Jorphée.
2. RELATION DE COMMUNICATION
La relation qui lie un acteur à un cas d’utilisation s’appelle la relation de communication.
Cette relation supporte différents modèles de communication, par exemple :
Ø les services que le système doit fournir à chacun des acteurs du cas
d’utilisation ; Ø les informations du système qu’un acteur peut introduire,
consulter ou modifier ;
Ø les changements intervenant dans l’environnement dont un acteur informe le
système ; Ø les changements intervenant au sein du système dont ce dernier
informe un acteur.
Exemple : Lorsque Fien a acquis Jorphée, elle a reçu des informations de l’élevage
comme la proposition de prix, les papiers de la jument, son carnet de vaccination et a fourni des
informations comme une contre-proposition de prix, une promesse d’achat.
C o m m e nous l’avons vu dans le chapitre Les concepts de l’approche par objets pour
les classes d’objet, il est également possible de spécialiser un cas d’utilisation en un autre. On
obtient ainsi un sous-cas d’utilisation. Comme pour les classes, le sous-cas hérite du
comportement du sur-cas d’utilisation. Un sous-cas d’utilisation hérite également des relations de
communication, d’inclusion et d’extension du sur-cas. Souvent, le sur-cas d’utilisation est abstrait,
c’est-à-dire qu’il correspond à un comportement partiel complété dans les sous-cas d’utilisation.
Un sous-cas d’utilisation a le même niveau que son sur-cas. Si le sur-cas est un cas avec
objectif utilisateur, il en va de même pour le sous-cas. Si le sur-cas est un cas de sous-fonction, le
sous-cas est lui aussi une sous- fonction. Dans le diagramme des cas d’utilisation, la relation de
spécialisation est représentée par une flèche pleine de spécialisation identique à celle qui relie les
sous-classes aux surclasses. Le nom d’un cas d’utilisation abstrait est écrit en italique
(ou accompagné du stéréotype «abstract»).
Exemple : Le cas d’utilisation d’achat
d’un cheval est spécialisé en deux
sous-cas : l’achat d’une jument ou d’un
étalon. Ce cas est un cas abstrait et son nom
apparaît en italiques La figure 4.9 illustre
cette spécialisation. Les cas d’utilisation
d’achat de la jument et d’achat de
l’étalon sont des cas d’utilisation avec
objectif utilisateur et communiquent
avec l’acheteur. En effet, la relation de communication qui existe entre le cas d’utilisation d’achat
du cheval et Acheteur est héritée dans les deux sous-cas d’utilisation.
Exemple: Les relations d’extension concernant les différentes inclusions et extensions de vérification
peuvent être factorisées au niveau du cas abstrait. Elles sont alors héritées dans les sous-cas à l’image
de la relation de communication dans l’exemple précédent (voir figure ci-dessous)
NB: La représentation textuelle des cas d’utilisation n’est pas spécifiée dans UML. Elle est
cependant couramment utilisée. Cette représentation sous forme textuelle des cas d’utilisation donne
une description de leurs comportements, de leurs actions et réactions. Le contenu de cette
représentation textuelle est la suivante :
- le nom du cas d’utilisation
;
Ø l’acteur primaire ;
Ø le système concerné par le cas d’utilisation ;
Ø les intervenants (ensemble des acteurs) ;
Ø le niveau du cas d’utilisation pouvant être soit :
-un objectif utilisateur ;
- ou une sous fonction ;
Ø les préconditions qui sont les conditions à remplir pour que le cas d’utilisation puisse être
exécuté ; Ø les opérations du scénario principal ;
Ø les extensions.
Tout ceci dans un tableau semblable a celui-ci:
1. DIAGRAMME DE SEQUENCE
a. Définition
Le diagramme de séquence décrit la dynamique du système. À moins de modéliser un
très petit système, il est difficile de représenter toute la dynamique d’un système sur un seul
diagramme. Aussi la dynamique globale sera représentée par un ensemble de diagrammes
de séquence, chacun étant généralement lié à une sous-fonction du système. Le diagramme de
séquence décrit les interactions entre un groupe d’objets en montrant, de façon séquentielle, les
envois de message qui interviennent entre les objets. Le diagramme peut également montrer les
flux de données échangées lors des envois de message.
Pour interagir entre eux, les objets s’envoient des messages. Lors de la réception d’un
message, un objet devient actif et exécute la méthode de même nom. Un envoi de message est donc
un appel de méthode.
b. Ligne de vie d’un objet
Comme il représente la dynamique du système,
le diagramme de séquence fait entrer en action les instances
des classes intervenant dans la réalisation de la sous-fonction
qui lui est liée. À chaque instance est associée une ligne de vie
qui montre ses actions et réactions, ainsi que les périodes
pendant lesquelles elle est active, c’est-à-dire où elle exécute
l’une de ses méthodes. La représentation graphique de la
ligne de vie est illustrée à la figure ci contre:
La notation "role : Classe" représente le rôle d’une instance suivi du nom de sa classe. Dans
cet ouvrage, par souci de simplification, nous considérons que le rôle de l’instance
correspond à son nom, comme c’était le cas en UML 1. Le rôle de l’instance est optionnel
si une seule instance de cette classe participe au diagramme de séquence. Un diagramme
de séquence contient plusieurs lignes de vie car il traite des interactions entre plusieurs
objets.
Exemple : Pour franchir un obstacle, un cavalier peut s’y prendre à plusieurs reprises, sans
toutefois dépasser deux refus.
2. L’encapsulation
L’encapsulation a été introduite dans le chapitre Les concepts de l’approche par objets.
Certains attributs et méthodes ne sont pas exposés à l’extérieur de l’objet. Ils sont encapsulés et
appelés attributs et méthodes privés de l’objet. UML, comme la plupart des langages modernes,
introduit trois possibilités d’encapsulation :
Ø L’attribut ou la méthode privée : la propriété n’est pas exposée en dehors de la
classe, y compris au sein de ses sous-classes.
-L’attribut ou la méthode protégée : la propriété n’est exposée qu’aux instances de la
classe et de ses sous-classes.
Ø L’encapsulation de paquetage : la propriété n’est exposée qu’aux instances des
classes de même paquetage.
3. La notion de type
Nous appelons ici variable tout attribut, paramètre et valeur de retour d’une méthode.
D’une façon générale, nous appelons variable tout élément pouvant prendre une valeur. Le
type est une contrainte appliquée à une variable. Il consiste à fixer l’ensemble des valeurs
possibles que peut prendre cette variable. Cet ensemble peut être une classe, auquel cas la variable
doit contenir une référence vers une instance de cette classe. Il peut être standard comme
l’ensemble des entiers, des chaînes de caractères, des booléens ou des réels. Dans ces derniers cas, la
valeur de la variable doit être respectivement un entier, une chaîne de caractères, une valeur
booléenne et un réel.
Les types standard sont désignés ainsi :
Ø Integer pour le type des entiers ;
ØString pour le type des chaînes de caractères
;
Ø Boolean pour le type des booléens ;
Ø Real pour le type des réels.
Il est possible de faire précéder le nom d’une association du signe < ou de le faire
suivre par le signe > pour indiquer le sens de lecture du nom vis-à-vis du nom des classes.
Si l’association est située sur un axe vertical, il est possible de faire précéder le nom par ^ ou
v.
Chaque extrémité d’une association peut également être nommée. Ce nom est
significatif du rôle que jouent les instances de la classe correspondante dans l’association.
6. La cardinalité des associations
7. Les classes-associations
Les liens entre les instances des classes peuvent porter des informations. Celles-ci sont
spécifiques à chaque lien. Dans ce cas, l’association qui décrit de tels liens reçoit le statut de classe,
dont les instances sont des occurrences de l’association. Comme toute autre classe, une telle classe
peut être dotée d’attributs, d’opérations et être reliée au travers d’associations à d’autres classes.
Exemple quand un client achète un produit pour cheval (produits d’entretien, etc.), il convient de
spécifier la quantité de produits acquis par une classe association, ici la classe Acquisition.
c. L’héritage multiple
L’héritage multiple en UML consiste à ce qu’une sous-classe hérite de plusieurs
surclasses. Il pose un seul problème : il engendre un conflit lorsqu’une même méthode,
c’est-à-dire de même signature, est héritée plusieurs fois dans la sous- classe. En effet, lors de la
réception d’un message appelant cette méthode, il faut définir un critère pour en choisir une
parmi toutes celles qui sont héritées. Une solution, dans ce cas, consiste à redéfinir la méthode
dans la sous-classe afin de supprimer le conflit.
Si l’utilisation de l’héritage multiple est bien sûr possible en modélisation, il est
souvent nécessaire de transformer les diagrammes de classes pour le supprimer lors du passage
au développement. En effet, rares sont les langages de programmation supportant cette forme
d’héritage. Pour cela, il existe différentes techniques parmi lesquelles la transformation de
chaque héritage multiple en une agrégation.
d. Interface
Une interface est une classe totalement abstraite, c’est-à-dire sans attribut et dont
toutes les méthodes sont abstraites et publiques. Une telle classe ne contient aucun élément
d’implantation des méthodes. Graphiquement, elle est représentée comme une classe avec le
stéréotype «interface».
L’implantation des méthodes est réalisée par une ou plusieurs classes concrètes,
sous-classes de l’interface. Dans ce cas, la relation d’héritage qui existe entre l’interface et une
sous-classe d’implantation est appelée relation de réalisation. Graphiquement, elle est
représentée par un trait pointillé au lieu d’un trait plein pour une relation d’héritage entre deux
classes.
Exemple Un cheval de course peut être considéré comme une interface. Celle-ci est
composée de plusieurs méthodes : courir, arrêter, etc. L’implantation peut ensuite différer. Une
course de galop ou de trot se fait seulement avec des chevaux entraînés pour l’une ou l’autre de
ces courses. Pour des chevaux de galop, courir signifie galoper. Pour des chevaux de trot (un
trotteur), courir signifie trotter. Tous deux répondent à l’interface ChevalCourse mais avec
une implantation différente due à leur entraînement. La figure suivante illustre l’exemple
Une même classe peut réaliser plusieurs interfaces. Il s’agit d’un cas particulier de
l’héritage multiple. En effet, aucun conflit n’est possible car seules les signatures des méthodes
Sont héritier dans la même classe de réalisation. Si plusieurs interfaces contiennent la
même signature, cette signature est implantée par une seule méthode dans la classe commune de
réalisation.
FICHE DE TD
Exercice 1 Analyse des besoins d'un vidéo Club
Les éditeurs procurent les cassettes aux exploitants soit en location soit en vente.
Les exploitants peuvent donc passer avec les éditeurs des contrats de location d'une durée
moyenne de 6 mois ou passer des commandes à partir de catalogues fournis régulièrement
par les éditeurs. Un vidéo club entretient des relations avec une trentaine d'éditeurs
environ. Lorsque les exploitants constatent une usure des cassettes qui leur appartiennent, ils
ont la possibilité de les vendre à des grossistes qui peuvent alors pratiquer des ventes au
rabais.
Un seul statut est proposé aux clients, celui d'adhérent. Chaque adhérent se voit
attribuer une carte d'adhésion sur laquelle est mentionné un code adhérent. Il peut
alors choisir entre plusieurs types d’abonnement. Les tarifs varient selon le mode
d'abonnement choisi. Quatre tarifs adaptés aux locations sont proposés en fonction des
différents types d'abonnement. Toutefois, on peut louer des cassettes aux clients non abonnés
sans leur faire profiter des avantages tarifaires réservés aux abonnés.
Une compagnie aérienne propose différents vols. Un vol est ouvert à la réservation et
fermé sur ordre de la compagnie. Un client peut réserver un ou plusieurs vols, pour des
passagers différents. Une réservation concerne un seul vol, et un seul passager. Une
réservation peut être annulée ou confirmée. Un vol a u n a é r o p o r t de départ et un
aéroport d’arrivée. Un vol a un jour et une heure de départ et un jour et une heure
d’arrivée. Un vol peut comporter des escales dans des aéroports Une escale a une heure
d’arrivée et une heure de départ. Chaque aéroport dessert une ou plusieurs villes
TAF: Produire le DCU et le Diagramme de Classe
Les paquets dont le poids dépasse les 20kg ou, dont le contenu est répertorié dans
une liste de marchandises bien définie par la réglementation douanière, doivent subir des
formalités avec les douanes Françaises, en liaison avec le service Export. Le paquet ne peut
être acheminé avant accord des douanes qui se matérialise par un bordereau avec les
références du paquet à acheminer et le montant de la taxe à la
charge du client. Le service Export de l'entreprise transmet alors l'information au service
de facturation. Celui-ci émet ensuite la facture finale à destination du client. Après
règlement, le service Export en est informé et transmet le paquet avec le bordereau des
douanes au service Logistique qui se charge de la livraison.
Travail à Faire :
1. Donner le diagramme des cas d’utilisation qui décrit le fonctionnement de cette société.
Exercice 6 : Magasin
Dans un magasin, le processus de vente est le suivant : le client entre,
passe dans les rayons, demande éventuellement des renseignements
ou procède à des essais, prend des articles (si le stock est suffisant),
Passe à la caisse où il règle ses achats (avec tout moyen de paiement
accepté : carte bancaire, liquide, chèque). Il peut éventuellement
bénéficier d’une réduction.
1- Modéliser cette situation par un diagramme de cas d’utilisation
2- Ressortir le diagramme de classes correspondant
3- Construire le diagramme de séquence pour le scénario d’achat
d’un produit.