Vous êtes sur la page 1sur 23

Modélisation UML : compléments

Notion de stéréotype en UML

Diagrammes UML complémentaires


Diagramme de séquence : notation avancée

Diagramme d’interaction / collaboration

Diagramme de package

Diagramme d’états – transitions

Diagramme d’activité

Diagramme de composant et de déploiement

Traduction d’UML en Java (suite)

MSIAG 2007-2008 UML & POO – Section 5 1


Stéréotypes UML

Définition et intérêts

Un stéréotype enrichie/modifie la signification d’un élément


UML (message, classe, association …)

Notation : entre <<>> ou symbole graphique particulier

Exemples :
<<écran>> rechercher <<écran>>
État représentant un écran recherche résultats

Classe persistante

Message d’instanciation d’un objet <<persistante>>


Personne

Message de destruction d’un objet

MSIAG 2007-2008 UML & POO – Section 5 2


Diagramme de séquence : compléments

Création et destruction d’un objet


Instanciation de
nouveauMail
gmail : Messagerie

: user nouveauMail : EMail


1 : composerMail() <<create>>
2 : new(destinataires)

3 : redigerTexte()

4 : supprimerMail(nouveauMail) <<destroy>>
5

6 : succes suppression mail destruction de


nouveauMail

MSIAG 2007-2008 UML & POO – Section 5 3


Diagramme de séquence : fragments

Un fragment permet de grouper et de qualifier un ensemble


de messages identifiant un traitement particulier.

Les différents type de fragments


loop : exécuter plusieurs fois le traitement (boucle for ou while)

opt : exécuter le traitement si la condition est vraie (if)

alt : exécuter le traitementA ou le traitementB (if / else)

ref : référence à un traitement décrit dans un autre diagramme

par : montre des traitements exécutés en parallèle

Les conditions s’expriment entre [] (appelé aussi garde)


Ex : [solde > 0] ou [utilisateur authentifié]

MSIAG 2007-2008 UML & POO – Section 5 4


Fragment de type loop

: DAB tom: Client comptesTom: Compte

userTom: client

1 : montant total des comptes()


2 : getComptes(): Compte[]
Collection d’objet de
type Compte
3 : calculerMontantTotal(comptesTom)
Fragment loop

loop comptesTom 4 : getSolde(): Float

5 : solde

Boucle sur tous les comptes de tom pour


6 : affichage montant total
calculer le montant total de ses comptes

MSIAG 2007-2008 UML & POO – Section 5 5


Fragment de type opt

dab1 : DAB auth : ModuleAuthentification

tom: client

1 : identifierClient(123456879, 1234): void

2 : true := authentifierClient(12345789, 1234)

3 : liste opérations standard()

Fragment opt

opt client gold ?


4 : liste opérations spéciales()
[isClientGold]

On ajoute les opération spéciales aux opérations


5 : afficher opérations possibles
possibles si la condition [isClientGold] est vérifiée

MSIAG 2007-2008 UML & POO – Section 5 6


Diagramme de collaboration

Montre les interactions entre objets d’un scénario donné en mettant


l’accent sur les liens entre objets
Est équivalent au diagramme de séquence mais montre plus les liens
entre les objets que la chronologie des messages échangés

: Porte

1 : appuyer 8 : ouvrir
2 : transmettre appel
: bouton : Contrôleur ascenseur
3 : allumer bouton
6 : stop
7 : éteindre bouton
J’appelle ascenseur
4 : déplacer
5 : étage atteint

: Cabine ascenseur
MSIAG 2007-2008 UML & POO – Section 5 7
Diagramme de package

Groupement d’éléments de modélisation, généralement


des classes et des packages
Bien gérer les dépendances entre package permet de
contrôler les impacts des évolutions dans le système.

View Services Domain

ValueObject Persistance

MSIAG 2007-2008 UML & POO – Section 5 8


Diagramme d’état / transition

Objectifs et intérêts
Fournir une représentation dynamique du
cycle de vie et des comportements d’un objet d’une
classe
Aider à déterminer les événements qui
occasionnent les transitions entre différents états
Définir les activités associées à un état
Souvent utilisé pour les systèmes temps réel

MSIAG 2007-2008 UML & POO – Section 5 9


Diagramme d’état / transition

Un état = une situation durant la vie d’un objet pendant


laquelle :

Il satisfait une certaine condition

Il exécute une certaine activité

Il attend un certain événement

Une transition : passage d’un objet d’un état à un autre

Événement : stimulus qui provoque une transition

Garde : condition logique (notée entre [] )

Auto transition : passage d’un état au même état

MSIAG 2007-2008 UML & POO – Section 5 10


Diagramme d’état / transition

Notation d’un état


Nom de l’état
nomde l'état
Activités entry/action éxécutée lorsque l'on rentre dans l'état
do/action éxécutée lorsque l'on est dans l'état
En entrée exit/action éxécutée lorsque l'on sort de l'état
Au cours de l’état

En sortie

État initial

État final

MSIAG 2007-2008 UML & POO – Section 5 11


Diagramme d’état / transition

Notation d’une transition :


Évènement [condition de garde] / action

Exemple :

événement conditionaction induite par la transition

anniversaire [age = 18 ans] / fêter anniversaire


Mineur Majeur

état transition

MSIAG 2007-2008 UML & POO – Section 5 12


Diagramme d’état / transition

Exemple : distributeur de boisson

Auto transition

pièce insérée : / calculer somme totale insérée

boisson sélectionnée : [ somme suffisante ] distribution boisson


allumer distributeur En Attente

