Cours Uml 1
Cours Uml 1
Cours Uml 1
OFPPT
Travail
Centre NTIC Settat
RESUME THEORIQUE
&
GUIDE DES TRAVAUX PRATIQUES
MODULE N° : 8
SECTEUR : NTIC
SPECIALITE : TSDI
Décembre 2006
1
REMERCIEMENT
La DRIF remercie les personnes qui ont contribué à l’élaboration du présent
document.
Pour la supervision :
Pour la conception :
- MR MOHAMMED EL OUMAMI
Pour la validation :
- JELLAL ABDELILAH
Said Slaoui
DRIF
2
MODULE 8 : Spécification fonctionnelle d’une application
informatique
Durée : 95 h
COMPORTEMENT ATTENDU
CONDITIONS D’EVALUATION
3
OBJECTIF OPERATIONNELS DE PREMIER NIVEAU
DE COMPORTEMENT
PRECISIONS SUR LE COMPORTEMENT CRITERES PARTICULIERS DE
ATTENDU PERFORMANCE
4
OBJECTIFS OPERATIONNELS DE SECOND NIVEAU
5
– Introduction :
• Constatations et état du marché
• Approche objet
• Inconvénients et remèdes
• Historique d’UML
– Les diagrammes UML
• Diagramme des cas d'utilisation
• Diagramme de classes, objets
• Diagramme de séquence
• Diagramme de collaboration
• Diagramme d'états – transition
• Diagramme de composants
• Diagramme de déploiement
6
L’état du Marché
• Quelle est la réalité du développement aujourd’hui ?
• Est-ce que je peux partager mes systèmes existants ?
• Puis-je intégrer de nouvelles applications ?
• Quelle est l’adaptabilité de mon application (souplesse) ?
Le rythme effréné des changements technologiques:
• Internet/Intranet, ERP
• CORBA , COM/DCOM, ActiveX, Java, ...
• Système Distribués à N-niveau
• Etat actuel : des dépendances ingérables entre des applications peu ou pas
documentées
• Maîtrise de la complexité
Une décomposition objet décrit et décompose le problème étudié comme un ensemble
d’objets autonomes qui collaborent pour réaliser certaines opérations.
Chaque objet décrit un certain objet du monde réel et incorpore son propre comportement.
Les objets inter-agissent en s’envoyant des messages demandant l’exécution de telle ou telle
opération
• Réutilisation
• Dérive inévitable car rien dans les concepts de base de l’approche objet ne dicte
comment modéliser la structure objet d’un système de manière pertinente
• Nécessité d’une grande rigueur dans l’application des concepts
UML : le remède
Pour penser et concevoir objet, il faut savoir prendre de la hauteur, jongler avec des
concepts abstraits, indépendants des langages d’implémentation et des contraintes purement
techniques.
De faciliter l’analyse
7
De définir des vues décrivant tous les aspects du système avec des concepts
objets
Historique d’UML
8
9
Nom/Prénom :
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
Objectifs de la leçon :
Le stagiaire doit être capable de
Tracer un chemin au court de son analyse a fin de bien facilité son travail cela en passant
d’une étape de cycle de vie a l’autre
Maintenance et évolution
Validation
Tests de vérification
Implémentation
Conception
Analyse
Spécifications
Expression des besoins
10
INTRODUCTION
Activités d’apprentissage
Rappel
• Un formalisme,
• Une méthode,
• Un processus et un cycle de vie,
• Des buts.
Transition
DEROULEMENT DU COURS
Le modèle linéaire
11
Expression des besoins :
...
Spécification :
Analyse :
L’objectif est de déterminer les éléments intervenant dans le système à construire, ainsi
que leur structure et leurs relations.
La conception :
• Elle consiste à apporter des solutions techniques aux descriptions définies lors de
l’analyse : architecture technique ; performances et optimisation ; stratégie de
programmation.
L’implémentation :
12
Ils permettent de réaliser des contrôles pour la qualité technique du système.
Il s’agit de relever les éventuels défauts de conception et de programmation (revue de
code, tests des composants,...).
Il faut instaurer ces tests tout au long du cycle de développement et non à la fin pour
éviter des reprises conséquentes du travail (programmes de tests robustes ; Logiciels de
tests).
Validation :
Le développement d’une application doit être lié à un contrat ayant une forme de
cahier de charges, où doivent se trouver tous les besoins de l’utilisateur. Ce cahier de
charge doit être rédigé avec la collaboration de l’utilisateur et peut être par ailleurs
complété par la suite.
Tout au long des ces étapes, il doit y avoir des validations en collaboration également
avec l’utilisateur.
Une autre validation doit aussi être envisagée lors de l’achèvement du travail de
développement, une fois que la qualité technique du système est démontrée. Elle
permettra de garantir la logique et la complétude du système.
Maintenance et évolution
Le principe de cette démarche est que chaque phase est traitée complètement avant que la
suivante ne soit entamée.
Ce qui renvoie les tests de vérification et la validation en fin du processus de développement.
Le modèle en v
13
Expression des Validation des
besoins besoins
Spécifications
fonctionnelles Validation
fonctionnelle
du
Conception
système Tests du
système
Implémentation
Réalisation logicielle
14
• Une phase descendante : de spécifications et de conception.
• Une phase ascendante : de tests et de validation.
Comme pour le modèle linéaire, l’inconvénient est que la validation et les tests interviennent
tardivement.
Il y a aussi
Modèle en spiral
Evaluation 2
Evaluation
Prototype 1 Prototype 2
Spécifs Spécifs 2
Le cycle en cascade
15
Schéma directeur Plan de développement à moyen terme des systèmes
d’informations
Réalisation logicielle
Maintenance
• Les concepts utilisés au cours des différentes étapes sont quasiment identiques
(Classes, Objets, Attributs, Méthodes, Héritage, Polymorphisme, ...).
• Ce qui n’est pas le cas dans les approches traditionnelles, où l’on utilise une
méthode d’analyse et de conception avec des concepts et un langage de
programmation avec d’autres concepts.
• Ceci permet de conserver le même discours lors de toutes les étapes :
« Analyse - Conception - Implémentation ».
Un cycle itératif :
16
Validation des besoins
Implémentation Spécifications
fonctionnelles
Conception
Analyse
Un cycle incrémental :
• Lors du développement, une maquette doit être réalisée pour valider l’ergonomie
de l’application et l’enchaînement des écrans.
17
CONCLUSION
Récapitulation et synthèse
Exercice d’évaluation
18
19
Nom/Prénom :
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
Objectifs de la leçon :
Le stagiaire doit être capable de :
* Bien comprendre le cahier de charge
* Définir les acteurs avec leurs intentions
* comment rechercher les acteurs et leurs cas d’utilisation
20
Activités d’apprentissage
Rappel
Il est destiné à représenter les besoins des utilisateurs par rapport au système
• Il s’agit de la solution UML pour représenter le modèle
conceptuel
• Les uses cases permettent de structurer les besoins des
utilisateurs et les objectifs correspondants d’un système.
• Ils identifient les utilisateurs du système (acteurs) et leur
interaction avec le système
Eléments de base :
Acteur : entité externe qui agit sur le système (utilisateur, autre système)
• Il possède un rôle par rapport au système
• Il peut consulter ou modifier l’état d’un système
Un acteur est défini à travers son rôle
Typologie des acteurs : primaire ou secondaire
Cas d’utilisation : ensemble des actions réalisées par le système en réponse à une action d’un
acteur;
• Moyen de recueillir et de décrire les besoins des acteurs du système;
• Les uses cases peuvent être organisée en paquetages (packages).
Transition
21
Schèma des étapes à suivre
re fonction
R payer achat
… …
0..*
payer
retourn est dans
magasi
magasi
22
DEROULEMENT DU COURS
Les use cases (cas d’utilisation) sont un concept de la méthode OOSE de Ivar Jacobon.
Ils permettent d’effectuer une délimitation du système et de décrire son
comportement.
Ils constituent une représentation orientée “ fonctionnalités ” du
système.
Dans la modélisation par les use cases :
2 concepts fondamentaux interviennent :
Les acteurs : utilisateurs du système.
Les uses cases : utilisation du système
Ceux sont les utilisateurs du système
Tout système peut être décrit par un certain nombre de cas d’utilisation représentant les
besoins exprimés par l’ensemble d’utilisateur.
Acteur2
Acteur 3
23
- Recherche des Acteurs :
Qu’est ce qu’un acteur
• Quelqu’un ou quelque chose
• EXTERNE au système
• qui interagit avec le << Acteur >>
système
Client
Client
Un acteur est une personne ou une chose qui va interagir avec le système
Il peut être :
» soit un humain;
» soit un logiciel ;
» soit un automate.
On distingue :
• les acteurs primaires : ceux sont les utilisateurs du système ;
• les acteurs secondaires : ceux qui administrent le système.
Acteurs Acteur
primaires Guichetier Application bancaire secondaire
Responsabl
e des
Directeur
Exemple 1 :
<<actor>>
Client
Client Stick-man
24
- Recherche des Use Case :
• Un use case est une intention d'acteur. Quand un acteur démarre un use case, il a une
intention précise. Quelle est cette intention? Effectuer un achat est une intention qui
recouvre un certain nombre d'exigences. C'est une unité d'intention complète d'un
acteur: c'est donc un use case. Payer ses achats n'est pas une intention complète
d'acteur. Nous n'allons pas dans un magasin pour payer, mais bien pour faire des
achats. C'est donc une partie (et pas la plus agréable) de effectuer un achat. Ce n'est
donc pas un use case.
Exemple 1:
Le système permet à l’acteur
Client de consulter son compte
Consulter compte
Client
Exemple 2 :
25
Exemple 3
Application bancaire (système)
Retrait Responsable
Guichetier des devises
devises
Emprunt
Bilan
Directeur
L’intégration dans l’Use Case “ Application bancaire ” des use cases de chaque opération
permet d’avoir une vision globale du système. Elle permet également de comprendre le rôle
de chaque acteur.
26
Exemple 4
Effectuer un achat
Client
Retourner un article
Gérer le catalogue
Salarié
Manager Initialis er la cais s e
Editer un rapport
adminis trateur
Définir les profils
• Des fonctionnalités bien précises qui se retrouvent parmi plusieurs uses cases. Nous
parlerons alors de use case included ou subalterne.
27
Un tel use case ne peut être lié qu'à un use case, pas à un acteur. (Nous mettrons alors le
stéréotype include sur le lien use case vers use case subalterne).
authentification
Exemple
Relation d’extension
Un use case peut nécessiter le service d'un autre use case. Le use case dont nous avons
besoin du service étend le use case demandeur. Nous utiliserons le stéréotype extend. Ici
les uses cases peuvent être sollicités par des acteurs.
28
<<extend>>
Retrait
“Extends”
Retrait devises
Les Uses Cases fils ont les mêmes liens avec les acteurs et les autres use cases que le use case
dont ils héritent.
Ceux sont de cas particuliers du Uses Case père.
Exemple :
29
monnaie
uses
Usager
Boisson
Servir Boisson
Coca
La relation “uses”
Soit l’use case “Saisie n° compte”
• Le guichetier saisit le code de la banque du compte.
• Il saisit le numéro du compte.
• Il saisit la clé du compte.
• Le système calcule la clé du compte et vérifie qu’elle est bonne.
• Le système interroge le compte sur le système central.
• Le système affiche le compte ainsi que son détenteur.
“uses” “uses”
“uses”
Saisie n° compte
Lorsque une ou plusieurs tâches sont utilisées régulièrement, on peut les factoriser dans un
même use case et faire de telle sorte que d’autres use cases l’utilisent en le pointant par une
flèche.
Cet use case est en fait une sous partie de chaque use case qui l’utilise. Ce qui permet de
décomposer un use case complexe en plusieurs uses cases.
30
Use case description bat niveau :
C’est ou en défini :
• nom :
• acteur principal :
• acteur secondaire :
• événement déclencheur :
• rôle du use case :
• terminaison du use case :
31
CONCLUSION
Récapitulation et synthèse
♀
Guichetier Interroger compte
Exercice d’évaluation
EXERCICE 1
1. Distribution d'argent à tout porteur de carte de crédit (carte Visa, ou de la banque), via
un lecteur de carte et un distributeur de billets.
2. Consultation de solde de compte, dépôt en numéraire et dépôt de chèques pour les
clients de la banque porteurs d'une carte de crédit de la banque.
Par ailleurs:
Le Système d'Autorisation Visa, pour les retraits effectués avec une carte Visa;
QUESTIONS
Elaborez un Diagramme de Cas d'Utilisation détaillé du GAB
EXERCICE 2
32
• La caisse affiche le total des achats.
• Le client choisit son mode de paiement.
1. Liquide: le caissier encaisse l'argent reçu, la caisse indique la monnaie à rendre
au client.
2. Chèque: le caissier vérifie la solvabilité du client en transmettant une requête à
un centre d'autorisation via la caisse.
3. Carte de crédit: un terminal bancaire fait partie de la caisse. Il transmet une
demande d'autorisation en fonction du type de la carte.
Lorsque le paiement est terminé, la caisse transmet les informations sur le nombre d'articles
vendus au système de gestion des stocks.
Tous les matins, le responsable du magasin initialise les caisses pour la journée.
QUESTIONS
Exercice 2
Voila des cas d’utilisations d’un système de messagerie faire les liens entre les acteur et ces
cas d’utilisation
Les acteurs
Connexion
Lecteur de boite
Envoi d’un message
Changement de boite
33
34
Nom/Prénom :
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
Objectifs de la leçon :
Le stagiaire doit être capable de
35
INTRODUCTION
Rappel
DEROULEMENT DU COURS
Diagramme de classe d’analyse
Le diagramme de classes est un des documents les plus importants, voire le plus important de
l'analyse d'un logiciel par une méthode objet. C'est le premier document qui est dans le monde
des objets (les acteurs n'étant pas forcément représentés dans le système informatique). C'est
donc l'entrée dans le monde des objets.
Ce diagramme est un diagramme de classe d'analyse. Il ne représente pas les classes Java ou
C++ que nous développerons par la suite.
Ici nous nous intéressons aux classes du domaine métier, c'est à dire des objets dont on parle
dans le cahier des charges et dans les uses cases principalement. Nous ne nous intéressons pas
aux objets informatiques dans ce diagramme (sauf bien entendu si le métier est l'informatique
!!). Cela viendra en son temps, dans le diagramme de classe de conception. Quand nous
passerons à la conception des classes disparaîtront, d'autres apparaîtront, dont les classes
informatiques (collections, …). C'est normal. En phase d'analyse, nous voulons simplement
faire un diagramme de classe d'objets manipulés dans le domaine métier considéré.
Dans ce diagramme de classe les opérations ne sont pas représentées (ce sera lors de la
conception).
Ce diagramme montrera les concepts du domaine métier, les liens (associations) entre ces
concepts (avec leur cardinalité ou multiplicité), et les attributs de ces concepts ( souvent sous
forme de données simples ).
Le but de ce diagramme est de clarifier le domaine métier du client, et de se familiariser avec
ce domaine.
Dans une analyse structurée nous décomposons l'analyse suivant les tâches ou les fonctions.
Dans une application à dominante gestion, nous décomposerons notre application suivant les
données, et les traitements. Ici nous analyserons la complexité du domaine en regardant les
objets métier et leurs interactions entre eux.
Partie -I-
-Notion d’objet :
Un objet est défini à la fois par des informations : données ou attributs ou variables
d’instances.
36
Comportements : traitements ou méthodes ou opérations.
Exemple :
Partie -II-
-Notion de classe :
Lorsque des objets ont les mêmes attributs et comportements : ils sont regroupés dans une
famille appelée : Classe.
Les objets appartenant à celle-ci sont les instances de cette classe.
L’instanciation est la création d’un objet d’une classe.
Deux instances d’une même classe peuvent avoir des attributs avec des valeurs différentes et
mais partagent les mêmes méthodes.
Partie -III-
Les relations :
Client Achète
Produit
37
Agrégation est une forme particulière d’association entre plusieurs classes. Elle
exprime le fait qu’une classe est composée d’une ou plusieurs autres classes.
Bouteille Vin
La composition est une relation d’agrégation dans laquelle il existe une contrainte de
durée de vie entre la classe ‘composant’ et la ou les ‘composé’. Autrement dit la
suppression de la classe ‘composé’ implique la suppression de la des classes
‘composant’.
Exemple :
Commande LigneDeCommande
Généralisation de classe consiste à factoriser dans une classe, appelée superclasse, les
attributs et/ou opérations des classes considérées.
Exemple 1:
Généralisation
Classe A
Sous-Classe Sous-Classe
A1 A2
Exemple 2:
Classe A
Sous-Classe Sous-Classe
A1 A2
Spécialisation
38
L’encapsulation : les données ne sont accessibles qu’à partir des opérations définies
dans la classe. Le principe d’encapsulation renforce l’autonomie et l’indépendance de
chaque classe et donne une forte potentialité de définition de classe réutilisable.
Exemple 3:
L’héritage est un mécanisme qui permet d’assurer une grande variabilité dans la
réutilisation des objets. Il existe deux techniques liées à l’héritage : les classes
abstraites et l’héritage multiple.
Exemple 4:
Passager
poids:reel
donnerPoids():reel
Voiture
Super-classe
Conducteur Sous-classe
bouge(dir,vit):void
39
Exemple d’héritage multiple :
Partie -IV-
Comment identifier les bons objets métier pour construire notre diagramme de classe
d'analyse?
Il va falloir recenser dans les documents de définition des besoins et dans les documents
d'analyse l'ensemble des objets métier.
Les noms ou groupes nominaux vont être de bons candidats pour être élus au titre de classe,
objet ou attribut. Cependant, il faut être prudent car il y aura aussi un certain nombre de faux
amis et de doublons.
40
Voici une démarche de sélection des classes candidates:
Par use case, nous réaliserons un diagramme de classe, le diagramme final étant la
superposition de tous ces diagrammes.
Pour un use case nous recenserons les groupes nominaux rencontrés. Nous identifierons alors:
• Les classes (noms communs).
• Les objets (noms propres ou nom référencés).
• Les attributs (données simples qui qualifient une classe ou un objet).
• Les éléments qui sont étrangers à notre problème ou qui n'y ont pas de rôle réel.
• Les " classes fonctionnelles " qui ne sont porteuses d'aucune information, mais seulement
de traitement, qui ne sont souvent pas des classes de notre diagramme. Par exemple
gestionnaire du planning, décodeur de message, …
• Il est parfois difficile de savoir si une information est un attribut d'une classe ou une
classe (avec une association avec la classe). Dans le doute il vaut mieux faire une classe,
quitte à revenir en arrière dans une itération ultérieure. Par exemple pour la classe personne
l'âge est un attribut (donnée simple) l'adresse étant à priori une donnée complexe sera plutôt
une autre classe associée à la personne.
Pour le use case " effectuer un achat " voici la liste des classes sélectionnées:
caissier
caisse
Paiement catalogue
vente
article
ticket
ligne de vente
41
Nous ne gèrerons pas les exemplaires des articles. Nous appèlerons article un ensemble
d’exemplaires identifiés par le même code barre, et comportant des informations identiques
(prix …).
Nous allons maintenant rajouter les associations entre les classes, en donnant un intitulé
et des cardinalités à ces associations.
Notre but n'est pas de mettre à jour toutes les associations entre les différentes classes, mais
de noter les associations pertinentes pour comprendre le problème. Il faut privilégier les
associations qui durent dans le temps, et dont la connaissance est nécessaire à la
compréhension du problème.
Il faut éviter les associations redondantes ou dérivables d'autres associations.
L'établissement de ces associations nous amène à poser des questions au client. C'est un des
buts recherchés. Voici une possibilité de diagramme de classe avec ses associations.
caissier
0..1
catalogue
utilise
1 1
0..1
caisse
se fait à partir
1
Paiement 1 effectue
payée par 0..1
1 1
vente
génèr 1 1
e contient
ticket comprend
1
1..*
ligne de
vente
0..*
1 0..*
article
Sur ce diagramme de classe d'analyse il faut maintenant mettre les attributs des classes qui ont
été repérés dans le cahier des charges, le diagramme de use case, ou dans le diagramme de
séquence boîte noire du use case.
42
A priori, les attributs présents dans notre diagramme de classe d'analyse sont des attributs
simples. On pourra faire exception des données pures qui sont des regroupements de données
simples ( ici code, adresse, prix ) .
Les attributs qui ont un comportement sont des classes associées à notre classe. Ceci ne
présage en rien du diagramme de classe de conception. Nous verrons ultérieurement ce que
deviennent les associations dans ce schéma…
Dans les attributs, il ne doit pas y avoir de clef sur un autre objet. Cela se représente par une
association.
caissier
0..1
catalogue
utilise
1 1
0..1
caisse
se fait à partir
1
Paiement
effectue
somme : réel 1 0..1
payée par 1
1 Vente
date : Date
heure : Heure
génère 1 contient
1
ticket
1 comprend
1...*
1..*
ligne de vente
quantité : entier
0..*
le prix ou la
somme devraient est décrite par
0..*
se donner par 1
rapport à une description article
monnaie...
description : text
prix : réel
code : codebarre
43
CONCLUSION
Récapitulation et synthèse
Client Compte
1..1
0..*
Exercice
Dessiner les diagrammes (d’objets, de classes) correspondant aux situations suivantes :
(a) La France est frontalière de l’Espagne. Le Canada est frontalier des Etats-Unis.
(b) Un polygone est constitué de points. Un point possède une abscisse et une ordonnée.
(c) Une médiathèque possède des médias, empruntables par les abonnés de la médiathèque.
(d) Un client demande une réparation. Une réparation est effectuée par un mécanicien. Elle
nécessite des compétences. Un mécanicien possède des compétences.
(e) Une galerie expose des oeuvres, faites par des créateurs, et représentant des thèmes. Des
clients, accueillis par la galerie, achètent des oeuvres.
Dessiner les diagrammes (d’objets, de classes, de généralisation) correspondant à la situation
44
suivante :
(f) Un bateau contient des cabines, occupées par des personnes qui effectuent des activités.
Les
personnes sont ou bien des guides, ou bien des animateurs, ou bien des passagers. Les
guides expliquent des visites aux passagers et les animateurs animent des animations pour
les passagers.
Exercice « JARDINIER »
Exercice :
45
46
Nom/Prénom :
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
Thème de la leçon : notion des classes
Objectifs de la leçon :
Le stagiaire doit être capable de
• Fournir un premier contact avec la modélisation des
données en montrant la difficulté et l'importance de
cette activité.
• Montrer la différence entre modèle du domaine et
modèle du problème.
• Montrer comment faire la liaison entre le dictionnaire
et les modèle du domaine / du problème.
• Montrer la relation entre les cas d'utilisation et la
modélisation des données pour souligner une certaine
continuité et éviter que les diagrammes de cas
d'utilisation soit élaborés mais aussitôt abandonnés.
• Simplicité
• Facilité pour coder et réutiliser
• Modèle plus proche de la réalité
Matériels et matière d’œuvre : Exercices
– description plus précise des combinaisons
(Données, opérations)
– décomposition basée sur “classification naturelle”
f il à d tà i t i
47
INTRODUCTION
Activités d’apprentissage
Rappel
Transition
Pour que le stagiaire soit capable de réaliser des classe il faut qu’il défini premièrement
le modèle de domaine et le modèle de problème pour pouvoir étudier les problèmes à
résoudre et en fin extraire les classes et leurs attributs et méthodes
48
DEROULEMENT DU COURS
Activités d’apprentissage
Partie1
Identification des classes et des attributs :
49
Représentation graphique d'une classe :
Exemple 2
Le nom de la classe
Compte
Exemple 3
Compte
Les attributs Numéro : String
Solde : Float
Attributs de la classe
50
Un attribut est une valeur de donnée détenue par les objets d'une classe.
Chaque nom d'attribut est unique à l'intérieur d'une classe (par opposition au fait
d'être unique parmi toutes les classes). Ainsi la classe Personne et la classe Société peuvent
avoir chacune un attribut adresse.
Syntaxe complète : visibilité nom : type = valeur -initiale
Valeur -initiale : servira à donner la valeur initiale d'un attribut à la création d'un nouvel objet.
Exemple 4 :
Opérations de la classe
- Est une fonction applicable aux objets d’une classe;
- Permet de décrire le comportement d’un objet
* Une méthode est l’implémentation d’une opération
Compte
numero : String public class Compte {
solde : Float
String numero;
Les méthodes
Float solde;
debiter () : void
crediter () : void
getSolde () : Float
void debiter() {}
void crediter() {}
Float getSolde() {}
}
Opérations
Une opération est un service que l'on peut demander à un objet pour réaliser un
comportement. Tous les objets d'une classe partagent les mêmes opérations.
En analyse, on parle plutôt d’opération. En conception, on parle plutôt de méthode. Une
méthode est l'algorithme ou la procédure qui produit le résultat de l'opération.
51
Type -retour : optionnel si l'opération ne retourne pas de résultat (void du C++).
Fenêtre Objet géométrique
Nom de la
classe
Voitur Attributs
type : string
marque : string opérations
couleur : string
repeindre(c: Couleur)
déplacer(d : Méthode
Des attributs complémentaires peuvent être nécessaires
Exemple 3
Compte
numero : String
solde : Float
debiter () : void
crediter () : void
getSolde () : Float
52
Compte
- numero : String
- solde : Float
Exemple 4
53
Synthèse
note (peut contenir un
complément de
description, un
commentaire, …)
adhérent de la
bibliothèque
Adhérent
privé valeur initiale
- adresse : String = 'adresse inconnue'
- numeroINSEE[6] : Integer
type d'attribut
# changeAdresse(nouvelleAdresse : String)
+ cotisationAJour() : Boolean
type de
public paramètre
54
Agrégation entre classes
55
Généralisation, Spécialisation et héritage simple
56
Exemple 2
Véhicule
Véhicule Véhicule
Héritage multiple
57
CONCLUSION
Récapitulation et synthèse
1) Donner les étapes nécessaires pour définir les classes avec les attributs?
2) En conception technique, comment implémente t-on les associations entre des classes du
diagramme de classe :
Par exemple :
Compte
Client
58
Exercice « EXPRESSION »
Soit l’expression suivante : (X+Y/2)/(X/3+Y)
Exercice « classification »
Classer les relations suivantes en généralisation, instanciation, agrégation, lien ou association.
Argumenter les réponses.
(a) Un pays possède une capitale.
(b) Un philosophe qui dîne utilise une fourchette.
(c) Un joueur de rugby est un avant, un demi ou un arrière.
(d) Une équipe de rugby est composée de 8 avants, 2 demis et 5 arrières.
(e) Dédé programme son simulateur de vol en Java sur son PC.
(f) Java, C++, Eiffel sont des langages orientés objet.
(g) La Tour Eiffel a 3 étages et 3 millions de boulons.
(h) L'agrégation est un examen.
Exercice « brain-storming »
Préparer un diagramme d’objets montrant au moins 10 relations parmi les classes d’objets
suivantes. Inclure les associations les agrégations et les généralisations. Placer les ordre de
multiplicité.
(a) école, terrain de jeu, proviseur, conseil de classe, salle de classe, livre, élève, professeur,
cafétéria, ordinateur, bureau, chaise, porte.
(b) château, douve, pont-levis, tour, fantôme, escalier, donjon, plancher, couloir, salle, fenêtre,
Pierre, seigneur, dame, cuisinier.
(c) Automobile, roue, frein, moteur, porte, batterie, silencieux, pot d’échappement.
Pour chaque propriété des classes UML suivantes, nous avons volontairement omis de la
souligner quand cela était nécessaire. En vous aidant du nom de la propriété et de sa
signification, indiquer si la propriété est "d'instance" ou bien "de classe".
Château
muraille : Muraille ;
listeTours : Liste ;
listeChateaux : Liste ;
void imprimerMuraille() ;
Objet
nombreObjets : int ;
mesObjets : Liste ;
numéro : int ;
59
60
Nom/Prénom :
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
Objectifs de la leçon :
Le stagiaire doit être capable de
61
INTRODUCTION
Rappel
DEROULEMENT DU COURS
Diagramme de classe d’analyse
Le diagramme de classes est un des documents les plus importants, voire le plus important de
l'analyse d'un logiciel par une méthode objet. C'est le premier document qui est dans le monde
des objets (les acteurs n'étant pas forcément représentés dans le système informatique). C'est
donc l'entrée dans le monde des objets.
Ce diagramme est un diagramme de classe d'analyse. Il ne représente pas les classes Java ou
C++ que nous développerons par la suite.
Ici nous nous intéressons aux classes du domaine métier, c'est à dire des objets dont on parle
dans le cahier des charges et dans les uses cases principalement. Nous ne nous intéressons pas
aux objets informatiques dans ce diagramme (sauf bien entendu si le métier est l'informatique
!!). Cela viendra en son temps, dans le diagramme de classe de conception. Quand nous
passerons à la conception des classes disparaîtront, d'autres apparaîtront, dont les classes
informatiques (collections, …). C'est normal. En phase d'analyse, nous voulons simplement
faire un diagramme de classe d'objets manipulés dans le domaine métier considéré.
Dans ce diagramme de classe les opérations ne sont pas représentées (ce sera lors de la
conception).
Ce diagramme montrera les concepts du domaine métier, les liens (associations) entre ces
concepts (avec leur cardinalité ou multiplicité), et les attributs de ces concepts ( souvent sous
forme de données simples ).
Le but de ce diagramme est de clarifier le domaine métier du client, et de se familiariser avec
ce domaine.
Dans une analyse structurée nous décomposons l'analyse suivant les tâches ou les fonctions.
Dans une application à dominante gestion, nous décomposerons notre application suivant les
données, et les traitements. Ici nous analyserons la complexité du domaine en regardant les
objets métier et leurs interactions entre eux.
Partie -I-
-Notion d’objet :
Un objet est défini à la fois par des informations : données ou attributs ou variables
d’instances.
62
Comportements : traitements ou méthodes ou opérations.
Exemple :
Partie -II-
-Notion de classe :
Lorsque des objets ont les mêmes attributs et comportements : ils sont regroupés dans une
famille appelée : Classe.
Les objets appartenant à celle-ci sont les instances de cette classe.
L’instanciation est la création d’un objet d’une classe.
Deux instances d’une même classe peuvent avoir des attributs avec des valeurs différentes et
mais partagent les mêmes méthodes.
Partie -III-
Les relations :
Client Achète
Produit
63
Agrégation est une forme particulière d’association entre plusieurs classes. Elle
exprime le fait qu’une classe est composée d’une ou plusieurs autres classes.
Bouteille Vin
La composition est une relation d’agrégation dans laquelle il existe une contrainte de
durée de vie entre la classe ‘composant’ et la ou les ‘composé’. Autrement dit la
suppression de la classe ‘composé’ implique la suppression de la des classes
‘composant’.
Exemple :
Commande LigneDeCommande
Généralisation de classe consiste à factoriser dans une classe, appelée superclasse, les
attributs et/ou opérations des classes considérées.
Exemple 1:
Généralisation
Classe A
Sous-Classe Sous-Classe
A1 A2
Exemple 2:
Classe A
Sous-Classe Sous-Classe
A1 A2
Spécialisation
64
L’encapsulation : les données ne sont accessibles qu’à partir des opérations définies
dans la classe. Le principe d’encapsulation renforce l’autonomie et l’indépendance de
chaque classe et donne une forte potentialité de définition de classe réutilisable.
Exemple 3:
L’héritage est un mécanisme qui permet d’assurer une grande variabilité dans la
réutilisation des objets. Il existe deux techniques liées à l’héritage : les classes
abstraites et l’héritage multiple.
Exemple 4:
Passager
poids:reel
donnerPoids():reel
Voiture
Super-classe
Conducteur Sous-classe
bouge(dir,vit):void
65
Exemple d’héritage multiple :
Partie -IV-
Comment identifier les bons objets métier pour construire notre diagramme de classe
d'analyse?
Il va falloir recenser dans les documents de définition des besoins et dans les documents
d'analyse l'ensemble des objets métier.
Les noms ou groupes nominaux vont être de bons candidats pour être élus au titre de classe,
objet ou attribut. Cependant, il faut être prudent car il y aura aussi un certain nombre de faux
amis et de doublons.
66
Voici une démarche de sélection des classes candidates:
Par use case, nous réaliserons un diagramme de classe, le diagramme final étant la
superposition de tous ces diagrammes.
Pour un use case nous recenserons les groupes nominaux rencontrés. Nous identifierons alors:
• Les classes (noms communs).
• Les objets (noms propres ou nom référencés).
• Les attributs (données simples qui qualifient une classe ou un objet).
• Les éléments qui sont étrangers à notre problème ou qui n'y ont pas de rôle réel.
• Les " classes fonctionnelles " qui ne sont porteuses d'aucune information, mais seulement
de traitement, qui ne sont souvent pas des classes de notre diagramme. Par exemple
gestionnaire du planning, décodeur de message, …
• Il est parfois difficile de savoir si une information est un attribut d'une classe ou une
classe (avec une association avec la classe). Dans le doute il vaut mieux faire une classe,
quitte à revenir en arrière dans une itération ultérieure. Par exemple pour la classe personne
l'âge est un attribut (donnée simple) l'adresse étant à priori une donnée complexe sera plutôt
une autre classe associée à la personne.
Pour le use case " effectuer un achat " voici la liste des classes sélectionnées:
caissier
caisse
Paiement catalogue
vente
article
ticket
ligne de vente
67
Nous ne gèrerons pas les exemplaires des articles. Nous appèlerons article un ensemble
d’exemplaires identifiés par le même code barre, et comportant des informations identiques
(prix …).
Nous allons maintenant rajouter les associations entre les classes, en donnant un intitulé
et des cardinalités à ces associations.
Notre but n'est pas de mettre à jour toutes les associations entre les différentes classes, mais
de noter les associations pertinentes pour comprendre le problème. Il faut privilégier les
associations qui durent dans le temps, et dont la connaissance est nécessaire à la
compréhension du problème.
Il faut éviter les associations redondantes ou dérivables d'autres associations.
L'établissement de ces associations nous amène à poser des questions au client. C'est un des
buts recherchés. Voici une possibilité de diagramme de classe avec ses associations.
caissier
0..1
catalogue
utilise
1 1
0..1
caisse
se fait à partir
1
Paiement 1 effectue
payée par 0..1
1 1
vente
génèr 1 1
e contient
ticket comprend
1
1..*
ligne de
vente
0..*
1 0..*
article
Sur ce diagramme de classe d'analyse il faut maintenant mettre les attributs des classes qui ont
été repérés dans le cahier des charges, le diagramme de use case, ou dans le diagramme de
séquence boîte noire du use case.
A priori, les attributs présents dans notre diagramme de classe d'analyse sont des attributs
simples. On pourra faire exception des données pures qui sont des regroupements de données
simples ( ici code, adresse, prix ) .
68
Les attributs qui ont un comportement sont des classes associées à notre classe. Ceci ne
présage en rien du diagramme de classe de conception. Nous verrons ultérieurement ce que
deviennent les associations dans ce schéma…
Dans les attributs, il ne doit pas y avoir de clef sur un autre objet. Cela se représente par une
association.
caissier
0..1
catalogue
utilise
1 1
0..1
caisse
se fait à partir
1
Paiement
effectue
somme : réel 1 0..1
payée par 1
1 Vente
date : Date
heure : Heure
génère 1 contient
1
ticket
1 comprend
1...*
1..*
ligne de vente
quantité : entier
0..*
le prix ou la
somme devraient est décrite par
0..*
se donner par 1
rapport à une description article
monnaie...
description : text
prix : réel
code : codebarre
69
CONCLUSION
Récapitulation et synthèse
Client Compte
1..1
0..*
Exercice
Dessiner les diagrammes (d’objets, de classes) correspondant aux situations suivantes :
(a) La France est frontalière de l’Espagne. Le Canada est frontalier des Etats-Unis.
(b) Un polygone est constitué de points. Un point possède une abscisse et une ordonnée.
(c) Une médiathèque possède des médias, empruntables par les abonnés de la médiathèque.
(d) Un client demande une réparation. Une réparation est effectuée par un mécanicien. Elle
nécessite des compétences. Un mécanicien possède des compétences.
(e) Une galerie expose des oeuvres, faites par des créateurs, et représentant des thèmes. Des
clients, accueillis par la galerie, achètent des oeuvres.
Dessiner les diagrammes (d’objets, de classes, de généralisation) correspondant à la situation
70
suivante :
(f) Un bateau contient des cabines, occupées par des personnes qui effectuent des activités.
Les
personnes sont ou bien des guides, ou bien des animateurs, ou bien des passagers. Les
guides expliquent des visites aux passagers et les animateurs animent des animations pour
les passagers.
Exercice « JARDINIER »
Exercice :
71
72
Nom/Prénom :
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
Objectifs de la leçon :
Le stagiaire doit être capable de :
• Déterminer la frontière du système
• Définir les cardinalités des acteurs par rapport au système
• Préciser les rôles de chaque acteur
• Définir les événements des acteurs vers le système
73
INTRODUCTION
Rappel
Le diagramme de contexte
Le diagramme de contexte définit les intentions entre les acteurs et le système, et les
différents rôles de chaque acteur vers le système ainsi que les cardinalités
DEROULEMENT DU COURS
Diagramme de contexte
Les objets déterminés serviront lors des phases analyse, conception et plus tard à
l’implémentation.
Les objets du modèle statique sont une représentation (modélisation) des objets (monde réel),
qui seront en général ceux qu’on retrouve lors de l’implémentation sous la même forme ou
sous une forme différente.
Ils sont munis de données encapsulées dans les objets, représentant leurs attributs et leurs
opérations (méthodes).
74
Les définitions de ces symboles sont les suivantes:
Les règles pour l'interconnexion des composants des diagrammes contextuels sont
illustrées à cette figure.
75
* Une seule transformation de contexte peut apparaître sur le diagramme contextuel d'un
système donné.
* Les terminateurs peuvent figurer à plusieurs exemplaires pour plus de commodité, cela
étant indiqué par un astérisque accolé à leur nom
Acteur 1 Acteur 2
Système
Acteur 3
Les événement externes ( ) sont envoyés des acteurs vers le système. Alors ce qu’il
nous permet d’identifier les déférents use cases.
Exemple d’un diagramme de contexte correct
76
CONCLUSION
Récapitulation et synthèse
Généralement le diagramme de contexte n'existe pas dans UML, mais est néanmoins très
intéressant
Il emprunte le même formalisme qu'un diagramme de collaboration.
Exercice d’évaluation
Bon de Fournisseur
Commande
Fournisseur
Si
Achats
Corrigé
Bon de Fournisseur
Commande
77
Fournisseur Catalogue de produits
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
Objectifs de la leçon :
Le stagiaire doit être capable de :
- Déterminer la classifications des événements ou bien les uses cases
- Préciser les acteurs qui ont participés dans ce diagramme
80
INTRODUCTION
Rappel
• L'ordre d'envoi d'un message est déterminé par sa position sur l'axe vertical du
diagramme ; le temps s'écoule "de haut en bas" de cet axe.
• La disposition des objets sur l'axe horizontal n'a pas de conséquence pour la
sémantique du diagramme.
Les diagrammes de séquences et les diagrammes d'état transitions sont les vues
dynamiques les plus importantes d'UML.
81
DEROULEMENT DU COURS
Diagramme de séquence
Objet :
• objet dédié: une instance particulière d'une classe
• objet anonyme : n'importe quelle instance d'une classe
Stimulus :
• une instance de message i.e. représentation de l'échange d'information entre objets
Supporte des flots de données et divers types de synchronisation
Déroulement temporel :
• vertical: représente la ligne de vie des objets et les périodes d'activité des objets
• horizontal: représente l'enchaînement des stimuli entre 1 objet émetteur et 1 objet
récepteur i.e. les flots de contrôle (séquence, répétition, alternative)
82
Client Cassier Système
Présenter article
Lire article (code)
Finir vente
Calcule total
Affichage (total)
Paiement
Payer (somme)
Calcule
Affichage (monaie) monaie
Impression (ticket)
Rendre (ticket, monaie)
Temps
Pour faire un diagramme de séquence boite blanche il suffit de détailler chaque opération (
)
Dans un diagramme
Comme exemple on détaille l’opération (FINIR VENTE)
Finir vente
Set (total)
Total
83
Temps
La différence entre un diagramme de séquence d’analyse et un diagramme
de séquences de conception
Calculer (total)
Temps
84
– la seconde est la façon de marquer la répétitivité d’un envoi de message. Par
exemple, si l’on doit répéter un appel pour toute une collection d’objets (pour
tous les éléments de la liste des demandes), on fera précéder le dénominateur du
message par un « * ».
Un diagramme des séquences permet de vérifier que tous les acteurs, les classes, les
associations et les opérations ont bien été identifiés dans les diagrammes de cas et de
classes. Il constitue par ailleurs une spécification utile pour le codage d’un algorithme
ou la conception d’un automate.
Le diagramme de séquence de conception ci-dessous permet de voir un exemple
dans lequel la signature des méthodes est à peu près formalisée.
Temps
Exemple 1
85
Saisie compte
Validation compte
Demande type
Exemple2
décrocher
a
{b-a < 1 sec}
tonalité
b
{c-b < 10 sec}
Taper chiffre
c
d
routage
{d’-d < 5 sec}
d’
sonner sonner
décrocher
86
Exemple 3
Durant : Objet SA :
ANPE
Personne Société
Convocation
Entrevue
Bilan
Attribution du poste
Notification d’embauche
Exemple 4
87
Interface Objet 1 : Objet 3 :
Frontière
Acteur Classe1 Classe3
du système
commenceSession
(nom, pass) vérifieMotPasse
(pass)
Objet 2 :
^MotPasseOk Classe2
créé ajouteSession
ouvreSession
Retour
de
fermeSession
Temps Message
sur
l’objet
Bloc Destruction
d’opération De l’objet
Exemple 5
Entrevue
Bilan
Embauche
Notification d’embauche
88
• Chaque réception de message donne lieu à une durée d'activation : le temps de
traitement du message
• La durée d'activation de l'émetteur recouvre celle du récepteur
• Type de messages :
• flot de contrôle à plat :
• message synchrone
• message asynchrone
• flot de contrôle emboîté ou appel de procédure (avec attente implicite du
retour)
• retour d'un appel de procédure, avec ou sans paramètre de retour
Exemple 6
89
90
CONCLUSION
Récapitulation et synthèse
Corrigé
91
Exercice d’évaluation N°2
Ouvrir et sauvegarder
A) Enoncé
Dans un programme interactif développé avec le pattern MVC, on donne la possibilité à
l’utilisateur :
1) Des trois classes Modèle, Vue et Contrôleur qui intercepte les demandes
de sauvegarde ou de chargement de l’utilisateur.
B) Corrigé
92
93
Nom/Prénom :
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
Objectif de la leçon :
Le stagiaire doit être capable de :
Connaître la déférence entre les états et les activités
Ainsi que les événements qui déclanche des résultats
entre toutes les activités possibles
Prévoir les itérations
Associer la synchronisation (disjonction et conjonction d’activités)
94
INTRODUCTION
Rappel
Transition
Pour passer au diagramme d’activité il faut tenu compte au condition et les événements ainsi
que les différents type de transition.
DEROULEMENT DU COURS
Diagramme d’activité
Le diagramme d’activité est très proche du diagramme état transition puisqu’il représente le
comportement interne d’une opération ou d’un d’utilisation en termes d’actions.
Les concepts de base d’activités et de transition déjà définis sont repris dans le diagramme
d’activités. Cependant, le diagramme d’activité utilise le concept d’état action qui correspond
à un état dans lequel se déroule une action et au minimum une transition automatique vers un
autre état.
Transition
Activité1 Activité1
95
3. Ajouter les activités Si vous modélisez un use case, introduisez une activité pour
chaque use case principal. Si vous modélisez un « workflow », introduisez une activité
pour chaque processus principal, souvent un use case. Enfin, si vous modélisez une
méthode, il est souvent nécessaire d’avoir une activité pour chaque grande étape de la
méthode.
4. Ajouter des transitions (séquentielles), des transitions alternatives (conditionnelles),
des synchronisations entre des activités, des itérations.
5. Identifier des swimlanes et répartir des activités identifiées dans ces swimlanes
Notion d’activité
• Etat de départ
• Etat de terminaison
• Transition
• Transition Alternative
96
Exemple 1 :
Etat initial
Croissance
-Innovation
Création
Matricule
Chute
Faillite
Exemple 2:
Diagramme d'activité avec synchronisation
97
[plus de
Chercher un café
jus d’orange]
[il reste du
jus d’orange]
Allumer la cafetière
Le café passe
Servir
Synchronisation
Déguster
Exemple 3:
L'exemple suivant illustre l'utilisation des barres de synchronisation :
98
Couloirs d'activités :
Afin d'organiser un diagramme d'activités selon les différents responsables des actions
représentées, il est possible de définir des "couloirs d'activités".
Il est même possible d'identifier les objets principaux, qui sont manipulés d'activités en
activités et de visualiser leur changement d'état
.
99
CONCLUSION
Récapitulation et synthèse
En théorie, tous les mécanismes dynamiques pourraient être décrits par un diagramme
d'activités, mais seuls les mécanismes complexes ou intéressants méritent d'être représentés.
Exercice 1
Elaborer un diagramme d’activité représentant la saisie d’un texte sous Word, et l’impression
Exercice 2
Construire un diagramme d’activité représentant l’utilisation d’une cafetière électrique:
– premier état: chercher du café
– dernier état: Servir du café
Solution
100
Exercice 3
Construire un diagramme d’activité pour modéliser le processus de commander d’un produit.
Le processus concerne les acteurs suivants:
– Client: qui commande un produit et qui paie la facture
– Caisse: qui encaisse l’argent du client
– Vente: qui s’occupe de traiter et de facturer la commande du client
– Entrepôt: qui est responsable de sortir les articles et d’expédier la commande.
Solution
Commander
produit
Traiter
commande
Sortir
articles
Expédier
commande Facturer Payer
client facture
Encaisser
101
102
Nom/Prénom :
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
Objectifs de la leçon :
Le stagiaire doit être capable de
103
INTRODUCTION
Activités d’apprentissage
Rappel
Diagramme de collaboration :
• Ils permettent de représenter le contexte d'une interaction, car on peut y préciser les
états des objets qui interagissent.
Transition
Attente
Actif
Diagramme d’état
1 : m() :o1
1.1 : msg()
:o2
Diagramme collaboration
104
DEROULEMENT DU COURS
Activités d’apprentissage
Utilité de diagramme de collaboration
Le diagramme de collaboration va nous montrer comment les objets interagissent entre eux
pour rendre le service demandé par le contrat d'opération. Nous allons d'abord observer la
syntaxe, et la forme que prend ce diagramme d'opération. Les objets doivent demander des
services à d'autres objets. Il leur faut donc connaître ces objets pour pouvoir leur adresser des
messages. Nous allons donc regarder la visibilité des objets (c’est à dire comment un objet
peut connaître d'autres objets). Enfin quand une ligne du contrat d'opération est réalisée il faut
se poser la question de savoir quel objet agit pour réaliser cette ligne (qui crée tel objet, qui
reçoit l'événement initial). En un mot il est nécessaire de définir les responsabilités des objets.
L'expérience et le savoir faire des professionnels nous ont permis de définir des règles, des
modèles de pensée, qui nous permettrons de nous guider pour définir les responsabilités des
objets. Ce sont les GRASP patterns que nous verrons enfin, avant de traiter notre caisse.
La notion collaboration
1.2 : setprix(prix)
art : article
: article
105
Les objets
Ici nous représentons la coopération des objets pour rendre le service demandé. Il s’agit
donc bien d’objets. Ces objets apparaissent sous trois formes :
Objet
1 :Modifierprix
Modifierprix(c :caisse (code,prix) :catalog
ode,prix)
1.1 :art :=
1.2 : Multi objet
Objet setprix(prix)
nommé
art : article
: article
• UML permet de spécifier de manière très précise l'ordre et les conditions d'envoi des
messages sur un diagramme dynamique.
106
• Retour d’une liste de valeurs à l’issue d’un envoi de
• Message
Une liste de valeurs peut être retournée suite à l’envoi d’un message
-NB :
Pour rendre les messages plus spécifiques il est de préférable de les affecter des conditions et
des attributs comme ci-dessus :
107
o cond : garde, expression booléenne.
Permet de conditionner l'envoi du message, à l'aide d'une clause exprimée en
langage naturel.
3 : bonjour ()
1.3.6 * : ouvrir()
108
Ce message (numéro 2.5) ne sera envoyé qu'après les messages 1.3 et 2.1, et que si "t < 10s".
Ces messages ne seront envoyés qu'après l'envoi du message 1.3 et si la condition "disk full"
est réalisée. Si cela est le cas, les messages 1.7.a et 1.7.b seront envoyés simultanément.
Plusieurs messages 1.7.a peuvent être envoyés
Puis il
modifie le 1.1 :art := chercher(code) :
prix de article
1.2 :
l’article
trouvé
art : article
: article
109
Le message initial est non numéroté par convention. Ce message est un des événements issu
du diagramme de séquence boîte noire, dont nous avons fait un contrat d’opération.
Les opérations effectuées en réaction à un message numéro x seront numérotées de x.1 à x.n.
Et ainsi de suite pour les opérations effectuées en réaction à un message numéro x.y (x.y.1 à
x.y.n).
Un lien entre deux objets est directionnel. La flèche indique le receveur du message. Ce lien
implique que l’objet qui envoie le message connaisse celui qui le reçoit. Un objet ne peut en
effet envoyer un message qu’à un objet qu’il connaît (rappelez-vous que l’on envoie un
message à un objet en lui parlant : moncatalogue, modifie le prix de l’article de code moncode
à monprix.). Chaque flèche implique une visibilité orientée entre les objets.
Exemple 1 :
:ihmClient 5: consulter compte
4: entrer n° compte
3:
:consultationController
sinon:Client
6: obtenir solde
:Compte
Exemple 2
110
Exemple 3 :
Exemple 4 :
111
(6) Débit compte
Exemple 5 :
Convoquer(unPoste) ProposerPoste
(unPoste)
ProposerCandidats
signer PasserEntrevue()
(desCandidats,unPoste)
signer estClient
New OOsoft:Sociéte
Ct1:ContratTravail
Embaucher(unPoste) NotifierEmbauche(unPoste)
EffectuerBilan()
CONCLUSION
Récapitulation et synthèse
Exercice d’évaluation
Exercice 1
112
Définir un diagramme d’état du déroulement d’une voiture (marche avant,
marche arrière, point mort …)
A partir de ce diagramme réaliser un diagramme de collaboration
Exercice 2
113
114
Nom/Prénom :
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
Objectifs de la leçon :
Le stagiaire doit être capable de
- Faire tous les états possibles d’un objet
- Etudier les conditions de transition
- Définir la durée d’un état
115
INTRODUCTION
Activités d’apprentissage
Rappel
Diagramme d’un état : il montre les différents états des objets en réaction aux événements.
L’état d’un objet et défini, à un instant donné, par l’ensemble des valeurs de ses propriétés.
Transition : c’est le passage d’un état à un autre.
Une action : est une opération instantané qui ne peut être interrompue ; elle est associée à
une transition.
Une activité : est une opération d’une certaine durée qui peut être interrompue,
Elle est associée à un état d’un objet.
Transition
A fin d’extraire les classes et les objets il faut réfléchir de tous les cas possibles
de ce dernier
116
DEROULEMENT DU COURS
Activités d’apprentissage
C’est un graphe composé de nœuds représentant des états d’un objet d’une classe et
les arcs sont les transitions portant des événements.
Un diagramme d’états est propre à une classe d’objets.
Un état d’un objet peut correspondre à des sous états. Cela dépend du niveau de
granularité qu’on désire.
Exemple :
L’état Sportif peut être représenté par trois sous états : Athlète Haut Niveau ; Sélection en E.N.
et Compétition.
Convocation
Athlète Haut Niveau
Sélection en Equipe
Nationalle
Disputer
Suivre parallèlement
Compétition
Changer carrière
La notion d’état
Un état d’un objet est défini à la fois par la valeur de ses attributs et de ses liens avec les
autres objets.
117
Un état sépare deux événements
Schéma général :
Exemple : cette figure montre un des actions et activités d’états ainsi que la description
complète d’une transition
Etudiant Pratiquer
InscritEn * *
Nom
Prénom
Âge
Statut 0..*
*
Diplôme Sport
Ici l’objet Etudiant peut passer d’un état Etudiant à un état de diplômé à un état de sportif,
C’est l’attribut Statut qui va changer de valeur.
Etudiant
Diplômé Sportif
Un événement est produit par un fait et véhicule une information qui va
solliciter un ou plusieurs objets.
Soit ils répondront en activant une méthode ; soit ils ne réagiront pas du tout.
Cela dépend de l’état dans lequel se trouve (nt) l’ (les) objet(s).
118
Lorsqu’un objet provoque un événement en direction d’un autre objet, ce dernier
peut répondre en déclenchant une de ses méthodes
C’est une interaction entre ces deux objets. L’événement est qualifié alors de
message entre ces deux objets.
Exemple 1 :
Exemple 2 :
Etat Etat final
Evénement condition
Naissance Décès
Etat transitio
Exemple 3 :
119
Exemple 4 :
Raccroché
Taper un numéro
Attente nontant
État final
Exemple de distributeur de boisson
Remarque :
Plusieurs sous diagrammes d’états peuvent intervenir en même temps. Ils se déroulent en
concurrence ou en synchronisation.
120
Lorsqu’ils sont en concurrence, le premier sous diagramme
d’état bloque les autres et fait quitter l’état englobant vers un
autre état.
Inscrit ANPE
Allocation
chômage
Proposition ANPE
OU Proposition Entrevue
En PhaseEmbauche
ET
En congé
Synthèse
Etat
Un état spécifie la réponse de l'objet aux événements d'entrée. Il est stable.
Il peut être caractérisé par un ensemble de valeurs d'attributs et de liens d'un objet.
Il correspond à l'intervalle de temps entre deux événements reçu par l'objet.
Transition :
Relation entre deux états indiquant qu’un objet dans le premier état va passer dans le
deuxième quand un événement particulier apparaîtra, et que certaines conditions seront
satisfaites.
Evénement:
121
Un événement est un stimulus pouvant transporter des informations (sous forme de
paramètres). Il est considéré comme n'ayant pas de durée.
Un événement peut être émis par un objet du système ou par un objet externe au système. Il
peut également provenir de l’interface du système, par exemple un clic de souris. Quelle que
soit son origine, un événement peut être soit dirigé vers un ou plusieurs objets, soit émis sans
destination précise dans le système, certains objets du système pouvant alors le capter.
La réponse d’un objet à un événement dépend de l'état dans lequel il se trouve autant que de
l'événement.
Remarque : la plupart des ouvrages et des outils de modélisation objet emploie les termes
événement et message indifféremment. En UML, un message est un événement particulier,
issu de l’interaction entre deux objets (un objet appelle une méthode d’un autre objet). Tout
événement n’est donc pas forcément un message.
Etats initial et final :
Chaque automate de classe doit préciser un état initial (état d’une instance juste après sa
création).
On peut également préciser les conditions de destruction en ajoutant un état final.
(création)
(néant) Etat initial
Evénement
Etat X (état
Condition
Une condition est une expression booléenne, attachée à un événement, qui doit être vraie pour
le déclenchement de la transition.
Elle est indiquée entre crochets à la suite du nom de l'événement
Action :
Une action est une opération instantanée. Elle est associée à un événement.
Elle représente une opération dont la durée est insignifiante comparée à la résolution (niveau
de définition) du diagramme d'état.
La notation d'une action sur une transition est précédée d’une barre oblique ("/").
122
Une activité est une opération qui dure un certain temps.
Elle est associée à un état. Elle peut être continue ou finie (se termine d’elle même).
Notation : "Do : activité".
Les diagrammes d’état peuvent s’exécuter une seule fois ou en boucle continue
Les diagrammes "une seule fois" (one–step-diagrams) représentent les objets qui ont une vie
finie.
Un diagramme "une seule fois" possède un état initial et un état final..
L'état initial est entré à la création de l'objet; l'entrée dans l'état final (qui peut éventuellement
prendre plusieurs conditions) implique, elle, la destruction de l'objet
pat
noir blanc
bouge bouge Partie nulle
pat
Tour
des noirs
Echec et mat Blanc
Ce diagramme qui décrit le comportement d'une ligne téléphonique, est une boucle continue.
On ne se soucie pas de savoir comment la boucle a démarré.
123
Combiné En attente Combiné
Sonnant Tonalité:
Faire: sonner "occupé"
Appelé répond / connecter
Connecté
Déconnecté Fin de
L'événement "Combiné raccroché" provoque une transition de n'importe quel état vers l'état
"En attente".
Noter que les états ne définissent pas toutes les valeurs d'un objet; par exemple, l'état "En
numérotation" inclut toutes les séquences de numéros incomplets.
Ce n'est pas la peine de les différencier puisqu'ils ont tous le même comportement
Conclusion
124
Récapitulation et synthèse
Exercice
La montre
Bouton mode
22 :15 :35
Bouton avance
Exercice 2
Exercice 3
Faire les transitions convenables aux états suivants pour faire un diagramme d’état de l’objet
client d’une gestion commerciale
125
Voici les états de client
client perspectif
client actif
client douteux
client inactif
client en contentieux
client supprimer
Exercice 4
D’écrire un diagramme d’état d’une bouteille avec toutes les conditions de passer d’un
état a l’autre
126
127
Nom/Prénom :
Etablissement :
Spécialité :
Niveau d’étude :
Bloc modulaire :
128
INTRODUCTION
Rappel
⇒ Les diagrammes de déploiement peuvent montrer des instances de noeuds (un matériel
précis), ou des classes de noeuds.
129
DEROULEMENT DU COURS
Diagramme de composants
Main Spécification
Exemple 1 :
130
Exemple 2 :
Diagramme de déploiement
131
Exemple 1 :
Client SGBD
ServeurApplication
Exemple 2 :
132
Routeur IP
Uranus
Serveur BDD
ORACLE V7 Venus << RNIS Internet >>
Serveur exchange
Passerelle Internet
Saturne
Stockage << ligne spécialisée 64 IBM
de fichiers Kbps >> grand système
<< ethernet 100Mb >>
MVS
Station Mercure
d’administration Passerelle
SNA << Token Ring >> IBM
AS/400
Jupiter
Serveur
logiciels << Réseau téléphonique commuté >>
Pluton
Serveur impression
et communication Elara
Imprimante
Neptune
Serveur BDD
SQL Server
Exemple 3 :
133
Poste Client Serveur de BDD
BDD
Procédures
Pages stockées
WEB d’insertion
Serveur de
Serveur WEB traitement
ODBC
HTML
Objet
métier
ActiveX
134
Bibliographie et Ressources
Penser Objet avec UML et Java de Michel Lai de chez Dunod
http://fr.wikipedia.org/wiki/Unified_Modeling_Language
Martin Fowler et al. (2004). UML 2.0, ISBN 2744017132 : initiation aux aspects
essentiels de la notation
"http://developpeur.journaldunet.com/dossiers/alg_uml.shtml", UML en 5
étapes, MORLON J, avril, 2004.
"http://developpeur.journaldunet.com/tutoriel/cpt/031013cpt_uml5conseils.shtm
l", Cinq petits conseils pour un
schéma UML efficace, BORDERIE X, avril, 2004.
"http://eric.univ-lyon2.fr/~jdarmont/docs/sise-bd-ex_rel.pdf", Exercices -
Modèle Relationnel, DARMONT J, janvier,
2004.
"http://eric.univ-lyon2.fr/~jdarmont/docs/sise-bd-ex_uml.pdf", Exercices -
Modèle UML, DARMONT J, janvier,
2004.
Récupérée de « http://fr.wikipedia.org/wiki/Unified_Modeling_Language »
135
Logiciels de modélisation UML
Logiciels libres
• ATL solution open source pour faire des transformations de modèles vers ou depuis
UML (entre autres); ATL est un langage de type QVT.
• Dia
• Umbrello un modeleur UML sous GPL. Ne fonctionne pas correctement sous
Windows ;
• ArgoUml un modeleur UML sous Licence BSD ;
• Gaphor un modeleur UML sous GPL la version actuelle est 0.7.1 ;;
• BOUML, un modeleur UML sous GPL pour Windows, Linux, MacOS X et Solaris;
• Eclipse GMT-XUML, en version betâ.
• Eclipse UML2, Méta modèle UML2, sans interface graphique.
• Netbeans 5.5, en version preview.
• Staruml, en version libre.
• Acceleo, générateur de code source à partir de modèles UML.
Logiciels propriétaires
• Together, de Borland ;
• Poseidon, basé sur ArgoUml (version commerciale) ;
• Rational Software Architect / Rational Software Modeler (et toujours Rose/XDE), de
IBM Software Rational ;
• PowerDesigner, de Sybase (un outil de modélisation complet intégrant l'UML en plus
des classiques MCD, MPD ...) ;
• Objecteering de Softeam ;
• Visual Paradigm for UML, de Visual Paradigm Internation Ltd. ;
• SDE for Eclipse, un plugin UML pour Eclipse ;
• Omondo EclipseUML, un plugin UML pour Eclipse ;
• Jude [1], en Java ;
• MagicDraw, un éditeur de diagrammes UML ;
• Enterprise Architect, un outil de modélisation UML ;
136
Modélisation objet avec UML
Corrigé
137
138
139
140
141
Etude de cas : Application gestion de caisse
Un commerçant de produits touristique (souvenirs, livres régionaux,…) désire
informatiser sa caisse. Chaque type de produit possède un code unique (étiquette à code à
barres), et un même prix pour tous les produits de ce type. L'objectif est de faciliter la
maintenance des prix des articles.
142
Chaque type de produit est référencé dans un catalogue, puis sur l'étagère ou il est rangé.
Le cassier s'identifie pour démarrer la caisse (avec mot de passe).
La caisse fera les fonctions habituelles d'une caisse : calcul du sous total, calcul du total,
possibilité de rentrer plusieurs articles ayant un même code, retour d'une marchandise avec le
ticket de caisse. Le paiement se fera en monnaie seulement.
La caisse s'exécute sur un PC. Une douchette permettra de lire les codes à barres. Les
informations peuvent être rentrées au clavier, ou à la souris.
143
référence fonction
R1 Modifier le prix d'un produit
R2 Calculer le total d'une vente
R3 Rentrer une quantité par article
R4 Calculer le sous total d'un produit
R5 Retourner une marchandise
R6 Payer l'achat
R7 Editer un ticket de vente
R8 Editer un rapport succinct
R9 Editer un rapport détaillé
R 10 Se connecter à la caisse
R 11 Se connecter en gérant
R 12 Définir les droits des usagers
R 13 Entrer un produit au catalogue
R 14 Supprimer un produit du catalogue
R 15 Enregistrer un produit à la caisse
R 16 Initialiser la caisse
♀
Caissier
♀Client
♀
Manager
♀
Salarié
♀
Administrateur
Ce diagramme est un diagramme de classe qui permet de lister les différents acteurs. Il se
peut que notre liste ne soit pas complète, une itération suivante du processus nous permettra
de compléter ce schéma.
144
Nous avons défini 5 acteurs. N'oublions pas qu'un acteur représente un rôle, et non pas une
personne.
Nous connaissons les acteurs, et les exigences de l'application. Nous pouvons donc faire un
diagramme de contexte dynamique.
♀ Client
♀
caissier
Magasin
Se connecter
♀
Salarié définir les droits des usagers
♀
manager
♀
Administrateur
Diagramme de contexte de magasin
♀
Client
♀
Caissier
Est à la caisse
Est dans
145
magasin
Gère
Travaille dans
♀
Salarié
administre ♀
Manager
♀
Administrateur
Nous allons maintenant regrouper les exigences en intentions d'acteurs. Une intention d'acteur
est un enchaînement de fonctions qui rend un service complet à un acteur (et pas une fraction
de service).
146
R1 Modifier le prix d'un produit Gérer le catalogue Manager
R 13 Entrer un produit au catalogue Gérer le catalogue
R 14 Supprimer un produit du catalogue Gérer le catalogue
R 16 Initialiser la caisse Initialiser la caisse Manager
R5 Retourner une marchandise Retourner un article Client, Caissier
R 10 Se connecter à la caisse Se connecter Salarié
R 11 Se connecter en gérant Se connecter
R8 Editer un rapport succinct Editer un rapport Manager
R9 Editer un rapport détaillé Editer un rapport
R 12 Définir les droits des usagers Définir les profils Administrateur
R7 Editer un ticket de vente Effectuer un achat Client, Caissier
R6 Payer l'achat Effectuer un achat
R2 Calculer le total d'une vente Effectuer un achat
R3 Rentrer une quantité par article Effectuer un achat
R 15 Enregistrer un produit à la caisse Effectuer un achat
R4 Calculer le sous total d'un produit Effectuer un achat
Ici dans le tableau la notion d'acteur repose sur l'intention d'acteur, pas sur la fonction. Ainsi
toutes les lignes d'une même intention d'acteur ne sont-elles pas renseignées pour les acteurs.
Ici nous distinguerons l'acteur principal des acteurs secondaires en soulignant l'acteur qui est à
l'origine de l'intention.
Nous allons bien sûr vérifier que les exigences définies précédemment sont toutes incluses
dans les intentions d'acteur. La traçabilité est un facteur essentiel des phases de définition des
besoins et de celle d'analyse.
Nous avons les intentions d'acteurs, nous pouvons donc faire un diagramme de Use Case.
Il s’agit de réaliser un logiciel de gestion des prêts de documents aux lecteurs d’une
bibliothèque municipale. L’usager demande sur poste informatique qu’un document lui soit
communiqué. Le
lecteur se voit attribué un numéro lors de son inscription. Un système de fiches existe pour la
recherche
documentaire qui n’est pas informatisée actuellement.
147
Si le lecteur est déjà inscrit, il s’identifie puis remplit. Sur le terminal informatique la
demande de document souhaité. il sélectionne le document désire et le lieu ou il souhaite
consulter le document (sur place ou à domicile).
Il existe en fait plusieurs type de documents : journaux, livres et microfilm. Chaque usager
dispose de droits différents en fonction de sa profession et de son employeur. Ces droits sont
valides pour une année et correspondent à des niveaux de confidentialité. Certains documents
sont consultables uniquement sur place, d’autres peuvent être emportés à domicile. Pour
consulter sur place, un emplacement doit être affecté au lecteur dans une salle adaptée au
document.
Si le document n’est pas disponible pour le moment, le système fournit au lecteur une fiche
de réservation comprenant une date de disponibilité et une place réservé (en cas de
consultation sur place).le lecteur peut ensuit venir à la date prévue utiliser sa réservation.
Si le document est disponible, le système imprime une fiche qui permet au lecteur de retirer
son document au guichet. L’employé valide alors le prêt sur son poste informatique et
enregistre le retour lorsque le lecteur rend le document. En cas d’emprunter à domicile.
L’usager à une semaine pour rendre le document.
L’usager peut à tout moment consulter l’état de ses demandes (prêts et/ou réservation en
cours). Il ne pourra effectuer un emprunt que s’il a rendu les document déjà empruntes.
Chaque document possède une cote. Un journal possède un titre, une date et un numéro. Un
livre possède un titre et un ou plusieurs auteurs. Les microfilms ont été tirés à partir de
certains journaux.
Le système fournit à l’employé, chaque soir après le départ du dernier client, la liste des
documents consultés sur place qui n’ont pas rendu. Le responsable du service des prêts peut à
tout moment demander au système la liste des prêts à domicile non rendu à la date prévue.
Ceux-ci seront classés par nombre de jours de retard, afin de pouvoir éditer les lettres de
relance. Il peut aussi obtenir différentes statistiques.
Corrigé
Définition des besoins
référence Fonction
R1 Inscrire un nouveau lecteur
R2 Enregistrer la cotisation d’un lecteur
R3 Enregistrer un nouveau document
R4 Sortir un document
R5 Vérifier la disponibilité d’un document
R6 Restituer un document
R7 Consulter la liste des documentation rendus
R8 Editer une lettre de relance
148
R9 Emprunter un document
L’employé L’usager
149
Gérer les lecteurs
Verrifier la disponibilité
D’un document
Emprunter un document
150
• Acteur secondaire : ----------
• Evénement déclencheur de use case : un nouveau document arrive à la bibliothèque
• Rôle de use case : l’employé enregistre le nouveau document et lui donne un numéro
• Références croisées exigences :R3
• Terminaison de use case : le document est enregistré et placé avec les autres de même
type
*Analyse
+Diagramme de séquence boite noire :
151
-pour le use case détaillé « Emprunter un document » :
Si nouveau
lecteur Enregistre les informations du lecteur
Lui demande le document qu’il souhaite
Si le
document est Enregistre les cotisations de l’usager
disponible
Prête le document au lecteur
152
+Diagramme de classe d’analyse :
Employé lecteur
-code int
-Matricule int 1..1 inscrire 1..* -Nom String
-Nom String -Prénom String
-Prénom String -Adresse String
1..* 1..*
Bibliothèque emprunter
Travaille pour 1..1
-Nom String
-Adresse String
+void bibliothèque
1..*
1..1 Document
1..* -code int
-type String
Se trouve dans
+void document
+Contrat d’opération :
153
• Notes : --------
• Pré conditions : le document doit être disponible, et le lecteur ne doit avoir aucun
document non restitué
• Post conditions : le document et enregistré emprunté par le lecteur
*Conception
Employé lecteur
-code int
-Matricule int 1..1 inscrire 1..* -Nom String
-Nom String -Prénom String
-Prénom String -Adresse String
1..* 1..*
Bibliothèque emprunter
Travaille pour 1..1
-Nom String
-Adresse String
+void bibliothèque ()
1..*
1..1 Document
1..* -code int
-type String
Se trouve dans
+void document ()
154