Uml TSMM
Uml TSMM
Sommaire
Chapitre 1 : introduction à la modélisation objet
Chapitre 2 : Merise
Chapitre 3 : UML
1- Introduction
L’informatique s’est glissée imperceptiblement dans notre vie quotidienne. Des machines à laver,
distributeurs de billets, téléphones … quasiment toutes nos activités quotidiennes utilisent du logiciels,
et plus le temps passe, plus ce logiciel devient complexe et couteux. Pour surmonter ces difficultés, les
informaticiens vont devoir apprendre à faire à expliquer et à comprendre c’est pour ces raisons qu’ils
ont et auront toujours plus besoins de méthodes.
1-Pourquoi modeliser ?
Modéliser, c’est décrire de manière visuelle et graphique les besoins et, les solutions fonctionnelles et
techniques de votre projet logiciel pour obtenir des résultats fiables.
Les cuisiniers parlent de recettes de cuisine, les pilotes déroulent des check-lists avant le décollage,
les architectes dessinent des plans et les musiciens suivent des règles de composition.
Si vous avez à constituer un meuble en kit ou à brancher un nouvel équipement électronique? c’est plus
facile à partir de schéma plutôt qu’une page de texte.
Cet exemple nous démontre que l’utilisation de schémas et d’illustrations rend quelque chose de complexe
plus compréhensible.
Tous les domaines de la connaissance utilisent des méthodes plus ou moins sophistiquées et plus ou
moins formalisées.
UML nous aide à faire cette description de façon graphique et devient alors un excellent moyen pour
« visualiser » le(s) futur(s) logiciel(s).
Un logiciel qui a été réalisé sans analyse et sans conception (étapes où l’on modélise le futur logiciel)
risque lui aussi de ne pas répondre aux besoins, de comporter des anomalies et d’être très difficile à
maintenir. Tout comme la construction d’une maison nécessite des plans à différents niveaux (vision
extérieure, plan des différents étages, plans techniques…), la réalisation d’un logiciel ou d’un ensemble de
logiciels a besoin d’un certain nombre de diagrammes.
Le génie logiciel est un domaine de recherche qui a pour objectif de répondre à un problème qui
s'énonçait en deux constatations : d'une part le logiciel n'était pas fiable, d'autre part, il était
incroyablement difficile de réaliser dans des délais prévus des logiciels satisfaisant leur cahier des
charges.
L'objectif du génie logiciel est d'optimiser le coût de développement du logiciel. L'importance d'une
approche méthodologique s'est imposée à la suite de la crise de l'industrie du logiciel à la fin des
années 1970.
La maintenance est devenue une facette très importante du cycle de vie d'un logiciel.
Le cycle de vie d'un logiciel (en anglais software lifecycle), désigne toutes les étapes du
développement d'un logiciel, de sa conception à sa disparition.
L'objectif d'un tel découpage est de permettre de définir des jalons (tâches) intermédiaires
permettant la validation du développement logiciel, c'est-à-dire la conformité du logiciel avec les
besoins exprimés, et la vérification du processus de développement.
L'origine de ce découpage provient du constat que les erreurs ont un coût d'autant plus élevé qu'elles
sont détectées tardivement dans le processus de réalisation. Le cycle de vie permet de détecter les
erreurs au plus tôt et ainsi de maîtriser la qualité du logiciel, les délais de sa réalisation et les coûts
associés.
● l'objectif est de s'assurer de l'interfaçage des différents éléments (modules) du logiciel. Elle
fait l'objet de tests d'intégration consignés dans un document ;
Qualification (ou recette)
● elle vise à produire les informations nécessaires pour l'utilisation du logiciel et pour des
développements ultérieurs ;
Mise en production
chaque phase se termine à une date précise par la production de certains documents ou logiciels.
Les méthodes d'analyse et de conception fournissent une méthodologie et des notations standards
qui aident à concevoir des logiciels de qualité. Il existe différentes manières pour classer ces
méthodes, dont :
Les méthodes fonctionnelles (également qualifiées de méthodes structurées) trouvent leur origine
dans les langages procéduraux. Elles mettent en évidence les fonctions à assurer et proposent une
approche hiérarchique descendante et modulaire.
L'approche considère le logiciel comme une collection d'objets dissociés, identifiés et possédant des
caractéristiques. Une caractéristique est soit un attribut (i.e. une donnée caractérisant l'état de
l'objet), soit une entité comportementale de l'objet (i.e. une fonction). La fonctionnalité du logiciel
émerge alors de l'interaction entre les différents objets qui le constituent. L'une des particularités de
cette approche est qu'elle rapproche les données et leurs traitements associés au sein d'un unique
objet.
Comme nous venons de le dire, un objet est caractérisé par plusieurs notions :
L'identité
● l'objet possède une identité, qui permet de le distinguer des autres objets, indépendamment
de son état. On construit généralement cette identité grâce à un identifiant découlant
naturellement du problème (par exemple un produit pourra être repéré par un code, une
voiture par un numéro de série, etc.) ;
Les attributs
● il s'agit des données caractérisant l'objet. Ce sont des variables stockant des informations sur
l'état de l'objet ;
Les méthodes
● les méthodes d'un objet caractérisent son comportement, c'est-à-dire l'ensemble des actions
(appelées opérations) que l'objet est à même de réaliser. Ces opérations permettent de faire
réagir l'objet aux sollicitations extérieures (ou d'agir sur les autres objets). De plus, les
opérations sont étroitement liées aux attributs, car leurs actions peuvent dépendre des
valeurs des attributs, ou bien les modifier.
Concepts importants de l’approche objet
Notion de classe
Une classe est un type de données abstrait qui précise des caractéristiques (attributs et méthodes)
communes à toute une famille d'objets et qui permet de créer (instancier) des objets possédant ces
caractéristiques. Les autres concepts importants qu'il nous faut maintenant introduire sont
l'encapsulation, l'héritage et l'agrégation.
● d'attributs: il s'agit des données, dont les valeurs représentent l'état de l'objet
● Les méthodes : il s'agit des opérations applicables aux objets
Si on définit la classe voiture, les objets Peugeot 406, Volkswagen Golf seront des instanciations de
cette classe.
L’encapsulation
L'encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d'une
structure en cachant l'implémentation de l'objet, c'est-à-dire en empêchant l'accès aux données par un
autre moyen que les services proposés. L'encapsulation permet donc de garantir l'intégrité des données
contenues dans l'objet.
L'utilisateur d'une classe n'a pas forcément à savoir de quelle façon sont structurées les données dans
l'objet, cela signifie qu'un utilisateur n'a pas à connaître l'implémentation. Ainsi, en interdisant
l'utilisateur de modifier directement les attributs, et en l'obligeant à utiliser les fonctions définies pour
les modifier (appelées interfaces), on est capable de s'assurer de l'intégrité des données
L'encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces niveaux de
visibilité définissent les droits d'accès aux données selon que l'on y accède par une méthode de la
classe elle-même, d'une classe héritière, ou bien d'une classe quelconque.
Il existe trois niveaux de visibilité:
● publique: les fonctions de toutes les classes peuvent accéder aux données ou aux méthodes d'une
classe définie avec le niveau de visibilité public. Il s'agit du plus bas niveau de protection des
données
● protégée: l'accès aux données est réservé aux fonctions des classes héritières, c'est-à-dire par les
fonctions membres de la classe ainsi que des classes dérivées
● privée: l'accès aux données est limité aux méthodes de la classe elle-même. Il s'agit du niveau de
protection des données le plus élevé.
La notation UML permet de représenter le niveau de visibilité des attributs de façon graphique en
faisant précéder le nom de chaque attribut par un caractère représentant la visibilité:
L'héritage est un mécanisme de transmission des caractéristiques d'une classe (ses attributs et
méthodes) vers une sous-classe. Une classe peut être spécialisée en d'autres classes, afin d'y ajouter
des caractéristiques spécifiques ou d'en adapter certaines. Plusieurs classes peuvent être
généralisées en une classe qui les factorise, afin de regrouper les caractéristiques communes d'un
ensemble de classes.
Composition et agrégation
La composition peut être vue comme une relation “fait partie de” (“part of”), c’est à dire que si un
objet B fait partie d’un objet A alors B ne peut pas exister sans A. Ainsi si A disparaît alors B
également.
L’agrégation quant à elle est vue comme une relation de type “a un” (“has a”), c’est à dire que si un
objet A a un objet B alors B peut vivre sans A.
L'agrégation permet d'assembler des objets de base, afin de construire des objets plus complexes.
Agrégation, exemple :
Le polymorphisme représente la faculté d'une méthode à pouvoir s'appliquer à des objets de classes
différentes. Le terme polymorphisme indique qu'une entité peut apparaître suivant plusieurs formes.
Dans le cas de notre hiérarchie de documents nous remarquons qu'il existe une méthode qui porte le
même nom.
Il s'agit de la méthode description(). Elle apparaît sur toutes les classes faisant partie de la hiérarchie.
Chapitre 2 Merise
Le système d’information SI
Le système d'information ou SI, peut être défini comme étant l'ensemble des moyens humains,
matériels et immatériels mis en œuvre afin de gérer l'information au sein d'une unité, une entreprise
par exemple.
Il ne faut toutefois pas confondre un système d'information avec un système informatique. En effet,
les systèmes d'information ne sont pas toujours totalement informatisés et existaient déjà avant
l'arrivée des nouvelles technologies de l'information et des communications dont l'informatique fait
partie intégrante.
Autrefois, l'information était stockée sur papier à l'aide de formulaires, de dossiers, … et il existait
des procédures manuelles pour la traiter. Aujourd'hui, les systèmes informatisées, comme les
systèmes de gestion de bases de données relationnelles (SGBDR), sont mis au service du système
d'information
MERISE
MERISE est donc une méthode d'analyse et de conception des SI basée sur le principe de la
séparation des données et des traitements. Elle possède un certain nombre
de modèles (ou schémas) qui sont répartis sur 3 niveaux :
● Le niveau conceptuel,
● Le niveau logique ou organisationnel,
● Le niveau physique.
1-Modélisation d’une base de données niveau conceptuel
Il s'agit de l'élaboration du modèle conceptuel des données (MCD) qui est une représentation
graphique et structurée des informations mémorisées par un SI. Le MCD est basé sur deux notions
principales : les entités et les associations, d'où sa seconde appellation : le schéma
Entité/Association.
● La mise en place de règles de gestion (si celles-ci ne vous sont pas données),
● L'élaboration du dictionnaire des données,
● La recherche des dépendances fonctionnelles entre ces données,
● L'élaboration du MCD (création des entités puis des associations puis ajout des cardinalités).
il vous faut recueillir les besoins des futurs utilisateurs de votre application. Et à partir de ces besoins,
vous devez être en mesure d'établir les règles de gestion des données à conserver.
Prenons l'exemple d'un développeur qui doit informatiser le SI d'une bibliothèque. On lui fixe les
règles de gestion suivantes :
● Pour chaque livre, on doit connaître le titre, l'année de parution, un résumé et le type
(roman, poésie, science fiction, ...).
● Un livre peut être rédigé par aucun (dans le cas d'une œuvre anonyme), un ou plusieurs
auteurs dont on connaît le nom, le prénom, la date de naissance et le pays d'origine.
● Chaque exemplaire d'un livre est identifié par une référence composée de lettres et de
chiffres et ne peut être paru que dans une et une seule édition.
● Un inscrit est identifié par un numéro et on doit mémoriser son nom, prénom, adresse,
téléphone et adresse e-mail.
● Un inscrit peut faire zéro, un ou plusieurs emprunts qui concernent chacun un et un seul
exemplaire. Pour chaque emprunt, on connaît la date et le délai accordé (en nombre de
jours).
Ce qui arrive le plus souvent : les futurs utilisateurs de votre projet n'ont pas été en mesure de vous
fournir ces règles avec suffisamment de précision ; c'est pourquoi vous devrez les interroger afin
d'établir vous même ces règles.
Le dictionnaire des données est un document qui regroupe toutes les données que vous aurez à
conserver dans votre base (et qui figureront donc dans le MCD). Pour chaque donnée, il indique :
● Le code mnémonique : il s'agit d'un libellé désignant une donnée (par exemple «titre_l» pour
le titre d'un livre)
● La désignation : il s'agit d'une mention décrivant ce à quoi la donnée correspond (par
exemple «titre du livre»)
● Le type de donnée :
o A ou Alphabétique : lorsque la donnée est uniquement composée de caractères
alphabétiques (de 'A' à 'Z' et de 'a' à 'z')
o N ou Numérique : lorsque la donnée est composée uniquement de nombres (entiers
ou réels)
o AN ou Alphanumérique : lorsque la donnée peut être composée à la fois de
caractères alphabétiques et numériques
o Date : lorsque la donnée est une date (au format AAAA-MM-JJ)
o Booléen : Vrai ou Faux
● La taille : elle s'exprime en nombre de caractères ou de chiffres. Dans le cas d'une date au
format AAAA-JJ-MM, on compte également le nombre de caractères, soit 10 caractères. Pour
ce qui est du type booléen, nul besoin de préciser la taille (ceci dépend de l'implémentation
du SGBDR).
● Et parfois des remarques ou observations complémentaires (par exemple si une donnée est
strictement supérieure à 0, etc).
b- Entité d’un MCD
Chaque entité est unique et est décrite par un ensemble de propriétés encore appelées attributs ou
caractéristiques. Une des propriétés de l'entité est l'identifiant. Cette propriété doit posséder des
occurrences uniques et doit être source des dépendances fonctionnelles avec toutes les autres
propriétés de l'entité. Bien souvent, on utilise une donnée de type entier qui s'incrémente pour
chaque occurrence, ou encore un code unique spécifique du contexte.
Ainsi, si on reprend notre dictionnaire de données précédent, on schématise par exemple une entité
«Auteur» comme ceci :
À partir de cette entité, on peut retrouver la règle de gestion suivante : un auteur est identifié par un
numéro unique (id_a) et est caractérisé par un nom, un prénom et une date de naissance
Une association définit un lien sémantique entre une ou plusieurs entités. En effet, la définition de
liens entre entités permet de traduire une partie des règles de gestion qui n'ont pas été satisfaites par
la simple définition des entités.
Généralement le nom de l'association est un verbe définissant le lien entre les entités qui sont reliées
par cette dernière. Par exemple :
Ici l'association «être né» traduit les deux règles de gestion suivantes :
Vous remarquerez, que cette association est caractérisée par ces annotations 1,1 et 0,N qui nous ont
permis de définir les règles de gestions précédentes. Ces annotations sont appelées les cardinalités.
minimum, maximum
Les cardinalités les plus répandues sont les suivantes : 0,N ; 1,N ; 0,1 ; 1,1
L'identifiant d'une association ayant des cardinalités 0,N/1,N de part et d'autre, est obtenu par la
concaténation des entités qui participent à l'association. Imaginons l'association suivante :
Ici un auteur rédige au moins un ou plusieurs livres et pour chaque livre, on connaît le nombre de
chapitres rédigés par l'auteur (on connaît aussi le nombre total de chapitres pour chaque livre).
L'association «rédiger» peut donc être identifiée par la concaténation des propriétés id_a et id_l.
Ainsi, le couple id_a, id_l doit être unique pour chaque occurrence de l'association.
On dit que nb_chapitres (nombre de chapitres rédigés par un auteur, pour un livre) est une donnée
portée par l'association «rédiger». Cette association est donc une association porteuse de données.
Elaboration du MCD
Avec toutes ces connaissances, il nous est donc possible d'élaborer le MCD complet à partir des
données présentes dans le dictionnaire des données :
2- Passage MCD-MLD
Le modèle logique de données (MLD) est composé uniquement de ce que l'on appelle des relations.
Ces relations sont à la fois issues des entités du MCD mais aussi d'associations, dans certains cas. Ces
relations nous permettront par la suite de créer nos tables au niveau physique.
Une relation possède un nom qui correspond en général à celui de l'entité ou de l'association qui lui
correspond. Elle possède aussi une clef primaire qui permet d'identifier sans ambiguïté chaque
occurrence de cette relation.
Il existe un autre type de clef appelé clef étrangère. La clef étrangère est un attribut d'une relation qui
fait référence à la clef primaire d'une autre relation
Une association ayant des cardinalités 0,N ou 1,N de part et d'autre devient une relation dont la clef est
constituée des identifiants des entités reliées par cette association. Ces identifiants seront donc
également des clefs étrangères respectives.
Dans le cas d'associations porteuses de données, les données portées deviennent des attributs de la
relation correspondante. Si l'on reprend cet exemple :
La règle de conversion la plus répandue aujourd'hui est d'ajouter une clef étrangère dans la relation
qui correspond à l'entité se situant du côté de cette cardinalité 1,1. Cette clef étrangère fera donc
référence à la clef de la relation correspondant à la seconde entité reliée par l'association.
Prenons un exemple issu de l'association «être originaire de» et des entités «Auteur» et «Pays» :
Pays (nom_p)
Auteur (id_a, nom_a, prenom_a, date_naissance_a, nom_p#)
● L'association doit être binaire (c'est à dire relier uniquement deux entités et pas plus).
Lorsque deux entités sont toutes deux reliées avec une cardinalité 1,1 par une même association, on
peut placer la clef étrangère de n'importe quel côté.
Avec ces différentes règles de conversion, il nous est déjà possible de convertir notre MCD au complet
:
Comme vous pouvez le constater, le schéma de la base est déjà fait. Les règles de passage au SQL sont
assez simples :
Sélectionnez
CREATE TABLE Pays (
id_p INT NOT NULL,
nom_p VARCHAR(50),
PRIMARY KEY (id_p)
); ...
Cas particulier : association reflexive
Il est possible de relier une entité à elle même par une association, on parle dans ce cas là
d'association réflexive. Imaginons que l'on veuille connaître les inscrits qui sont mariés entre eux
tout en conservant leur date de mariage, voici ce que l'on obtiendrait au niveau conceptuel :
L’heritage
Désormais, MERISE II permet aussi de modéliser l'héritage entre les entités. L'héritage a du sens
lorsque plusieurs entités possèdent des propriétés similaires. On parle alors de généralisation avec un
sur-type (ou entité mère) et de spécialisation avec des sous-type (entités filles).
De façon générale, l'héritage peut être implanté au niveau relationnel en utilisant une clef étrangère
vers la relation mère, comme clef primaire pour les relations filles. Reprenons notre exemple
précédent :
Chapitre 3. UML
1-Introduction
UML, c’est l’acronyme anglais pour « Unified Modeling Language ». On le traduit par « Langage de
modélisation unifié ». La notation UML est un langage visuel constitué d’un ensemble de schémas, appelés
des diagrammes, qui donnent chacun une vision différente du projet à traiter son fonctionnement, sa mise
en route, les actions susceptibles d’être effectuées par le logiciel, etc. Réaliser ces diagrammes revient donc
à modéliser les besoins du logiciel à développer.
Le langage UML ne préconise aucune démarche, ce n’est donc pas une méthode. Chacun est libre d’utiliser
les types de diagramme qu’il souhaite, dans l’ordre qu’il veut. Il suffit que les diagrammes réalisés soient
cohérents entre eux, avant de passer à la réalisation du logiciel.
Quel est la différence entre une vue statique et une vue dynamique ?
Une vue statique permet de représenter la structure du modèle sans tenir compte de l’évolution au
cours du temps. Une vue dynamique représente au contraire les changements qui interviennent au
cours du temps.
Il représente les fonctionnalités (ou dit cas d’utilisation) nécessaires aux utilisateurs.
- Représente les utilisations possibles d’un système par les différents acteurs
- Représente le système du point de vue de l’utilisateur
- Un cas d’utilisation représente une manière d’utiliser
Elèments d’un diagramme de cas d’utilisation :
1 – Acteur
Un acteur est l'idéalisation d'un rôle joué par une personne externe, un processus ou une chose qui interagit
avec un système.
Il se représente par un petit bonhomme avec son nom (i.e. son rôle) inscrit dessous.
2- Cas d’utilisation
Un cas d'utilisation se représente par une ellipse contenant le nom du cas (un verbe à l'infinitif), et
optionnellement, au-dessus du nom, un stéréotype.
Exemple simplifié de diagramme de cas d'utilisation modélisant une borne d'accès à une banque.
Un acteur est qualifié de principal pour un cas d'utilisation lorsque ce cas rend service à cet acteur. Les autres
acteurs sont alors qualifiés de secondaires.
● les dépendances stéréotypées, qui sont explicitées par un stéréotype (les plus utilisés sont l'inclusion
et l'extension) ;
● et la généralisation/spécialisation.
Une dépendance se représente par une flèche avec un trait pointillé. Si le cas A inclut ou étend le cas B, la flèche
est dirigée de A vers B.
Un cas A inclut un cas B si le comportement décrit par le cas A inclut le comportement du cas B : le cas A
dépend de B par exemple, l'accès aux informations d'un compte bancaire inclut nécessairement une phase
d'authentification avec un identifiant et un mot de passe.
On dit qu'un cas d'utilisation A étend un cas d'utilisation B lorsque le cas d'utilisation A peut être appelé au
cours de l'exécution du cas d'utilisation B. Exécuter B peut éventuellement entraîner l'exécution de A :
contrairement à l'inclusion, l'extension est optionnelle. Cette dépendance est symbolisée par le
stéréotype << extend >>
Le symbole utilisé pour la généralisation est un flèche avec un trait plein dont la pointe est un triangle fermé
désignant le cas le plus général. Un cas A est une généralisation d'un cas B si B est un cas particulier de A. La
consultation d'un compte via Internet est un cas particulier de la consultation. Cette relation de
généralisation/spécialisation est présente dans la plupart des diagrammes UML et se traduit par le concept
d'héritage dans les langages orientés objet.
3- Le diagramme de séquence
● Les diagrammes de cas d’utilisation modélisent à QUOI sert le système, en organisant les interactions
possibles avec les acteurs.
● Les diagrammes de classes permettent de spécifier la structure et les liens entre les objets dont le système
est composé : ils spécifient QUI sera à l’oeuvre dans le système pour réaliser les fonctionnalités décrites
par les diagrammes de cas d’utilisation.
● Les diagrammes de séquences permettent de décrire COMMENT les éléments du système interagissent
entre eux et avec les acteurs :
Interaction
une interaction doit être décrite dans plusieurs diagrammes UML :
● Cas d’utilisation
● Séquences
Ligne de vie
Une ligne de vie représente un participant à une interaction (objet ou acteur). La syntaxe de son libellé est :
Dans le cas d’une collection de participants, un sélecteur permet de choisir un objet parmi n (par
exemple objets[2]).
Messages
Les principales informations contenues dans un diagramme de séquence sont les messages échangés entre les
lignes de vie :
Un message définit une communication particulière entre des lignes de vie (objets ou acteurs).
La réception des messages provoque une période d’activité (rectangle vertical sur la ligne de vie) marquant le
traitement du message (spécification d’exécution dans le cas d’un appel de méthode).
● Si un objet A envoie un message synchrone à un objet B, A reste bloqué tant que B n’a pas terminé.
● On peut associer aux messages d’appel de méthode un message de retour (en pointillés) marquant la
reprise du contrôle par l’objet émetteur du message synchrone.
Un message asynchrone n’est pas bloquant pour l’expéditeur. Le message envoyé peut être pris en compte par le
récepteur à tout moment ou ignoré.
Les méthodes correspondant aux messages synchrones doivent être définies dans un diagramme de classes.
Les méthodes sont définies dans la classe du récepteur, et pas de l’émetteur du message.
Fragment combiné
Un fragment combiné permet de décomposer une interaction complexe en fragments suffisamment simples pour
être compris il se représente de la même façon qu’une interaction. Il est représenté par un rectangle dont le coin
supérieur gauche contient un pentagone.
● alt : Contient une liste des fragments dans lesquels se trouvent d’autres séquences de messages. Une
seule séquence peut se produire à la fois.
● loop : Le fragment est répété un certain nombre de fois. Dans la protection, on indique la condition sous
laquelle il doit être répété.
● break : Si ce fragment est exécuté, le reste de la séquence est abandonné. Vous pouvez utiliser la
protection pour indiquer la condition dans laquelle la rupture se produira.
● critical : Utilisé dans un fragment par ou seq. Indique que les messages de fragment ne doivent pas être
entrelacés avec d’autres messages.
● seq : Il existe au moins deux fragments d’opérande. Les messages impliquant la même ligne de vie
doivent se produire dans l’ordre des fragments. Lorsqu’ils n’impliquent pas les mêmes lignes de vie, les
messages des différents fragments peuvent être entrelacés en parallèle.
● strict : Il existe au moins deux fragments d’opérande. Les fragments doivent se produire dans l’ordre
donné.
● ignore : Liste des messages que ce fragment ne décrit pas. Ils peuvent se produire dans le système en
cours d’exécution, mais ils ne sont pas significatifs quant aux objectifs de cette description.
● assert : Le fragment d’opérande spécifie les seules séquences valides. Généralement utilisé dans un
fragment Consider ou Ignore.
● neg : La séquence affichée dans ce fragment ne doit pas se produire. Généralement utilisé dans un
fragment Consider ou Ignore.
Réutilisation de séquences
Un fragment ref permet d’indiquer la réutilisation d’un diagramme de séquences défini par ailleurs.
En supposant qu’il existe un diagramme intitulé Authentification et un autre Paiement, on peut établir
le diagramme suivant :
Une instance est une concrétisation d'un concept abstrait. Par exemple :
● la Ferrari Enzo qui se trouve dans votre garage est une instance du concept
abstrait Automobile ;
● l'amitié qui lie Jean et Marie est une instance du concept abstrait Amitié ;
Une classe est un concept abstrait représentant des éléments variés comme :
Une classe est la description formelle d'un ensemble d'objets ayant une sémantique et des
caractéristiques communes. Un objet est une instance d'une classe
Par exemple, si l'on considère que Homme (au sens être humain) est un concept abstrait, on peut dire
que la personne Mohamed Ali est une instance de Homme. Si Homme était une classe, Mohamed Ali
en serait une instance : un objet.
Les opérations décrivent les éléments individuels d'un comportement que l'on peut invoquer. Ce sont
des fonctions qui peuvent prendre des valeurs en entrée et modifier les attributs ou produire des
résultats.
- les fonctions qui ne renvoient pas de valeur : on leur met un type spécial void (qui signifie «
vide »).
Encapsulation
L'encapsulation permet de définir des niveaux de visibilité des éléments d'un conteneur.
• Elle permet de définir les droits d’accès aux propriétés d’une classe.
• UML définit quatre niveaux d’encapsulation d’une propriété d’une classe
Il existe quatre visibilités prédéfinies.
Public ou + :
● tout élément qui peut voir le conteneur peut également voir l'élément indiqué.
Protected ou # :
● seul un élément situé dans le conteneur (classe) ou un de ses descendants peut voir
l'élément indiqué.
Private ou - :
● seul un élément situé dans le conteneur peut voir l'élément.
Package ou ∼ ou rien :
● seul un élément déclaré dans le même paquetage peut voir l'élément.
Une association est une relation entre deux classes (association binaire) ou plus (association n-aire)
Deux types de représentation d’une association (UML a tranché pour la première version)
multiplicité :
Association binaire
Association n-aire
● exactement un : 1 ou 1..1 ;
● plusieurs : * ou 0..* ;
● au moins un : 1..* ;
● de un à six : 1..6.
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. Une
classe-association est caractérisée par un trait discontinu entre la classe et l'association qu'elle
représente
Remarque : Il faut noter que, pour les habitués du modèle entité/relation, les multiplicités sont en
UML « à l'envers » (par référence à Merise) pour les associations binaires et « à l'endroit » pour les
n-aires avec n>2.
Imaginons que nous voulions ajouter une association Supérieur de dans le diagramme pour préciser
qu'une personne est le supérieur d'une autre personne
la raison de la contrainte {bag} qui, placée sur les terminaisons d'association de la classe-association
indique qu'il peut y avoir des liens multiples impliquant les mêmes paires d'objets.
Agrégation et composition
Agrégation :
Lorsque l'on souhaite modéliser une relation tout/partie où une classe constitue un élément plus
grand (tout) composé d'éléments plus petits (partie), il faut utiliser une agrégation(Elle représente
une relation de type "ensemble / élément").
Une agrégation est une association qui représente une relation d'inclusion structurelle ou
comportementale d'un élément dans un ensemble. Graphiquement, on ajoute un losange vide du
côté de l'agrégat (Agrégation : un élément est une composante facultative de l’autre A entre dans la
composition de B sans être indispensable à son fonctionnement).
Composition
La composition, également appelée agrégation composite, décrit une contenance structurelle entre
instances. Ainsi, la destruction de l'objet composite implique la destruction de ses composants. Une
instance de la partie appartient toujours à au plus une instance de l'élément composite : la
multiplicité du côté composite ne doit pas être supérieure à 1 (i.e. 1 ou 0..1). Graphiquement, on
ajoute un losange plein (✦) du côté de l'agrégat
Composition : un élément est une composante obligatoire de l’autre A entre dans la composition de
B et lui est indispensable
Généralisation et héritage
La généralisation décrit une relation entre une classe générale (classe de base ou classe parent) et
une classe spécialisée (sous-classe) est une dépendance de type « filiation » entre 2 items A est une
sorte de B. Dans le langage UML, ainsi que dans la plupart des langages objet, cette relation de
généralisation se traduit par le concept d'héritage.
Le symbole utilisé pour la relation d'héritage ou de généralisation est une flèche avec un trait plein
dont la pointe est un triangle fermé désignant le cas le plus général
● la classe enfant possède toutes les caractéristiques de ses classes parents, mais elle ne peut
accéder aux caractéristiques privées de cette dernière ;
● une classe enfant peut redéfinir une ou plusieurs méthodes de la classe parent. Sauf
indication contraire, un objet utilise les opérations les plus spécialisées dans la hiérarchie des
classes ;
● toutes les associations de la classe parent s'appliquent aux classes dérivées ;
● une instance d'une classe peut être utilisée partout où une instance de sa classe parent est
attendue. Par exemple, en se basant sur le diagramme de la figure toute opération acceptant
un objet d'une classe Animal doit accepter un objet de la classe Chat ;
● une classe peut avoir plusieurs parents, on parle alors d'héritage multiple. Le langage C++ est
un des langages objet permettant son implémentation effective.
Interface
Le rôle de ce classeur, stéréotypé << interface >>, est de regrouper un ensemble de propriétés et
d'opérations assurant un service cohérent. L'objectif est de diminuer le couplage entre deux
classeurs. Une interface est représentée comme une classe excepté l'absence du
mot-clef abstract (car l'interface et toutes ses méthodes sont, par définition, abstraites) et l'ajout du
stéréotype << interface >>
Une classe peut très bien réaliser plusieurs interfaces. Une classe (classe cliente de l'interface) peut
dépendre d'une interface (interface requise). On représente cela par une relation de dépendance et
le stéréotype « use ».