do/afficher "insérer pièce" entry/fermer bac de distribution


do/distribuer boisson
eteindre distributeur [ somme exacte ] exit/ouvrir bac de distribution

boisson sélectionnée : [ somme insuffisante ] / afficher "compléter la somme"


boisson sélectionnée

rendre la monnaie [ somme trop importante ]

choix

MSIAG 2007-2008 UML & POO – Section 5 13


Diagramme d’état : Sous états

Lorsqu’un état est complexe, on peut le diviser en plusieurs


sous états, exemple avec l’état « distribution boisson » :

distribution boisson avec sous états

rotation boisson
entry/fermer bac distributeur
entry/démarrer rotation
do/rotation boisson

libération boisson
entry/libérer boisson
exit/ouvrir bac distributeur
[ boisson == boisson sélectionnée ] / arreter rotation

MSIAG 2007-2008 UML & POO – Section 5 14


Diagramme d’état : conseils

Diagramme utile que pour les objets/concepts ayant un cycle

de vie complexe (plus de 2 états !)

Aide à trouver les opérations d’une classe en explorant ses

différents états et leur transition.

Utile pour concevoir les IHM

Un état = un écran

Une transition = action ou événement qui permet de passer à un

autre écran

MSIAG 2007-2008 UML & POO – Section 5 15


Diagrammes d’état : traduction java

Exemple : état d’une imprimante


Utilisation du design pattern « Etat » pour traduire les états en Java

remplir bac papier

disponible plusDePapier

bac papier vide

Ajout encre

Niveau encre faible

niveauEncreBas

MSIAG 2007-2008 UML & POO – Section 5 16


Diagrammes d’état : traduction java

Définition de l’état par une interface EtatImprimante


Chaque état concret est une implémentation spécifique
d’EtatImprimante
La classe Imprimante délègue le traitement son état courant

Imprimante
état courant EtatImprimante
+ imprimer(Document) + imprimer(Document, int) : int
1
+ remplirBacPapier()

PlusDePapier
Disponible

NiveauEncreBas

MSIAG 2007-2008 UML & POO – Section 5 17


Diagrammes d’état : traduction java

public class Imprimante {


public interface EtatImprimante
private int nombreDeFeuilles;
{
private EtatImprimante etatCourant;
public int imprimer(Document doc);
public Imprimante() {
}
nombreDeFeuilles = 200;
etatCourant = new Disponible(this);
}
public void imprimer(Document document)
{
// après impression, on réinitialise le nombre de feuilles restantes
nombreDeFeuillesImprimées = etat.imprimer(document);
nombreDeFeuilles = nombreDeFeuilles – nombreDeFeuillesImprimées;
if (nombreDeFeuilles == 0) {
etatCourant = new PlusDePapier();
}
}
public void remplirBacAPapier(int nombreDeFeuillesAjoutees)
{
nombreDeFeuilles = nombreDeFeuilles + nombreDeFeuillesAjoutees;
etatCourant = new Disponible(this);
}
}

MSIAG 2007-2008 UML & POO – Section 5 18


Diagrammes d’état : traduction java

public class Disponible implements EtatImprimante


{
private Imprimante imprimante; // initialisé dans le constructeur (omis ici)
// renvoit le nombre de pages imprimées
public int imprimer(Document document)
{
if (imprimante.getNombreDeFeuillesRestantes() < document.getNombreDePages())
Etat Disponible {
// impression partielle à lancer … on renvoit le nombre de pages imprimées
return imprimante.getNombreDeFeuillesRestantes();
}
// impression totale à lancer … on renvoit le nombre de pages imprimées
return document.getNombreDePages();
}
}
public class PlusDePapier implements EtatImprimante
{
Etat PlusDePapier public int imprimer(Document document)
{
System.out.println("Ajouter des feuilles à l'imprimante");
return 0; // on pourrait aussi envoyer une exception ...
}
MSIAG 2007-2008 } UML & POO – Section 5 19
Diagramme d’activités

Objectifs et intérêts

Permet de représenter des algorithmes

Permet un découpage à grandes mailles des

activités et sous-activités (workflow)

Permet de représenter des processus ou des

activités s’exécutant en parallèle

MSIAG 2007-2008 UML & POO – Section 5 20


Diagramme d’activités : exemple

recevoir commande
Les activités « Préparer
Commande » et « Envoyer Facture »
sont effectuées en parallèle

préparer commande
L’activité « Clôturer Commande »
envoyer facture
n’est effectuée qu’après le paiement
[ express ] [ standard ]
et la livraison (matérialisé par une
barre de synchronisation)
livraison express livraison standard

Possibilité d’exprimer des conditions


logiques (garde) indiquant quelle recevoir paiement
activité sera réalisée (livraison
expresse ou standard)

cloturer commande

MSIAG 2007-2008 UML & POO – Section 5 21


Diagramme de composant

Un composant est un tout cohérent rendant un service de haut niveau

Un composant :
Est généralement composé de plusieurs interface / classes

Offre des services bien défini au travers d’interfaces (provided interface)

A des dépendances claires vers d’autres composants (required interface)

Un composant a pour vocation d’être réutilisable

Required interface

provided interface

MSIAG 2007-2008 UML & POO – Section 5 22


Diagramme de déploiement

Montre où vont être exécutés les composants du SI

Offre une vue du système d’information en production

Aurait pu proposer des icônes plus imagées

Assez peu utilisé

réseau noeuds

MSIAG 2007-2008 UML & POO – Section 5 23

Vous aimerez peut-être aussi