Uml
-
Upload
mohammed-zaoui -
Category
Documents
-
view
6.113 -
download
1
description
Transcript of Uml
https://www.facebook.com/groups/ISP.2011/
UML
Unified Modeling Language
Réalisé par :
Créé le : mercredi 11 mars 2009
UML offre une manière élégante de représenter le systèmeselon différentes vues complémentaires grâce aux diagrammes.Lorsqu'une entreprise désire un logiciel, elle le réalise parfoisen interne, mais le fait plus généralement réaliser par unesociété de services. Dans un cas comme dans l'autre il estnécessaire de définir l'ensemble des fonctionnalités que lelogiciel doit possèder. Le demandeur du logiciel n'a parfois pasde compétences particulières en informatique et exprime doncses souhaits sous forme d'un CdCF (Cahier des ChargesFonctionnelles), c'est-à-dire un document décrivant sous formetextuelle l'ensemble des particularités que le logiciel doitpossèder, les conditions qu'il doit remplir (système(s)d'exploitation visé(s)), les écueils à éviter, ainsi que les délaisimpartis, éventuellement des clauses sur le coût, les langages àutiliser, ...
UML : Introduction
Le CdCF est ainsi distribué à différentes sociétés deservices (dans le cas d'une sous-traitance) sous formed'un appel d'offre, auquel les sociétés vont répondrepar un coût, un délai, ...Lorsqu'une société obtient le marché et qu'elle décide(si elle a le choix) d'opter pour un langage orientéobjet, il lui faut dans un premier temps créer unmodèle (c'est là qu'intervient UML) à fin:
• de présenter au client la façon de laquelle ellecompte développer le logiciel.
• d'accorder tous les acteurs du projet.
UML : Introduction (suite)
UML : Historique
UML (Unified Modeling Language, que l'on peut traduire par"langage de modélisation unifié) est une notation permettantde modéliser un problème de façon standard. Ce langage estné de la fusion de plusieurs méthodes existant auparavant,et est devenu désormais la référence en terme demodélisation objet, à un tel point que sa connaissance estsouvent nécessaire pour obtenir un poste de développeurobjet.
UML n‟est pas une méthode: UML est un langage qui permetde représenter des modèles, mais il ne définit pas leprocessus d'élaboration des modèles. Qualifier UML de"méthode objet" n'est donc pas tout à fait approprié.
UML : Caractéristiques
UML est un support de communication: UML est avant toutun support de communication performant, qui facilite lareprésentation et la compréhension de solutions objet.
UML est basé sur un méta-modèle: UML est un moyend'exprimer des modèles objet en faisant abstraction deleur implémentation, c'est-à-dire que le modèle fourni parUML est valable pour n'importe quel langage deprogrammation. UML est un langage qui s'appuie sur unméta-modèle, un modèle de plus haut niveau qui définit leséléments d'UML (les concepts utilisables) et leursémantique (leur signification et leur mode d'utilisation).
UML : Caractéristiques (suite)
Un diagramme UML est une représentation graphique, quis'intéresse à un aspect précis du modèle. C'est uneperspective du modèle, pas "le modèle".
Chaque type de diagramme UML possède une structure (lestypes des éléments de modélisation qui le composent sontprédéfinis).
Un type de diagramme UML véhicule une sémantique précise(un type de diagramme offre toujours la même vue d'unsystème).
Combinés, les différents types de diagrammes UML offrentune vue complète des aspects statiques et dynamiques d'unsystème.
Par extension et abus de langage, un diagramme UML estaussi un modèle (un diagramme modélise un aspect du modèleglobal).
UML : Diagrammes (définition)
Il existe 2 types de vues du système qui comportent chacune leurs propres diagrammes :
- les vues statiques :
o diagrammes de cas d'utilisation
o diagrammes d'objets
o diagrammes de classes
o diagrammes de composants
o diagrammes de déploiement
- les vues dynamiques :
o diagrammes de collaboration
o diagrammes de séquence
o diagrammes d'états-transitions
o diagrammes d'activités
UML : Diagrammes (types)
Diagramme
des cas d’utilisation
UML : Unified Modeling Language
Les cas d‟utilisation(use cases)permettent de structurer les besoins des utilisateurs et les objectifs correspondants d'un système. Ils centrent l'expression des exigences du système sur ses utilisateurs : ils partent du principe que les objectifs du système sont tous motivés.
Description de l‟interaction entre l‟utilisateur et le système Une fois identifiés et structurés, ces besoins :
- définissent le contour du système à modéliser (ils précisent le but à atteindre),- permettent d'identifier les fonctionnalités principales (critiques) du système.
Diagramme des cas d’utilisation: Définition
L’acteur: Un acteur représente un rôle joué par une personne ou une chose qui interagit avec le système. (la même personne physique peut donc être représentée par plusieurs acteurs en fonction des rôles qu‟elle joue).un acteur n‟est pas nécessairement une personne physique : il peut être un service, une société, un système informatique …
Il existe 4 catégories d‟acteurs :- les acteurs principaux : les personnes qui utilisent les fonctions principales du système- les acteurs secondaires : les personnes qui effectuent des tâches administratives ou de maintenance.- le matériel externe : les dispositifs matériels incontournables qui font partie du domaine de l‟application et qui doivent être utilisés.- les autres systèmes : les systèmes avec lesquels le système doit interagir.
Diagramme des cas d’utilisation: Acteur
Un acteur se représente par un petit bonhomme avec son nom (son rôle) inscrit au dessous.
Il est également possible de représenter un acteur sous la forme d‟un classeur stéréotypé << actor >>
Diagramme des cas d’utilisation: Acteur (suite)
Le cas d’utilisation: Le cas d‟utilisation (ou use case) correspond à un objectif du système, motivé par un besoin d‟un ou plusieurs acteurs. L'ensemble des use cases décrit les objectifs (le but) du système.Un cas d‟utilisation se représente par une ellipse contenant le nom (un verbe à l‟infinitif) et optionnellement, au dessous du nom un stéréotype .Dans le cas ou l‟on désire présenter les attributs ou les opérations du cas d‟utilisation,il est préférable de le représenter sous la forme d‟un classeur stéréotypé <<use case>>.Nous reviendrons sur les notions d‟attributs et d‟opérations lorsque nous traiterons les diagrammes de classes et d‟objets.
Diagramme des cas d’utilisation: Le cas d’utilisation
Diagramme des cas d’utilisation: Exemples
Exemple 1 Exemple 2
Diagramme des cas d’utilisation: Exemples
Exemple 3 Exemple 4
Elle exprime l‟interaction existant entre un acteur et un cas d‟utilisation.
Il existe 3 types de relations entre cas d‟utilisation :- la relation de généralisation- la relation d‟extension- la relation d‟inclusion
1. La relation de généralisation:
Dans une relation de généralisation entre 2 cas d‟utilisation, le cas d‟utilisation enfant est une spécialisation du cas d‟utilisation parent.
Diagramme des cas d’utilisation: La relation
NB : un acteur peut également participer à des relations de généralisation avec d‟autres acteurs. Les acteurs « enfant » seront alors capables de communiquer avec les mêmes casd‟utilisation que les acteurs « parents ».
Diagramme des cas d’utilisation: La relation (suite)
2. La relation d’inclusion:
Elle indique que le cas d‟utilisation source contient aussi lecomportement décrit dans le cas d‟utilisation destination. Cetterelation permet ainsi de décomposer des comportements et dedéfinir des comportements partageables entre plusieurs casd‟utilisation.
Cette dépendance est symbolisée par le stéréotype <<include>>
Diagramme des cas d’utilisation: La relation (suite)
Pour réaliser l‟objectif <<virement», on utilise obligatoirement «identification ».
3. La relation d’extension:Elle indique que le cas d‟utilisation source ajoute son comportement au cas d‟utilisation destination. L‟extension peut être soumise à condition. Le comportement ajouté est inséré au niveau d‟un point d‟extension défini dans le cas d‟utilisation destination. Cette relation permet de modéliser les variantes de comportement d‟un cas d‟utilisation (selon les interactions des acteurs et l‟environnement du système).Cette dépendance est symbolisée par le stéréotype <<extend>>
Diagramme des cas d’utilisation: La relation (suite)
Exemple :
Diagramme des cas d’utilisation: La relation (suite)
Un cas d‟utilisation est une abstraction de plusieurs chemins d‟exécution. Une instance de cas d‟utilisation est appelée : « scénario ».
Chaque fois qu‟une instance d‟un acteur déclenche un cas d‟utilisation, un scénario est créé (le cas d‟utilisation est instancié). Ce scénario suivra un chemin particulier dans le cas d‟utilisation.
Les scénarios peuvent être classés en :
- scénarios principaux : il correspond à l‟instance principal du cas d‟utilisation. C‟est souvent le chemin « normal » d‟exécution du cas d‟utilisation qui n‟implique pas d‟erreurs.
- Scénarios secondaires : il peut être un cas alternatif (un choix), un cas exceptionnel ou une erreur.
Diagramme des cas d’utilisation: Les scénarios
Diagramme
de classes
UML : Unified Modeling Language
Le diagramme de classes exprime la structure statique dusystème en termes de classes et de relations entre cesclasses.
L‟intérêt du diagramme de classe est de modéliser lesentités du système d‟information.
Maison
Adresse
Valeur
Date construction
CLASSE OBJETS
234 Des érables
$180 000
1986 50 Laurier
$150 000
1959 765 Bellevue
$210 000
1996
...
Diagramme de classes : Définition
Diagramme de classes : La notion de classe
une classe est une description abstraite (condensée) d‟un ensembled‟objets du domaine de l‟application : elle définit leur structure,leur comportement et leurs relations.
Représentée par un rectangle comprenant 3 compartiments: lenom, les attributs et les opérations.
Les compartiments non pertinents peuvent ne pas être affichés
Nom de classeAttribut 1
Attribut 2
Opération 1
Opération 2
Nom de classeNom de classeAttribut 1
Attribut 2
Diagramme de classes : Stéréotypes
UML définit les stéréotypes de classe suivants :
- « classe implémentation » : il s’agit de l’implémentation d’uneclasse dans un langage de programmation.- « énumération » : il s’agit d’une classe qui définit un ensembled’identificateurs formant le domaine de la valeur.- « métaclasse » : il s’agit de la classe d’une classe, comme enSmalltalk.- « powertype » : une classe est un métatype : ses instances sonttoutes des sous-types d’un type donné.- « processus » : il s’agit d’une classe active qui représente unflot de contrôles lourd.- « thread » : il s’agit d’une classe active qui représente un flotde contrôles léger.- « type » : il s’agit d’une classe qui définit un domaine d’objetset les opérations applicables à ces objets.- « utilitaire » : il s’agit d’une classe réduite au concept demodule et qui ne peut être instanciée.
Diagramme de Classes : La notion d’attribut
Une classe correspond à un concept global d‟information et secompose d‟un ensemble d‟informations élémentaires, appeléesattributs de classe.
Un attribut représente la modélisation d‟une informationélémentaire représentée par son nom et son format.
Caractéristique d‟une classe d‟objets. Syntaxe: Visibilité Nom_attribut : Type_Attribut = Valeur_Initiale
Visibilité: définie en trois niveaux:+ :public, visible par toutes les classes;# :protégé, visible par les classes amies et classes dérivées;- :privé, visible seulement par les classes amies;
Dérivé (/): attribut obtenu par le traitement d‟autres attributs.
Rectangle
+ longueur :
entier
+ largeur: entier
+ /surface: entier
/Surface = longueur * largeur
L‟opération représente un élément de comportement des objets, défini de manière globale dans la classe.
Une opération est une fonctionnalité assurée par une classe. La description des opérations peut préciser les paramètres d‟entrée et de sortie ainsi que les actions élémentaires à exécuter.
Syntaxe:Visibilité Nom_Opération.
La classe rectangle contient les
attributs longueur et largeur et
l’opération surface qui
encapsule le calcul de surface
obtenu avec la longueur et la
largeur du rectangle.
Rectangle
+ Longueur: entier
+ Largeur: entier
+ Surface
(longeur:entier * largeur:entier)
: entier
Diagramme de Classes : La notion d’opération
Représente des relations structurelles entre classes d‟objets. Représentée par une forme verbale, active ou passive, en italique au milieu
de la ligne qui symbolise l‟association. Le sens de lecture du nom est indiqué par un petit triangle dirigé vers la
classe désignée par la forme verbale.
Diagramme de Classes : Association
Peut être représentée par des traits rectilignes ou obliques.
Il peut y avoir deux ou plusieurs associations de nature différente entre les deux mêmes classes.
Peut être récursive, i.e. qui affecte une seule classe.
Maison Personne
< habite
< possède
est habitée par >
est possédée par >
Personne
est mariée à >< est mariée à
Le rôle est l’extrémité d’une association qui décrit comment uneclasse en voit une autre à travers une association.
Il est placé à l’extrémité d’une association sans être en italique.
Personneparent
enfant
Maison Personne
< habite
est habitée par >habitation
habitant
Diagramme de Classes : Le rôle
On ajoute une classe-association à une association lorsqu‟elle ades attributs ou des opérations.
Une classe de ce type est une classe comme les autres et peutparticiper à d‟autres relations dans le modèle.
Diagramme de Classes : Classe-association
Diagramme de Classes : Association n-aire
•Relations entre plus de 2 classes (à éviter si possible)
La multiplicité définit le nombre d‟instances de l‟association pour une instance de la classe. La multiplicité est définie par un nombre entier ou un intervalle de valeurs. La multiplicité est notée sur le rôle (elle est notée à l‟envers de la notation MERISE).
Indique le nombre minimum et maximum d‟objets de la classequi peuvent être liés à un objet de l‟autre classe.
Une association possède deux cardinalités.
Diagramme de Classes : La multiplicité des associations
Une personne travaille pour 0 à plusieurs sociétés (*) et une société est employeur de 1 à plusieurs personnes (1..*).
Pour un emploi donné, un patron dirige de zéro à plusieurs travailleurs (0 ..*) et un travailleur est dirigé par zéro à un patron (0..1).
Société Personne< Travaille pour
employeur employé
Salaire
Emploi
* 1..*
patron
<Dirigetravailleur
0..1
0..*
Exemple:
Peut affecter une relation ou un groupe de relations. Chaîne de caractères entre accolades { } positionnée sur
l‟association affectée ou entre les associations affectées.
Diagramme de Classes : Contraintes sur les associations
Diagramme de Classes : Agrégation
Association non symétrique dans laquelle une des extrémités joueun rôle prédominant par rapport à l‟autre extrémité (agrégat).Les deux classes existent indépendamment, c‟est-à-dire qu‟elles“survivent” à la “destruction” de l‟autre classe.
Ne concerne qu‟un seul rôle de l‟association. Symbolisé par un losange vide du côté de l‟agrégat.
Symbole d’agrégation
La composition est un cas particulier de l‟agrégation dans laquelle la vie des composants est liée à celle des agrégats.
Association symétrique entre deux classes dont une classe(partie) compose l‟autre (composite). Les deux classes sontdépendantes, c‟est-à-dire que la partie “ne survit pas” à la“destruction” du composite.
Symbolisée par un losange plein du coté du composite.
Symbole de composition
Diagramme de Classes : Composition
Livre Page Mot< compose de 0,N
comprend de 1,N >
< fait partie de 1,1
comprend de 1,N >
Exemple 1:
Exemple 2:
Diagramme de Classes : Agrégation/Composition
Le principe de généralisation / spécialisation permet d‟identifierparmi les objets d‟une classe (générique) des sous-ensembles d‟objets(des classes spécialisées) ayant des définitions spécifiques. La classeplus spécifique (appelée aussi classe fille, classe dérivée, classespécialisée, classe descendante …) est cohérente avec la classe plusgénérale (appelée aussi classe mère, classe générale …), c‟est-à-direqu‟elle contient par héritage tous les attributs, les membres, lesrelations de la classe générale, et peut contenir d‟autres.
- La généralisation : il s‟agit de prendre des classes existantes déjàmises en évidences) et de créer de nouvelles classes qui regroupentleurs parties communes ; il faut aller du plus spécifique au plusgénéral.
- La spécialisation : il s‟agit de sélectionner des classes existantes(déjà identifiées) et d‟en dériver des nouvelles classes plusspécialisées, en spécifiant simplement les différences.
Diagramme de Classes : Généralisation/Spécialisation
Les classes peuvent avoir plusieurs superclasses ; dans ce cas, la généralisation est dite multiple et plusieurs flèches partent de la sous-classe vers les différentes superclasses. La généralisation multiple consiste à fusionner plusieurs classes en une seule classe.
Diagramme de Classes : Généralisation multiple
Diagramme de Classes : Contraintes de généralisation
Diagramme de Classes : Contraintes de généralisation
Diagramme de Classes : Classe abstraite
Classe sans instance immédiate Super-classe non instanciable directement, i.e. qui ne
donne pas naissance à des objets mais sert de conceptplus général pour les sous-classes.
Elle s‟applique uniquement pour la généralisation et jamaispour la spécialisation.
Les relations de dépendance sont utilisées lorsqu‟il existe une relation sémantique entre plusieurs éléments qui n‟est pas de nature structurelle. Une relation de dépendance définit une relation unidirectionnelle entre un élément source et un élément cible.
Une dépendance est une relation entre deux éléments de modélisation dans laquelle toute modification effectuée sur un élément de modélisation (l'élément influent) affecte l'autre élément (élément dépendant).
UML définit 4 types de relation de dépendance. Pour chaque type de dépendance, un mot clé ou stéréotype entre guillemets peut être ajouté à la relation de dépendance pour préciser sa nature.
Diagramme de Classes : Dépendance
Les 4 types de relation sont :
Abstraction :Il s‟agit d‟une relation de dépendance entre éléments qui représentent un même concept à différents niveaux d‟abstraction ou selon des points de vue distincts.
Les mots-clés sont :
o « « dérive » » : représente un élément défini ou calculé à partir d‟un autre. Par exemple, un attribut ou un rôle peut dériver d‟autres attributs ou rôles.
o « « raffine » » : représente une relation de dépendance entre des éléments sémantiques différents (analyse et conception par exemple).
o « « réalise » » : représente une relation de dépendance entre une spécification (cible) et l‟élément qui implémente cette spécification (source).
o « « trace » » : représente l‟historique des constructions présentes dans les différents modèles.
Liaison : Les paramètres formels d‟une classe ou collaboration paramétrables doivent être liés à des valeurs.
Le mot clé est :
o « « lie » »
Diagramme de Classes : Dépendance (suite)
Permission: Un élément (source) a le droit d‟accéder à un espace de nommage (cible)
o « « ami » »: Représente un élément source (paquetage, classe, opération …) qui a accès à l‟élément destination (paquetage, classe, opération …) quelle que soit la spécification de visibilité de ce dernier.
Utilisation: Un élément (source) requiert la présence d‟un autre élément (cible) pour son bon fonctionnement ou son implémentation.
o « « utilise » »o « « appelle » »
Représente une relation de dépendance entre une opération qui invoque une opération d‟une autre classe. Cette relation est représentée en connectant les opérations ou les classes qui possèdent ces opérations.
o « « crée » »: Représente le classificateur source qui crée une instance du classificateur cible.
o « « instancie » »: Représente une relation de dépendance entre classificateurs due à la création d‟une instance du classificateur cible par une opération du classificateur source.
Exemple
Diagramme de Classes :Dépendance (suite)
Diagramme de Classes : L’interface
Une interface définit le comportement visible d‟une classe. Cecomportement est défini par une liste d‟opérations ayant unevisibilité « public ». Aucun attribut ou association n‟est défini pourune interface.
Une interface est en fait une classe particulière (avec lestéréotype « « interface » »).
UML représente les interfaces : - soit au moyen de petits cercles reliés par un trait à l‟élément qui
fournit les services décrits par l‟interface - soit au moyen de classes avec le mot clé « « interface » ». Cette
notation permet de faire figurer dans le compartiment desopérations la liste des services de l‟interface.
L’exemple illustre la modélisationde 2 interfaces crédit etassurance d’une classe banque.Une relation de réalisationindique que la classe banqueréalise l’interface assurance.
Mécanisme général pour la partition des modèles et le regroupement des éléments de modélisation
Est représenté graphiquement par un dossier
Correspond à un sous-ensemble du modèle
Nom du
package
Diagramme de Classes : Package
Peut contenir entre autre des classes, des objets, desrelations et d‟autres paquetages, sans limite du niveaud‟emboîtement.
Les relations possibles entre paquetages sont lesdépendances et les généralisations.
Paquetage racine
Classe
Sous-paquetage
Généralisation
Dépendance
Diagramme de Classes : Package (suite)
Une classe contenue par un paquetage peut également apparaître dans un autre paquetage sous la forme d‟un élément importé. Cela crée une relation de dépendance indiquée par le sens de la flèche.
<<import>>
Limites Administratives
Ville
Socio-économique
LA::Ville
classe importée
Diagramme de Classes : Package (suite)
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
1° Des compagnies aériennes proposent différents vols.
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
1° Des compagnies aériennes proposent différents vols.
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
1° Des compagnies aériennes proposent différents vols.
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
1° Des compagnies aériennes proposent différents vols.
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4° Une réservation concerne un seul vol, et un seul passager.
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
1° Des compagnies aériennes proposent différents vols.
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4° Une réservation concerne un seul vol, et un seul passager.
5° Une réservation peut être annulée ou confirmée.
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
1° Des compagnies aériennes proposent différents vols.
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4° Une réservation concerne un seul vol, et un seul passager.
5° Une réservation peut être annulée ou confirmée.
6° Unvolaunaéroportdedépartetunaéroportd’arrivée.
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
1° Des compagnies aériennes proposent différents vols.
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4° Une réservation concerne un seul vol, et un seul passager.
5° Une réservation peut être annulée ou confirmée.
6° Unvolaunaéroportdedépartetunaéroportd’arrivée.
7° Unvolaunjouretuneheurededépartetunjouretuneheured’arrivée.
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
1° Des compagnies aériennes proposent différents vols.
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4° Une réservation concerne un seul vol, et un seul passager.
5° Une réservation peut être annulée ou confirmée.
6° Unvolaunaéroportdedépartetunaéroportd’arrivée.
7° Unvolaunjouretuneheurededépartetunjouretuneheured’arrivée.
8° Un vol peut comporter des escales dans des aéroports.
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
1° Des compagnies aériennes proposent différents vols.
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4° Une réservation concerne un seul vol, et un seul passager.
5° Une réservation peut être annulée ou confirmée.
6° Unvolaunaéroportdedépartetunaéroportd’arrivée.
7° Unvolaunjouretuneheurededépartetunjouretuneheured’arrivée.
8° Un vol peut comporter des escales dans des aéroports.
9° Uneescaleauneheured’arrivéeetuneheurededépart.
Diagramme de classes : Étude de cas
Soit le cas ’’Réservation de vols dans une agence de voyage’’
1° Des compagnies aériennes proposent différents vols.
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4° Une réservation concerne un seul vol, et un seul passager.
5° Une réservation peut être annulée ou confirmée.
6° Unvolaunaéroportdedépartetunaéroportd’arrivée.
7° Unvolaunjouretuneheurededépartetunjouretuneheured’arrivée.
8° Un vol peut comporter des escales dans des aéroports.
9° Uneescaleauneheured’arrivéeetuneheurededépart.
10° Chaque aéroport dessert une ou plusieurs villes.
Diagramme de classes : Étude de cas
Modélisation de la phrase :
1° Des compagnies aériennes proposent différents vols.
Modélisation de la phrase :
1° Des compagnies aériennes proposent différents vols.
CompagnieAerienne et Vols sont 2 objets métiers : 2 classes
CompagnieAerinne VolPropose1..*
Modélisation de la phrase :
1° Des compagnies aériennes proposent différents vols.
CompagnieAerienne et Vols sont 2 objets métiers : 2 classes
CompagnieAerinne VolPropose1..*
Modélisation de la phrase :
1° Des compagnies aériennes proposent différents vols.
CompagnieAerienne et Vols sont 2 objets métiers : 2 classes
• Un vol est réalisé par une seule compagnie mais partagé par plusieurs affréteurs
CompagnieAerinne VolPropose1..*
Modélisation de la phrase :
1° Des compagnies aériennes proposent différents vols.
CompagnieAerienne et Vols sont 2 objets métiers : 2 classes
• Un vol est réalisé par une seule compagnie mais partagé par plusieurs affréteurs
CompagnieAerinne VolPropose1..*
affréteur
1..*
Modélisation de la phrase :2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
Modélisation de la phrase :2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
CompagnieAerinne Propose1..*
affréteur
1..*Vol
état (ouvert, fermé)
Modélisation de la phrase :2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
Tout objet peut avoir un état (diagramme d‟états).
Dans un diagramme de classes tout concept dynamique est modélisé en opération.
Il faut représenter la 2° phrase par 2 opérations : ouvrirReservation( ) et fermerReservation( )
Dans quelle classe ? Responsabilité d‟une classe
CompagnieAerinne Propose1..*
affréteur
1..*Vol
état (ouvert, fermé)
Modélisation de la phrase :2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
Tout objet peut avoir un état (diagramme d‟états).
Dans un diagramme de classes tout concept dynamique est modélisé en opération.
Il faut représenter la 2° phrase par 2 opérations : ouvrirReservation( ) et fermerReservation( )
Dans quelle classe ? Responsabilité d‟une classe
CompagnieAerinne Propose1..*
affréteur
1..*Vol
état (ouvert, fermé)
CompagnieAerinne Propose1..*
affréteur
1..*Vol
ouvrirVol( )fermerVol( )
Modélisation de la phrase :2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
Tout objet peut avoir un état (diagramme d‟états).
Dans un diagramme de classes tout concept dynamique est modélisé en opération.
Il faut représenter la 2° phrase par 2 opérations : ouvrirReservation( ) et fermerReservation( )
Dans quelle classe ? Responsabilité d‟une classe
CompagnieAerinne Propose1..*
affréteur
1..*Vol
état (ouvert, fermé)
CompagnieAerinne Propose1..*
affréteur
1..*Vol
ouvrirVol( )fermerVol( )
Les opérations sont déclarées dans l‟objet dans lequel elles doivent s‟exécuter
Les autres pourront déclencher ces opérations par envoi de messages
Le classe CompagnieAerienne a une association avec la classe vol.
Modélisation des phrases :3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
a effectué
0..*
0..*
0..* Vol
Passager
1
1
concerne
Réservation
Annuler( )Confirmer( )
concerne
Client 1
Modélisation des phrases :3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
Il faut discerner un client d‟un passager
a effectué
0..*
0..*
0..* Vol
Passager
1
1
concerne
Réservation
Annuler( )Confirmer( )
concerne
Client 1
Modélisation des phrases :4° Une réservation concerne un seul vol, et un seul passager.
5° Une réservation peut être annulée ou confirmée.
Modélisation des phrases :4° Une réservation concerne un seul vol, et un seul passager.
5° Une réservation peut être annulée ou confirmée.
La réservation et le passager sont 2 concepts métier : 2 classes d‟objets
Un réservation concerne un seul vol et un seul passager: donc 2 associations entre „‟Vol’’ et ‟‟Réservation’’ et entre ’’Réservation’’ et „‟Passager’’.
La 5° phrase se traduit par l‟ajout de 2 opérations annuler( ) et confirmer( ) dans ‘’Reservation’’.
Modélisation des phrases :4° Une réservation concerne un seul vol, et un seul passager.
5° Une réservation peut être annulée ou confirmée.
La réservation et le passager sont 2 concepts métier : 2 classes d‟objets
Un réservation concerne un seul vol et un seul passager: donc 2 associations entre „‟Vol’’ et ‟‟Réservation’’ et entre ’’Réservation’’ et „‟Passager’’.
La 5° phrase se traduit par l‟ajout de 2 opérations annuler( ) et confirmer( ) dans ‘’Reservation’’.
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Passager
1
1
concerne
Réservation
Annuler( )Confirmer( )
concerne
Modélisation des phrases :6° Un vol a un aéroport de départ et un aéroport d’arrivée.
Modélisation des phrases :6° Un vol a un aéroport de départ et un aéroport d’arrivée.
Par quoi peut-on représenter l‟élément „‟Aéroport‟‟ ?
3 réponses sont envisageables :
Modélisation des phrases :6° Un vol a un aéroport de départ et un aéroport d’arrivée.
Par quoi peut-on représenter l‟élément „‟Aéroport‟‟ ?
3 réponses sont envisageables :
1. Soit avec une classe et une association de multiplicité 2
Modélisation des phrases :6° Un vol a un aéroport de départ et un aéroport d’arrivée.
Modélisation peu parlante.
Par quoi peut-on représenter l‟élément „‟Aéroport‟‟ ?
3 réponses sont envisageables :
1. Soit avec une classe et une association de multiplicité 2
{ ordered}
2
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArriveeaeroportDepartaeroportArivvee
Aéroport
nom
Modélisation des phrases :6° Un vol a un aéroport de départ et un aéroport d’arrivée.
Modélisation des phrases :6° Un vol a un aéroport de départ et un aéroport d’arrivée.
2. Soit avec 2 classes
Modélisation des phrases :6° Un vol a un aéroport de départ et un aéroport d’arrivée.
Modélisation non correcte. Tout aéroport peut être de départ et d‟arrivée.
2. Soit avec 2 classes
1
Vols
ouvrirReservation( )fermerReservation( )
dateDepartheureDepartdateArriveeheureArriveeaeroportDepartraeroportArivvee
Aéroport
nom
AeroportDepart
AeroportArrivee1
Modélisation des phrases :6° Un vol a un aéroport de départ et un aéroport d’arrivée.
Modélisation des phrases :6° Un vol a un aéroport de départ et un aéroport d’arrivée.
2. Soit avec 2 associations
Modélisation des phrases :6° Un vol a un aéroport de départ et un aéroport d’arrivée.
Le rôle de chaque association précise son sens.
2. Soit avec 2 associations
1
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Aéroport
Nom…
1
Départ
Arrivée
Modélisation des phrases :7° Un vol a un jour et une heure de départ et un jour et une heure d’arrivée.
Modélisation des phrases :7° Un vol a un jour et une heure de départ et un jour et une heure d’arrivée.
Les dates et les heures de départ et d‟arrivée ne représentent que des valeurs : attributs.
Modélisation des phrases :7° Un vol a un jour et une heure de départ et un jour et une heure d’arrivée.
Les dates et les heures de départ et d‟arrivée ne représentent que des valeurs : attributs.
CompagnieAerinne Propose1..*
affréteur
1..*Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Modélisation des phrases :7° Un vol a un jour et une heure de départ et un jour et une heure d’arrivée.
Les dates et les heures de départ et d‟arrivée ne représentent que des valeurs : attributs.
CompagnieAerinne Propose1..*
affréteur
1..*Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Pour savoir si un élément doit être représenté en attribut ou en objet :
S‟il n‟ y a que sa valeur qui est intéressante : c‟est plutôt un attribut.
Si plusieurs questions peuvent concerner l‟élément, alors il faut le représenter en objet.
Modélisation des phrases :8° Un vol peut comporter des escales dans des aéroports.
9° Une escale a une heure d’arrivée et une heure de départ.
Modélisation des phrases :8° Un vol peut comporter des escales dans des aéroports.
9° Une escale a une heure d’arrivée et une heure de départ.
Une escale a les propriétés heure d‟arrivée et heure de départ, c‟est donc un objet.
Modélisation des phrases :8° Un vol peut comporter des escales dans des aéroports.
9° Une escale a une heure d’arrivée et une heure de départ.
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Aéroport
nom1
1
Depart
Arrivee
Escale
heureArriveeheureDepart
0..*
Une escale a les propriétés heure d‟arrivée et heure de départ, c‟est donc un objet.
Modélisation des phrases :8° Un vol peut comporter des escales dans des aéroports.
9° Une escale a une heure d’arrivée et une heure de départ.
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Aéroport
nom1
1
Depart
Arrivee
Escale
heureArriveeheureDepart
0..*
Une escale a les propriétés heure d‟arrivée et heure de départ, c‟est donc un objet.
Quelles sont alors les multiplicités entre „’Vols’’ et „’Escale’’, entre „’Escale’’ et ‘’Aeroport’’ et entre ‘’Aeroport’’ et ’Vols’’ ?
Modélisation des phrases :8° Un vol peut comporter des escales dans des aéroports.
9° Une escale a une heure d’arrivée et une heure de départ.
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Aéroport
nom1
1
Depart
Arrivee
Escale
heureArriveeheureDepart
0..*
Une escale a les propriétés heure d‟arrivée et heure de départ, c‟est donc un objet.
Quelles sont alors les multiplicités entre „’Vols’’ et „’Escale’’, entre „’Escale’’ et ‘’Aeroport’’ et entre ‘’Aeroport’’ et ’Vols’’ ?
0..*
0..*
1..*1
0..*
Modélisation des phrases :8° Un vol peut comporter des escales dans des aéroports.
9° Une escale a une heure d’arrivée et une heure de départ.
Modélisation des phrases :8° Un vol peut comporter des escales dans des aéroports.
9° Une escale a une heure d’arrivée et une heure de départ.
„’Escale’’ a peu d‟informations propres. Elle n‟est qu‟une partie de ’’Vol’’ .
Modélisation des phrases :8° Un vol peut comporter des escales dans des aéroports.
9° Une escale a une heure d’arrivée et une heure de départ.
„’Escale’’ a peu d‟informations propres. Elle n‟est qu‟une partie de ’’Vol’’ .
On peut la représenter comme une spécialisation de ’’Aéroport’’ . Mais elle n‟est pas totalement un aéroport.
Modélisation des phrases :8° Un vol peut comporter des escales dans des aéroports.
9° Une escale a une heure d’arrivée et une heure de départ.
„’Escale’’ a peu d‟informations propres. Elle n‟est qu‟une partie de ’’Vol’’ .
On peut la représenter comme une spécialisation de ’’Aéroport’’ . Mais elle n‟est pas totalement un aéroport.
La meilleure solution serait de la modéliser comme une classe d‟association entre et ’Vols’’ et ‘’Aéroport’’.
Modélisation des phrases :8° Un vol peut comporter des escales dans des aéroports.
9° Une escale a une heure d’arrivée et une heure de départ.
„’Escale’’ a peu d‟informations propres. Elle n‟est qu‟une partie de ’’Vol’’ .
On peut la représenter comme une spécialisation de ’’Aéroport’’ . Mais elle n‟est pas totalement un aéroport.
La meilleure solution serait de la modéliser comme une classe d‟association entre et ’Vols’’ et ‘’Aéroport’’.
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Aéroport
nom1
1
Départ
Arrivée
Escale
heureArriveeheureDepart
Escale
0..*0..*
0..*
0..*
{Ordered}
Modélisation des phrases :10° Chaque aéroport dessert une ou plusieurs villes.
Modélisation des phrases :10° Chaque aéroport dessert une ou plusieurs villes.
On ne peut pas savoir la multiplicité de „’Aéroport’’
Modélisation des phrases :10° Chaque aéroport dessert une ou plusieurs villes.
Aéroport dessert
1..*
Ville
On ne peut pas savoir la multiplicité de „’Aéroport’’
Modélisation des phrases :10° Chaque aéroport dessert une ou plusieurs villes.
Aéroport dessert
1..*
Ville
0..*
On ne peut pas savoir la multiplicité de „’Aéroport’’
Modélisation des phrases :10° Chaque aéroport dessert une ou plusieurs villes.
Aéroport dessert
1..*
Ville
0..*
Si on considère que desservir une ville signifie l‟aéroport le plus proche, il n‟ en y a qu‟un :
la multiplicité est de 1
Si on considère que desservir une ville signifie les aéroports dans un rayon de 35 km :
la multiplicité est de 0..*
On ne peut pas savoir la multiplicité de „’Aéroport’’
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Aéroport
nom1
1
départ
arrivée
InfosEscale
heureArriveeheureDepart
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..*
Passager
1
concerne
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
CompagnieAerinne
Propose
1..*
1..*
nom Prénom
adresse
téléphone
nom
nom Prénom nom
datenuméro
Le diagramme des classe complet est :
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Aéroport
nom1
1
départ
arrivée
InfosEscale
heureArriveeheureDepart
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..*
Passager
1
concerne
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
CompagnieAerinne
Propose
1..*
1..*
nom Prénom
adresse
téléphone
nom
nom Prénom nom
datenuméro
InfosEscale
heureArriveeheureDepart
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Aéroport
nom1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..*
Passager
1
concerne
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
Propose
0..1
1..*
nom Prénom
adresse
tél
nom Prénom nom
{frozen}
{frozen}
CompagnieAerinnenom
numéro
datenuméro
Diagramme des classe complet et annoté:
InfosEscale
heureArriveeheureDepart
Vol
ouvrirVol( )fermerVol( )
dateDepartheureDepartdateArriveeheureArrivee
Aéroport
nom1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..*
Passager
1
concerne
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
Propose
0..1
1..*
nom Prénom
adresse
tél
nom Prénom nom
{frozen}
{frozen}
CompagnieAerinnenom
numéro
datenuméro
InfosEscale
heureArrivéeheureDépart
‘’ métaclasse ‘’VolGenerique
ouvrirVol( )fermerVol( )
jourheureDépartheureArrivée/duréepériodevalidité
Aéroport
nom1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..* 1
concerne
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1concerne
Propose
0..1
1
nom Prénom
adresse
téléphone
Passager
nom Prénomnom
{frozen}
{frozen}
CompagnieAérienne
nom
numéro
datenuméro
Vol
ouvrirVol( )fermerVol( )
dateDépartdateArrivée
{frozen}{AddOnly}
décrit
0..* 1
1..*
0..*
propose
Affréteur
Le diagramme des classe complet devient :
InfosEscale
heureArrivéeheureDépart
‘’ métaclasse ‘’VolGenerique
ouvrirVol( )fermerVol( )
jourheureDépartheureArrivée/duréepériodevalidité
Aéroport
nom1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..* 1
concerne
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1concerne
Propose
0..1
1
nom Prénom
adresse
téléphone
Passager
nom Prénomnom
{frozen}
{frozen}
CompagnieAérienne
nom
numéro
datenuméro
Vol
ouvrirVol( )fermerVol( )
dateDépartdateArrivée
{frozen}{AddOnly}
décrit
0..* 1
1..*
0..*
propose
Affréteur
Le diagramme des classes peut être réorganisé en packages:
Le diagramme des classes peut être réorganisé en packages:
InfosEscale
heureArriveeheureDepart
‘’ metaclasse „‟VolGenerique
ouvrirVol( )fermerVol( )
jourheureDepartheureArrivee/duréeperiodevalidite
Aéroport
nom1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..* 1
concerne
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
Propose
0..1
1..*
nom Prénom
adresse
tééphonel
Passager
nom Prénomnom
{frozen}
{frozen}
CompagnieAerinnenom
numéro
datenumero
Vol
ouvrirVol( )fermerVol( )
dateDepartdateArrivee
{frozen}{AddOnly}
décrit
0..* 1
1..*
0..*
propose
Affréteur
Le diagramme des classes peut être réorganisé en packages:
InfosEscale
heureArriveeheureDepart
‘’ metaclasse „‟VolGenerique
ouvrirVol( )fermerVol( )
jourheureDepartheureArrivee/duréeperiodevalidite
Aéroport
nom1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..* 1
concerne
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
Propose
0..1
1..*
nom Prénom
adresse
tééphonel
Passager
nom Prénomnom
{frozen}
{frozen}
CompagnieAerinnenom
numéro
datenumero
Vol
ouvrirVol( )fermerVol( )
dateDepartdateArrivee
{frozen}{AddOnly}
décrit
0..* 1
1..*
0..*
propose
Affréteur
Le diagramme des classes peut être réorganisé en packages:
InfosEscale
heureArriveeheureDepart
‘’ metaclasse „‟VolGenerique
ouvrirVol( )fermerVol( )
jourheureDepartheureArrivee/duréeperiodevalidite
Aéroport
nom1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..* 1
concerne
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
Propose
0..1
1..*
nom Prénom
adresse
tééphonel
Passager
nom Prénomnom
{frozen}
{frozen}
CompagnieAerinnenom
numéro
datenumero
Vol
ouvrirVol( )fermerVol( )
dateDepartdateArrivee
{frozen}{AddOnly}
décrit
0..* 1
1..*
0..*
propose
Affréteur
0..* 1
concerne
{frozen}
Réservation
Annuler( )Confirmer( )
datenuméro
Réservations
Vol
ouvrirVol( )fermerVol( )
dateDepartdateArrivee
Vol
Réduire la dépendance mutuelle afin d‟augmenter la modularitéet l‟évolutivité d‟une application
0..* 1
concerne
{frozen}
Réservation
Annuler( )Confirmer( )
datenuméro
Réservations
Vol
ouvrirVol( )fermerVol( )
dateDepartdateArrivee
Vol
Réservations
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
nom Prénom
adresse
téléphone
Passager
nom Prénom
{frozen}
datenuméro
Réservations
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
nom Prénom
adresse
téléphone
Passager
nom Prénom
{frozen}
datenuméro
Vol
InfosEscale
heureArriveeheureDepart
‘’ metaclasse ‘’VolGenerique
ouvrirVol( )fermerVol( )
jourheureDepartheureArrivee/duréeperiodevalidite
Aéroport
nom1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
Propose
0..1
1
nom
CompagnieAerinne
nom
numéro
Vol
ouvrirVol( )fermerVol( )
dateDepartdateArrivee
{frozen}{AddOnly}
decrit
0..* 1
1..*
0..*
propose
Affréteur
Réservations
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
nom Prénom
adresse
téléphone
Passager
nom Prénom
{frozen}
datenuméro
Vol
InfosEscale
heureArriveeheureDepart
‘’ metaclasse ‘’VolGenerique
ouvrirVol( )fermerVol( )
jourheureDepartheureArrivee/duréeperiodevalidite
Aéroport
nom1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
Propose
0..1
1
nom
CompagnieAerinne
nom
numéro
Vol
ouvrirVol( )fermerVol( )
dateDepartdateArrivee
{frozen}{AddOnly}
decrit
0..* 1
1..*
0..*
propose
Affréteur
0..* 1
concerne
{frozen}
Réservations
Réservation
Annuler( )Confirmer( )
Client
a effectué0..*
1
0..*
1
concerne
nom Prénom
adresse
téléphone
Passager
nom Prénom
{frozen}
datenuméro
Vol
InfosEscale
heureArriveeheureDepart
‘’ metaclasse ‘’VolGenerique
ouvrirVol( )fermerVol( )
jourheureDepartheureArrivee/duréeperiodevalidite
Aéroport
nom1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
Propose
0..1
1
nom
CompagnieAerinne
nom
numéro
Vol
ouvrirVol( )fermerVol( )
dateDepartdateArrivee
{frozen}{AddOnly}
decrit
0..* 1
1..*
0..*
propose
Affréteur
0..* 1
concerne
{frozen}
Généralisation et réutilisation
Généralisation et réutilisation
On veut élargir ce domaine aux voyages par bus que des transporteurs assurent.
Un voyage en bus à une ville de départ et un ville d‟arrivée avec des dates et des heures associées.
Un trajet peut comporter des arrêts dans des villes intermédiaires.
Un client peut réserver un ou plusieurs voyages pour un ou plusieurs passagers
Généralisation et réutilisation
On veut élargir ce domaine aux voyages par bus que des transporteurs assurent.
Un voyage en bus à une ville de départ et un ville d‟arrivée avec des dates et des heures associées.
Un trajet peut comporter des arrêts dans des villes intermédiaires.
Un client peut réserver un ou plusieurs voyages pour un ou plusieurs passagers
VoyageEnBus
OuvrirVoyage( )fermerVoyage( )
dateDepartdateArrivee
VoyagesBusReservationsBus
ReservationBus
Annuler( )Confirmer( )
datenuméro
0..* 1
concerne
{frozen}
concerne
VoyagesBus
InfosArret
heureArriveeheureDepart
VoyageEnBus
ouvrirVoyage( )fermerVoyage( )
dateDepartheureDepartdateArriveeheureArrivee/durée
1
1
départ
arrivée
arrêt
0..*0..*
0..*
0..*
{ordered}
Propose0..1
1
Voyagistenom
référence
Ville
nom
ReservationsBus
0..*
1..*
concerne
Client
nom Prénom
adresse
téléphone
Passager
nom Prénom
{frozen}
ReservationBus
Annuler( )Confirmer( )
datenuméro
a effectué
0..*
1
{frozen}
concerne
VoyagesBus
InfosArret
heureArriveeheureDepart
VoyageEnBus
ouvrirVoyage( )fermerVoyage( )
dateDepartheureDepartdateArriveeheureArrivee/durée
1
1
départ
arrivée
arrêt
0..*0..*
0..*
0..*
{ordered}
Propose0..1
1
Voyagistenom
référence
Ville
nom
ReservationsBus
0..*
1..*
concerne
Client
nom Prénom
adresse
téléphone
Passager
nom Prénom
{frozen}
ReservationBus
Annuler( )Confirmer( )
datenuméro
a effectué
0..*
1
{frozen}
Fusion des 2 modèles
Fusion des 2 modèles
1. Il faut isoler les classes communes dans des packages
2. Il faut factoriser les propriétés communes
Fusion des 2 modèles
1. Il faut isoler les classes communes dans des packages
2. Il faut factoriser les propriétés communes
Fusion des 2 modèles
1. Il faut isoler les classes communes dans des packages
2. Il faut factoriser les propriétés communes
AVION
Vols
ReservationVols
BUS
ReservationBus
VoyagesBus
Lieux
Il faut isoler les classes communes dans des packages
Il faut isoler les classes communes dans des packages
Vol(from Vols)
ReservationVol(from ReservationsVols)
ReservationBus(from ReservationsBus)
VoyageEnBus(from VoyagesBus)
concerne concerne{frozen} {frozen}
1 1
Réservations
0..* 1
concerneClientnom Prénom
adresse
tél
Passager
nom Prénom
Réservation
Annuler( )Confirmer( )
datenuméro
{frozen}
a effectué
0..*1
Classe abstraite
ReservationsBus
Réservations
ReservationsVols
Packages spécialisés
Package généralisé
VolsVoyagesBus
ReservationsBus
Réservations
ReservationsVols
Packages spécialisés
Package généralisé
VolsVoyagesBus
LieuxPackage réutilisable
ReservationsBus
Réservations
ReservationsVols
Packages spécialisés
Package généralisé
Diagramme
d’objets
UML : Unified Modeling Language
Le diagramme d‟objets permet de mettre en évidencedes liens entre les objets. Les objets, instances declasses, sont reliés par des liens, instancesd‟associations.
A l‟exception de la multiplicité, qui est explicitementindiquée, le diagramme d‟objets utilise les mêmesconcepts que le diagramme de classes. Ils sontessentiellement utilisés pour comprendre ou illustrerdes parties complexes d‟un diagramme de classes.
Diagramme d’objets : Objectif
Notiond’Objet
Une abstraction du monde réel c.-à-d. des données informatiques regroupant des caractéristiques du monde réel.
Un objet est une instance d'une classe.
Exemple
une personne, une voiture, une maison, ...
Diagramme d’objets : Objet
Chaque objet est unique et a un identifiant qui ledistingue des autres objets.
Les objets peuvent avoir un nom suivi de deux points et
du nom de la classe.
Trois représentations possibles des instances :
Diagramme d’objets : Objet
Diagramme d’objets : Exemple
Diagramme
de composants
UML : Unified Modeling Language
Les diagrammes de composants décrivent les composants etleurs dépendances dans l‟environnement de réalisation.
En général, ils ne sont utilisés que pour des systèmescomplexes.
Les diagrammes de composants permettent de décrirel'architecture physique et statique d'une application enterme de modules : fichiers sources, librairies, exécutables,etc. Ils montrent la mise en œuvre physique des modèles dela vue logique avec l'environnement de développement.
Diagramme de composants : Objectif
Un composant est un élément physique qui représente unepartie implémentée d‟un système. Un composant peut êtredu code (source, binaire ou exécutable), un script, un fichierde commandes, un fichier de données, une table, etc. Il peutréaliser un ensemble d‟interfaces qui définissent alors lecomportement offert à d‟autres composants.
Diagramme de composants : Le composant
Diagramme de composants : La relation
Les relations de dépendance sont utilisées dans lesdiagrammes de composants pour indiquer qu‟un élémentd‟implémentation d‟un composant fait appel aux servicesofferts par les éléments d‟implémentation d‟un autrecomposant.
UML définit 5 stéréotypes aux composants :- «« document »» : un document quelconque- «« exécutable »» : un programme qui peut s‟exécuter- «« fichier »» : un document contenant un code source oudes données- «« bibliothèque »» : une bibliothèque statique oudynamique- «« table »» : une table de base de données relationnelle
Diagramme de composants : Stéréotypes
Diagramme de composants : Exemple
Diagramme
de déploiement
UML : Unified Modeling Language
Les diagrammes de déploiement montrent la dispositionphysique des différents matériels (les noeuds) qui entrentdans la composition d‟un système et la répartition desinstances de composants, processus et objets qui « vivent »sur ces matériels.
Le diagramme de déploiement modélise les composantsmatériels utilisés pour implémenter un système etl'association entre ces composants.
Les diagrammes de déploiement sont donc très utiles pourmodéliser l‟architecture physique d‟un système.
Diagramme de déploiement : Objectif
Un composant représente une entité logicielle du système. (fichier de code source, programmes, documents, fichiers de ressource .etc.). Sur un diagramme de déploiement, les composants sont placés dans des noeuds pour identifier l'endroit de leur déploiement.
Diagramme de déploiement : Le composant
Un noeud représente un ensemble d'éléments matériels dusystème. Cette entité est représentée par un cubetridimensionnel.
Diagramme de déploiement : Le nœud
Les noeuds sont connectés entre eux, à l'aide d'un supportde communication.
une association, représentée par une ligne pleine entre deuxnoeuds, indique une ligne de communication entre leséléments matériels.
Diagramme de déploiement : L’association
Le diagramme de déploiement ci-dessous montre que lecomposant SiteConfig est déployé sur le serveur Web et lecomposant Base DB est déployé sur le serveur APP. Nouspouvons également déterminer que le serveur Webcommunique avec le serveur APP, et le serveur APPcommunique avec le serveur de base de données et uneimprimante.
Diagramme de déploiement : Exemple
Diagramme
de collaboration
UML : Unified Modeling Language
Le diagramme de collaboration permet de mettre enévidence les interactions entre les différents objets dusystème.
Dans le cadre de l‟analyse, il sera utilisé- pour préciser le contexte dans lequel chaque objet évolue- pour mettre en évidence les dépendances entre lesdifférents objets impliqués dans l‟exécution d‟un processusou d‟un cas d‟utilisation.
Un diagramme de collaboration fait apparaître lesinteractions entre des objets et les messages qu‟ilséchangent.
Diagramme de collaboration: Objectif
Une interaction définit la communication entre les objetssous la forme d‟un ensemble partiellement ordonné demessages.
L‟objet émetteur envoie un message à l‟objet récepteur. Lesobjets représentés dans les diagrammes de collaboration nesont pas nécessairement des instances d‟entités. Certainsmessages peuvent avoir pour origine des acteurs que l‟onpourra représenter.
l‟interaction se représente par une flèche avec un textedécrivant le message.
Diagramme de collaboration: Les interactions
Les messages sont le seul moyen de communication entre lesobjets. Ils sont décrits essentiellement par l‟objet émetteur etl‟objet récepteur. Leur description peut être complétée par unnom, une séquence, des arguments, un résultat attendu, unesynchronisation, une condition d‟émission.
La séquence permet de préciser l‟ordre d‟émission des messages.
Diagramme de collaboration: Les messages
Le message 1 peut avoir comme arguments l‟intitulé du produit souhaité, la quantité et la catégorie du client.
Certains messages peuvent solliciter un résultat. Ce cas peut être modéliser de 2 façons :
- un message de demande et un message de réponse- indiquer sur le premier message le résultat attendu (lorsque
le message en retour est attendu immédiatement).
Diagramme de collaboration: Les messages (suite)
Ici, le message émis par le gérant implique la restitution immédiate du résultat du calcul:la valeur du stock.
ou
NB : l‟émission de message peut également être soumis à une condition, qui s‟exprime alors sur le texte du message.
Diagramme de collaboration: Les messages (suite)
Exemple : la demande deréapprovisionnement n‟estenvoyée au magasinier quelorsque la quantité en stockest inférieure au seuil de
réapprovisionnement.
Diagramme
de séquence
UML : Unified Modeling Language
Le diagramme de séquence est une variante du diagramme de collaboration.
Les diagrammes de séquences permettent de représenter des collaborations entre objets selon un point de vue temporel.
Le diagramme de séquence permet de visualiser les messages par une lecture de haut en bas. L‟axe vertical représente le temps, l‟axe horizontal les objets qui collaborent. Une ligne verticale en pointillé est attachée à chaque objet et représente sa durée de vie.
Diagramme de séquence: Objectif
La ligne de vie des objets est représentée par une ligne verticale en traits pointillés, placée sous le symbole de l‟objet concerné. Cette ligne de vie précise l‟existence de l‟objet concerné durant un certain laps de temps.
En général, une ligne de vie est représentée sur toute la hauteur du diagramme de séquence. Par contre, elle peut débuter et s‟interrompre à l‟intérieur du diagramme.
La destruction est indiquée par la fin de la ligne de vie et par une croix (X), soit à la hauteur du message qui cause la destruction, soit après le dernier message envoyé par un objet qui se suicide.
Diagramme de séquence: La ligne de vie
Message simple: message dont on ne spécifie aucunecaractéristique d'envoi ou de réception particulière.
Message minuté (timeout): bloque l'expéditeur pendant untemps donné (qui peut être spécifié dans une contrainte), enattendant la prise en compte du message par le récepteur.L'expéditeur est libéré si la prise en compte n'a pas eu lieupendant le délai spécifié.
Message synchrone: bloque l'expéditeur jusqu'à prise encompte du message par le destinataire. Le flot de contrôlepasse de l'émetteur au récepteur (l'émetteur devient passifet le récepteur actif) à la prise en compte du message.
Message asynchrone: n'interrompt pas l'exécution del'expéditeur. Le message envoyé peut être pris en comptepar le récepteur à tout moment ou ignoré (jamais traité).
Message dérobant: n'interrompt pas l'exécution del'expéditeur et ne déclenche une opération chez le récepteurque s'il s'est préalablement mis en attente de ce message.
Diagramme de séquence: Les catégories de message
Exemple :
Diagramme de séquence: Les catégories de message (suite)
Un objet peut s‟envoyer un message.
Formalisme : Cette situation se représente par une flèchequi revient en boucle sur la ligne de vie de l‟objet.
Diagramme de séquence: Le message réflexif
Les diagrammes de séquence permettent de représenter les périodes d‟activité des objets.
Une période d‟activité correspond au temps pendant lequel un objet effectue une action, soit directement, soit par l‟intermédiaire d‟un autre objet qui lui sert de sous-traitant.
les périodes d‟activité se représentent par des bandes rectangulaires placées sur la ligne de vie des objets.
Pour représenter de manière graphique une exécution conditionnelle d'un message, on peut documenter un diagramme de séquence avec du pseudo-code et représenter des bandes d'activation conditionnelles.
Diagramme de séquence: Les activations
Exemple :
Diagramme de séquence: Les activations
Ne confondez lapériode d'activationd'un objet avec sacréation ou sadestruction. Unobjet peut êtreactif plusieurs foisau cours de sonexistence
Une flèche qui symbolise un message peut être représentéeen oblique pour matérialiser les délais de transmission nonnégligeables par rapport à la dynamique générale del‟application.
Diagramme de séquence: Les contraintes temporelles
Diagramme de séquence: Exemple
Diagramme d'états-transitions
UML : Unified Modeling Language
Ils ont pour rôle de représenter les traitements(opérations) qui vont gérer le domaine étudié. Ilsdéfinissent l'enchaînement des états de classe et font doncapparaître l'ordonnancement des travaux.
Le diagramme d'états-transition est associé à une classepour laquelle on gère différents états : il permet dereprésenter tous les états possibles ainsi que lesévénements qui provoquent les changements d'état.
Décrit le comportement des objets d‟une classe au moyend‟un automate d‟états associé à la classe.
Diagramme d’états-transitions: Objectif
Un état correspond à une situation durable dans laquelle se trouvent les objets d'une classe.
On lui associe les règles de gestion et les activités particulières.
un état = étape dans le cycle de vie d‟un objet durant lequel
• il satisfait à certaines conditions
• il réalise certaines actions
• ou attend certains événements
La représentation symbolique des états d'une classe d'objets est la suivante (rectangle aux bords arrondis) :
Diagramme d’états-transitions: Notion d’état
Chaque diagramme d‟états-transitions comprend un étatinitial.
Pour un niveau hiérarchique donné, il y a un et un seul étatinitial, mais plusieurs états finaux correspondant chacun àune fin de vie de l‟objet différente.
Il est possible de n‟avoir aucun état final : ex : un systèmeque ne s‟arrête jamais.
Diagramme d’états-transitions: Notion d’état (suite)
L'état initial d'un objet : il
est obligatoire et unique
L'état final : selon les
événements, il peut exister
plusieurs états finaux
Un objet passe d'un état à un autre suite à un événement,certains événements pouvant ne pas provoquer dechangement d'état.
un événement est une information instantanée qui doit êtretraitée dans l’instant où il se produit.
Une transition est une relation entre 2 états. Elle estorientée ce qui signifie que l'état 2 est possible si certainsévénements sont vérifiés. Sa représentation symbolique estune flèche sur laquelle est annoté l'événement qui concourtau changement d'état.
Diagramme d’états-transitions: Evénements et transitions
Exemple :
Diagramme d’états-transitions: Evénements et transitions
Une commande passera dans l'état "En attente" dès lors qu'elle aura été expédiée
La transition peut être soumise à la vérification d'une expressionappelée "expression de garde".Une garde est une condition booléenne qui permet ou nonle déclenchement d‟une transition lors de l’occurrence d‟unÉvénement.
Exemple : La commande n'est expédiée que si la
commande comporte au moins 3 produits.
Diagramme d’états-transitions: actions et activités
Les opérations de description des classes sont décrites dans lediagramme d'étatstransitions sous forme d'actions et d'activités.
Une action est une opération élémentaire et instantanée. Elle peutêtre associée à l'événement lui-même ou à l'entrée dans l'état ouà la sortie de l'état.
• l‟action d’entrée (entry) est exécutée de manière instantanéeet atomique.
• l‟action de sortie (exit) est exécutée à la sortie de l‟état.
l‟action sur un événement interne (on) est exécutée lors del‟occurrence d‟un événement qui ne conduit pas à un autre état
Diagramme d’états-transitions: actions et activités (suite)
Une activité est une opération qui dure et qui est donc associée àun état. Elle peut être séquentielle ou cyclique :
• La fin d'une activité séquentielle correspond à la sortie de l'état :une transition automatique est générée.
• Une activité cyclique ne se termine que par une transition de
sortie identifiée. Le mot clé do: indique une activité.
Lorsqu‟une activité se termine, les transitions automatiques (sansévénement), mais éventuellement protégées par des gardes, sontdéclenchées.
Diagramme d’états-transitions: actions et activités (suite)
Six manières d‟associer uneopération à une transition :
• l‟action associée à la transitiond’entrée (op1)
• l‟action d’entrée de l’état (op2)
• l’activité dans l’état (op3)
• l’action de sortie de l’état (op4)
• l‟action associée aux événementsinternes (op5)
• l‟action associée à la transition dela sortie de l’état (op6)
Diagramme d’états-transitions: hiérarchie d’états
En cours de modélisation avec un diagramme d‟états, il peutêtre judicieux de regrouper plusieurs états en un seul ou biende décomposer un état en plusieurs sous-états.
Exemple:
Ici, l‟état „état4‟ est un sur-état des états „état1‟, „état2‟, „état3‟. Les deux transitions qui rentrent dans l‟état „état4‟ spécifient dans quel sous-état on arrive. La transition sortante de l‟état „état4‟ exprime que, quel que soit le sous-état dans lequel l‟objet se trouve, si l‟événement „ev3‟ arrive, alors l‟objet sort de l‟état „état4‟.
Diagramme d’états-transitions: Exemple
Diagramme d’états-transitions du Distributeur Automatique de Boissons
Diagramme
d’activités
UML : Unified Modeling Language
Les diagrammes d‟activités permettent de mettre l‟accentsur les traitements.
les diagrammes d'activité sont utilisés pour documenter ledéroulement des opérations dans un système.
En regardant un diagramme d'activité, vous trouverez deséléments des diagrammes d'état. En fait, le diagrammed'activité est une variante du Diagramme d'état où les„états‟ représentent des opérations, et les transitionsreprésentent les activités qui se produisent quandl'opération est terminée. L'usage général des diagrammesd'activité permet de faire apparaître les flots detraitements induits par les processus internes par rapportaux évènements externes.
Ce diagramme pourra comporter des synchronisations pourreprésenter les déroulements parallèles.
La notion de couloir d'activité va décrire les responsabilitésen répartissant les activités entre les différents acteursopérationnels.
Diagramme d’activités : Objectif
Les diagrammes d‟activités représentent les synchronisations d‟activités au moyen de barres de synchronisation.
Formalisme: Exemple :
Diagramme d’activités : Synchronisation
Un nœud d‟activité est un type d‟élément abstrait permettantde représenter les étapes le long du flot d‟une activité. Il existetrois familles de nœuds d‟activités :
les nœuds d‟exécutions:
les nœuds objets:
et les nœuds de contrôle.
Diagramme d’activités : Nœuds d’activités
Un nœud exécutable est un nœud d‟activité qu‟on peut exécuter. Il possèdeun gestionnaire d‟exception qui peut capturer les exceptions levées parlenœud, ou un de ses nœuds imbriqués. Il y‟a deux types de la NœudExécutable:
Nœud d’action: est un nœud d‟activité exécutable qui constitue l‟unitéfondamentale de fonctionnalité exécutable dans une activité.
Nœud d’activité structurée: Un nœud d‟activité structurée est un nœudd‟activité exécutable qui représente une portion structurée d‟une activité donnéequi n‟est partagée avec aucun autre nœud structuré, à l‟exception d‟uneimbrication éventuelle.
Un nœud de contrôle est un nœud d‟activité abstrait utilisé pour coordonnerles flots entre les nœuds d‟une activité. Il existe plusieurs types de nœudsde contrôle :Nœud initial, nœud final, nœud de décision et de fusion, nœud de bifurcationet d‟union
Diagramme d’activités : Nœuds d’activités (suite)
Nœud initial: Un nœud initial est un nœud de contrôle à partir duquel leflot débute lorsque l‟activité enveloppante est invoquée.
Nœud final: Un nœud final est un nœud de contrôle possédant un ouplusieurs arcs entrants et aucun arc sortant.
Nœud de décision: est un nœud de contrôle Qui permet de faire unchoix entre plusieurs flots sortants. Il possède un arc entrant etplusieurs arcs sortants. Ces derniers sont généralement accompagnés deconditions de garde pour conditionner le choix.
Nœud de fusion: Un nœud de fusion est un nœud de contrôle quirassemble plusieurs flots alternatifs entrants en un seul flot sortant.
Nœud de bifurcation: Un nœud de bifurcation, également appelé nœudde débranchement est un nœud de contrôle qui sépare un flot enplusieurs flots concurrents. Un tel nœud possède donc un arc entrant etplusieurs arcs sortants.
Nœud d’union: Un nœud d‟union, également appelé nœud de jointure estun nœud de contrôle qui synchronise des flots multiples. Un tel Nœudpossède donc plusieurs arcs entrants et un seul arc sortant.
Diagramme d’activités : Nœuds d’activités (suite)
Diagramme d’activités : Nœuds d’activités (exemple)
un nœud d’objet: permet de définir un flot d‟objet (un flot de données) dansun diagramme d‟activités. Ce nœud représente l‟existence d‟un objet généré parune action dans une activité et utilisé par d‟autres actions.
Pin d‟entrée ou de sortie: Pour spécifier les valeurs passées en argumentà une activité et les valeurs de retour, on utilise des nœuds d‟objetsappelés pins (pin en anglais) d‟entrée ou de sortie.
Les valeurs sont passées par copie : une modification des valeursd‟entrée au cours du traitement de l‟action n‟est visible qu‟à l‟intérieur del‟activité.
Diagramme d’activités : Nœuds d’activités (suite)
Pin de valeur: Un pin valeur est un pin d‟entrée qui fournit une valeur à une action sans que cette valeur ne provienne d‟un arc de flot d‟objets. Un pin valeur est toujours associé à une valeur spécifique. Graphiquement, un pin de valeur se représente comme un pin d‟entrée avec la valeur associée écrite à proximité.
Flot d’objet: Un flot d‟objets permet de passer des données d‟une activité à une autre. Un arc reliant un pin de sortie à un pin d‟entrée. Il existe une autre représentation possible d‟un flot d‟objets, représenté par un rectangle dans lequel est mentionné le type de l‟objet (souligné).Le nom d‟un état, ou d‟une liste d‟états, de l‟objet peut être précisé entre crochets après ou sous le type de l‟objet. On peut également préciser des contraintes entre accolades, soit à l‟intérieur, soit en dessous du rectangle du nœud d‟objet.
Diagramme d’activités : Nœuds d’activités (suite)
Nœud tampon central: est un nœud d‟objet qui accepte les entrées deplusieurs nœuds d‟objets ou produit des sorties vers plusieurs nœudsd‟objets.
Nœud de stockage des données: est un nœud tampon centralparticulier qui assure la persistance des données. Lorsqu‟une informationest sélectionnée par un flux sortant, l‟information est dupliquée et nedisparaît pas du nœud de stockage des données comme ce serait le casdans un nœud tampon central. Lorsqu‟un flux entrant véhicule une donnéedéjà stockée par le nœud de stockage des données, cette dernière estécrasée par la nouvelle.
Diagramme d’activités : Nœuds d’activités (suite)
Le diagramme d'activités fait intervenir les acteurs de chaqueactivité. Chaque activité sera placée dans une colonne (couloir) quicorrespond à l'acteur.
permettent d‟organiser les nœuds d‟activités dans un diagrammed‟activités en opérant des regroupements.
Diagramme d’activités: Les couloirs d'activités
Modélisation dynamique en UML :
Étude de cas
UML : Unified Modeling Language
Cas du publiphone :
Cas du publiphone :
1. Le prix minimal d’une communication interurbaine est de 1€.
Cas du publiphone :
1. Le prix minimal d’une communication interurbaine est de 1€.
2. Après l’introduction de la monnaie, l’utilisateur a 2 mn pour composer son numéro (ce délai est décompté par le standard).
Cas du publiphone :
1. Le prix minimal d’une communication interurbaine est de 1€.
2. Après l’introduction de la monnaie, l’utilisateur a 2 mn pour composer son numéro (ce délai est décompté par le standard).
3. La ligne peut être libre ou occupée.
Cas du publiphone :
1. Le prix minimal d’une communication interurbaine est de 1€.
2. Après l’introduction de la monnaie, l’utilisateur a 2 mn pour composer son numéro (ce délai est décompté par le standard).
3. La ligne peut être libre ou occupée.
4. Le correspondant peut raccrocher le premier.
Cas du publiphone :
1. Le prix minimal d’une communication interurbaine est de 1€.
2. Après l’introduction de la monnaie, l’utilisateur a 2 mn pour composer son numéro (ce délai est décompté par le standard).
3. La ligne peut être libre ou occupée.
4. Le correspondant peut raccrocher le premier.
5. Le publiphone consomme de l’argent dès que l’appelé décroche et à chaque unité de temps (UT) générée par le standard.
Cas du publiphone :
1. Le prix minimal d’une communication interurbaine est de 1€.
2. Après l’introduction de la monnaie, l’utilisateur a 2 mn pour composer son numéro (ce délai est décompté par le standard).
3. La ligne peut être libre ou occupée.
4. Le correspondant peut raccrocher le premier.
5. Le publiphone consomme de l’argent dès que l’appelé décroche et à chaque unité de temps (UT) générée par le standard.
6. On peut ajouter des pièces à tout moment.
Cas du publiphone :
1. Le prix minimal d’une communication interurbaine est de 1€.
2. Après l’introduction de la monnaie, l’utilisateur a 2 mn pour composer son numéro (ce délai est décompté par le standard).
3. La ligne peut être libre ou occupée.
4. Le correspondant peut raccrocher le premier.
5. Le publiphone consomme de l’argent dès que l’appelé décroche et à chaque unité de temps (UT) générée par le standard.
6. On peut ajouter des pièces à tout moment.
7. Lors du raccrochage, le solde de monnaie est rendu.
Identifier les acteurs et construire le diagramme des use case. Construire le diagramme de séquences système. Construire le diagramme de contexte dynamique. Élaborer le diagramme d’états du publiphone.
Démarche en plusieurs points :
Le diagramme des use case
Les acteurs
Le diagramme des use case
«system»
Publiphone
«actor»
Standard
«system»
Téléphone
0..1
0..10..*
0..*0..1
0..1Appelant
Appelé
Les acteurs
Le diagramme des use case
«system»
Publiphone
«actor»
Standard
«system»
Téléphone
0..1
0..10..*
0..*0..1
0..1Appelant
Appelé
Les acteurs
Le diagramme des use case
«system»
Publiphone
«actor»
Standard
«system»
Téléphone
0..1
0..10..*
0..*0..1
0..1Appelant
Appelé
Les acteurs
Le diagramme des use case
Le diagramme des use case
«system»
Publiphone
«actor»
Standard
«system»
Téléphone
0..1
0..10..*
0..*0..1
0..1Appelant
Appelé
Les acteurs
«actor»
Standard
Appelant téléphoner
Publiphone
secondaire
Le diagramme des use case
Le diagramme des use case
Le diagramme de séquence sysème
Le diagramme de séquence sysème
:appelant:publiphone
décrocherCombiné
:standard
introduirePièce(1€)
composerNuméro(04 78 77 23 23)
tonalité(libre)
introduirePièce(1€)
raccrocherCombiné
FinComm
UT
débuterComm
tonalité(libre)
acheminerNuméro(04 78 77 23 23)
incrémenterCrédit(1€)
vérifierPièce
taxer(1€)
vérifierPièce
incrémenterCrédit(1€)
taxer(1€)
Le diagramme de contexte dynamique
Représenter les messages émis et les messages reçus par le publiphone. Le diagramme de contexte dynamique
:appelant
:publiphone
:standard
Représenter les messages émis et les messages reçus par le publiphone. Le diagramme de contexte dynamique
:appelant
:publiphone
:standard
décrocherCombiné ; introduirePièce(p) ; composerNuméro(n) ;
raccrocherCombiné ; voixAppelant
acheminerNuméro(n)
finComm ; voixAppelant
timerNumérotation
- Messages reçus déclenchent des transitions entre états.
Représenter les messages émis et les messages reçus par le publiphone. Le diagramme de contexte dynamique
:appelant
:publiphone
:standard
décrocherCombiné ; introduirePièce(p) ; composerNuméro(n) ;
raccrocherCombiné ; voixAppelant
acheminerNuméro(n)
finComm ; voixAppelant
timerNumérotation
tonalité(type)
voixAppelé
rendrePièce
débuterComm
UT
tonalité(type)
voixAppelé
État(Ligne)
validitéNumérotation(v)
finComm
TimeroutNumérotation
- Messages émis donnent lieu à des actions sur les transitions.
- Messages reçus déclenchent des transitions entre états.
Le diagramme d’états
Démarche itérative et incrémentale : Représenter les séquences d’états décrivant le comportement d’une instance avec les
transitions associées.
Ajouter les transitions correspondant aux comportements ‘’alternatifs’’ ou d’exception.
Compléter les actions sur les transitions et les activités dans les états.
Structurer le diagramme en sous états et utiliser les notations (entry, exit, …)
Le diagramme d’états
Démarche itérative et incrémentale : Représenter les séquences d’états décrivant le comportement d’une instance avec les
transitions associées.
Ajouter les transitions correspondant aux comportements ‘’alternatifs’’ ou d’exception.
Compléter les actions sur les transitions et les activités dans les états.
Structurer le diagramme en sous états et utiliser les notations (entry, exit, …)
Le diagramme d’états
raccroché
attente décrochage
attente validité
attente N°
attente pièce
communication
décrocherCombiné
raccrocherCombiné
composerNuméro
numéroValide
débuterComm
When(crédit 1€)
Événement interne
Réception message
raccroché
attente décrochage
attente validité
attente N°
attente pièce
communication
décrocherCombiné
raccrocherCombiné
composerNuméro
numéroValide
débuterComm
When(crédit 1€)
Événement interne
Réception message
raccroché
attente décrochage
attente validité
attente N°
attente pièce
communication
décrocherCombiné
raccrocherCombiné
composerNuméro
numéroValide
débuterComm
When(crédit 1€)
Événement interne
Réception message
raccrocherCombiné
raccrocherCombiné
raccrocherCombiné
raccrocherCombiné
raccroché
décrocherCombiné
raccrocherCombiné
décroché
raccroché
décrocherCombiné
raccrocherCombiné
décroché
débuterComm
attente décrochage
attente validité
attente N°
attente pièce
communication
composerNuméro
numéroValide
When(crédit 1€)raccroché
décrocherCombiné
raccrocherCombiné
décroché
débuterComm
attente décrochage
attente validité
attente N°
attente pièce
communication
composerNuméro
numéroValide
When(crédit 1€)raccroché
décrocherCombiné
raccrocherCombiné
décroché
La solution bleue n’est pas intéressante
débuterComm
attente décrochage
attente validité
attente N°
attente pièce
communication
composerNuméro
numéroValide
When(crédit 1€)raccroché
décrocherCombiné
raccrocherCombiné
Modéliser l’ attente des pièces pour que le crédit devienne suffisant :
Modéliser l’ attente des pièces pour que le crédit devienne suffisant :
introPièce(p)/incrémenterCrédit(p)
attente N°
attente pièceWhen(crédit 1€)
Le diagramme devient :
Le diagramme devient :
décroché
raccroché
décrocherCombiné
/crédit=0
raccrocherCombiné /rendrePièce
UT[créditInuffisant]/taxer
débuterComm /taxer
attente décrochage
attente validité
attente N°
attente pièce
communicationcomposerNuméro
numéroValide
When(crédit 1€)
introPièce(p)/incrémenterCrédit(p)
Fin communication
UT[créditInsuffisant]/taxer
Modéliser la phrase 6 : « on peut rajouter des pièces à tout moment »
On peut rajouter une transition à chaque sous état (solution lourde, effet secondaire : à chaque introPièce(p) le publiphone revient à son état initial (attente pièce c.a.d. raccroché)).
On peut utiliser une transition interne introPièce(p)/incrémenterCrédit(p) à l’intérieur de l’état « décroché »
Modéliser la phrase 6 : « on peut rajouter des pièces à tout moment »
On peut rajouter une transition à chaque sous état (solution lourde, effet secondaire : à chaque introPièce(p) le publiphone revient à son état initial (attente pièce c.a.d. raccroché)).
On peut utiliser une transition interne introPièce(p)/incrémenterCrédit(p) à l’intérieur de l’état « décroché »
décroché
raccroché
décrocherCombiné
/crédit=0
raccrocherCombiné /rendrePièce
UT[créditInsuffisant]/taxer
débuterComm /taxer
attente décrochage
attente validité
attente N°
attente pièce
communicationcomposerNuméro
numéroValide
When(crédit 1€)
Fin communication
UT[créditInsuffisant]/taxer
introPièce(p)/incrémenterCrédit(p)
Modéliser la phrase 6 : « on peut rajouter des pièces à tout moment »
On peut rajouter une transition à chaque sous état (solution lourde, effet secondaire : à chaque introPièce(p) le publiphone revient à son état initial (attente pièce c.a.d. raccroché)).
On peut utiliser une transition interne introPièce(p)/incrémenterCrédit(p) à l’intérieur de l’état « décroché »
décroché
raccroché
décrocherCombiné
/crédit=0
raccrocherCombiné /rendrePièce
UT[créditInsuffisant]/taxer
débuterComm /taxer
attente décrochage
attente validité
attente N°
attente pièce
communicationcomposerNuméro
numéroValide
When(crédit 1€)
Fin communication
UT[créditInsuffisant]/taxer
introPièce(p)/incrémenterCrédit(p)
•Même la transition propre sur«communication» doit être transformée en transition interne.
•On préfère les transitions propres, car visuelles.
Les phrases 1, 5, 6, 7 dont modélisées.
Les phrases 1, 5, 6, 7 dont modélisées.
Les phrases 2, 3 et 4 sont à compléter.
Les phrases 1, 5, 6, 7 dont modélisées.
Les phrases 2, 3 et 4 sont à compléter.
Phrase 2 : deux messages sont introduits :
timerNumérotation envoyé par le publiphone au standard.
timeoutNumérotation envoyé par le standard au publiphone.
Les phrases 1, 5, 6, 7 dont modélisées.
Les phrases 2, 3 et 4 sont à compléter.
Phrase 2 : deux messages sont introduits :
timerNumérotation envoyé par le publiphone au standard.
timeoutNumérotation envoyé par le standard au publiphone.
Utilisation du concept UML «send» pour envoyer un message
Les phrases 1, 5, 6, 7 dont modélisées.
Les phrases 2, 3 et 4 sont à compléter.
Phrase 2 : deux messages sont introduits :
timerNumérotation envoyé par le publiphone au standard.
timeoutNumérotation envoyé par le standard au publiphone.
Utilisation du concept UML «send» pour envoyer un message
Phrase 3 : Le standard renvoie un message sur l’état de la ligne.
État(Ligne) (où état peut être libre, occupé, en dérangement).
Les phrases 1, 5, 6, 7 dont modélisées.
Les phrases 2, 3 et 4 sont à compléter.
Phrase 2 : deux messages sont introduits :
timerNumérotation envoyé par le publiphone au standard.
timeoutNumérotation envoyé par le standard au publiphone.
Utilisation du concept UML «send» pour envoyer un message
Phrase 3 : Le standard renvoie un message sur l’état de la ligne.
État(Ligne) (où état peut être libre, occupé, en dérangement).
Phrase 4 : Transition entre les états «communication» et «fin communication».
Le diagramme d’états final est alors après ajouts et compléments :
Le diagramme d’états final est alors après ajouts et compléments :
décroché
UT[créditInsuffisant]/taxer
débuterComm
/taxer
attente décrochage
attente validité
attente N°
attente pièce
Communication
do /transmettrevoix
composerNuméro
/send standard. acheminerNuméro
numéroValide
When(crédit 1€) /send standard.timerNumérotation
introPièce(p)/incrémenterCrédit(p)
Fin communication
ou erreur
UT[crédit
Insuffisant]
/taxer
raccrochage appelé
étatLigne(occupée)
timeoutNumérotation
timeoutappel
Numéro
invalide
phrase3
phrase4
Le diagramme d’états final est alors après ajouts et compléments :
raccroché
Décrocher
Combiné
/crédit=0
raccrocherCombiné /rendrePièce
décroché
UT[créditInsuffisant]/taxer
débuterComm
/taxer
attente décrochage
attente validité
attente N°
attente pièce
Communication
do /transmettrevoix
composerNuméro
/send standard. acheminerNuméro
numéroValide
When(crédit 1€) /send standard.timerNumérotation
introPièce(p)/incrémenterCrédit(p)
Fin communication
ou erreur
UT[crédit
Insuffisant]
/taxer
raccrochage appelé
étatLigne(occupée)
timeoutNumérotation
timeoutappel
Numéro
invalide
phrase3
phrase4
Conclusion :
UML : Unified Modeling Language
• UML intègre l’objet et a été conçu pour et autour de l’objet.• UML permet donc de modéliser une application selon unevision objet.
• L’appréhension d’UML est complexe car UML est à la fois :- une norme,- un langage de modélisation objet,- un support de communication,- un cadre méthodologique.
• Il faut penser ce langage comme une boite à outils richeet complexe; à utiliser intelligemment face à des besoinsprécis.
UML : Unified Modeling Language
FIN
UML : Unified Modeling Language