Cours UML
Cours UML
UML
Pr. Nabil EL AKKAD
1
Plan
Introduction générale
d’interaction et états.
2
bibliographies
• P. ROQUES. – UML 2. Modéliser une application web. N°12136, 3e
édition, 2007, 246 pages (collection Cahiers du programmeur).
• P. ROQUES, F. VALLÉE. – UML 2 en action. De l’analyse des
besoins à la conception. N°12104, 4e édition, 2007, 382 pages
(collection Architecte logiciel). UML, modélisation objet, processus
de développement.
• C. SOUTOU. – UML 2 pour les bases de données. Avec 20
exercices corrigés. N°12091, 2007, 314 pages (collection Noire).
• X BLANC, I. MOUNIER. – UML 2 pour les développeurs. Cours
avec exercices corrigés. N°12029, 2006, 202 pages (collection
Noire).
• H. BERSINI, I. WELLESZ. – L’orienté objet. Cours et exercices en
UML 2 avec Java 5, C# 2, C++, Python et PHP 5. N°12084, 3e
édition, 2007, 602 pages (collection Noire).
• [Link]
• [Link]
3
Chapitre 1 : Introduction générale
4
Introduction
5
Introduction
Besoin code
6
Introduction
Avoir un logiciel
pour écrire un livre LaTex
ou un article
7
Logiciel: Définition
• Un logiciel:
– Est un ensemble de programmes,
– Qui permet à un ordinateur d’assurer une tâche ou une fonction bien
précise.
Exemples : Word, Photshop, 3DSMAX,…
• Les logiciels, suivant leur taille, peuvent être développés par:
– Une seule personne,
– Une petite équipe,
– Un ensemble d’équipes coordonnées.
• Le développement de grands logiciels par de grandes équipes
pose des problèmes de conception et de coordination.
8
Crise du logiciel
– La non fiabilité,
– ….
10
Génie logiciel
– Etc.
11
Génie logiciel (2)
– Etc.
12
Génie logiciel (3)
• Constats:
– La réalisation du code n’est pas la seule activité à effectuer lorsque nous
souhaitons construire une application disant de qualité.
– Parmi les autres activités à effectuer, on trouve:
1. S’assurer d’avoir bien compris le besoin de l’utilisateur afin de réaliser une
application qui le satisfasse.
2. S’assurer d’avoir réalisé un code facilement modifiable, permettant de prendre
en compte des évolutions futures.
3. Définir l’architecture de l’application (définition de ses différents composants,
indépendamment du langage de programmation) pour bien comprendre les
relations entre les composants de l’application.
4. Planifier et réaliser des tests afin de mesurer la qualité du code.
13
Génie logiciel (4)
14
Génie logiciel (5)
• Objectifs:
– Ces activités visent à mieux structurer l’ensemble des tâches à effectuer
lors de la construction d’une application.
• Solutions:
– Pour apporter une réponse à tous ces problèmes, le génie logiciel
propose la gouvernance du cycle de vie des logiciels.
– Pour répondre aux exigences de ces activités, il faut faire appel à
l’ensemble des méthodologies, des techniques même des philosophies
de développement d’une application.
• Résultats:
– Ces méthodologies font bien ressortir et adoucir la complexité
intrinsèque de la construction d’une application.
15
Cycle de vie d’un logiciel
16
Cycle de vie d’un logiciel (2)
• Étapes nécessaires à la réalisation d’un logiciel:
– Analyse:
• Elle a pour but de dégager le problème à étudier.
• Le résultat de l'analyse est le cahier de charges (exprimé dans une langue naturelle)
contenant les besoins du futur système.
• 3 phases: Faisabilité, Spécifications des besoins, Organisation du projet.
– Conception:
• Permet de fournir une description fonctionnelle du système en utilisant une
méthode.
• Les méthodes proposent des formalismes (dans la plupart des temps graphiques)
pour concevoir le système.
• Deux types de conception : Conception générale et Conception détaillée.
17
Cycle de vie d’un logiciel (3)
• Étapes nécessaires à la réalisation d’un logiciel (suite):
– Codage:
• Des programmes seront élaborés afin de mettre en œuvre des solutions
techniques précédemment retenues.
• Plusieurs types langages sont utilisés: Langages classiques (C, Pascal,
Fortran, …) et langages orientés objets (C++, Java, C#, …).
– Tests :
• Essayer le logiciel sur des données d'exemple pour s'assurer qu'il
fonctionne correctement.
• Différentes types: Test unitaire, d’intégration, test système, alpha, bêta, …
18
Cycle de vie d’un logiciel (4)
• Étapes nécessaires à la réalisation d’un logiciel (suite):
– Livraison:
• Fournir au client une solution logiciel qui fonctionne correctement.
• Plusieurs tâches : Installation, Formation et Assistance.
– Maintenance:
• Mettre à jour et améliorer le logiciel.
• Elle comprend : Corrective, Adaptative et Évolutive.
19
Types de cycle de vie
• Développement en cascade:
– Chaque étape ne débute que lorsque la précédente est achevée.
• Développement en V:
– A chaque étape correspond à une étape de test spécifique.
– Les tests peuvent être définis avant les phases de test.
20
Types de cycle de vie (2)
21
Modèle
• Un modèle:
– Est une représentation abstraite et simplifiée d’une entité (phénomène,
processus, système, etc.) du monde réel en vue de le décrire, de
l’expliquer ou de le prévoir.
– Il permet de réduire la complexité d’un phénomène en éliminant les
détails qui n’influencent pas sur le comportement de manière
significative.
– Il reflète ce que le concepteur croit important pour la compréhension du
phénomène modélisé.
22
Modèle (2)
• Exemples :
– Modèle économique: Peut, par exemple, permettre de simuler l’évolution de
cours boursiers en fonction d’hypothèses macro-économiques (évolution du
chômage, taux de croissance, …).
– Modèle mathématique: modélisation d’un problème réel difficile à résoudre
par un problème moins difficile.
– Plans: sont des modèles qui donnent une vue d’ensemble du système
concerné (Bâtiment: il faut préalablement élaborer des plans pour la
construction d’un immeuble).
– Modèle démographique,
– Modèle statistique,
– Etc. 23
Modèle (3)
• Définition:
– Modèle informatique: est une représentation, à différents niveaux
d’abstraction et selon plusieurs vues, de l’information nécessaire à la
production et à l’évolution des applications.
24
Modèle (4)
• Un modèle peut préciser :
– Les différentes données manipulées par l’application (vue des
données),
– Les différentes fonctionnalités directement offertes aux utilisateurs de
l’application (vue des utilisateurs),
– Les technologies (Java, C++, PHP, …) utilisées pour réaliser
l’application (vue technique).
• Alors, un modèle est composé de plusieurs vues sur une
application.
• Chacune de ces vues contient certaines informations sur
l’application.
• Ces vues peuvent cibler les différents niveaux d’abstraction, et
elles doivent être cohérentes.
25
Modèle (5)
Exemple
26
Modèle (6)
27
Pourquoi modéliser ?
• Remarque:
– Cette communication est essentielle pour aboutir à une compréhension
commune, aux différentes parties prenantes, et précise d’un problème
donné.
28
Pourquoi modéliser ? --
29
Qui doit modéliser ?
• Deux acteurs principale dans le domaine de génie logiciel:
–Maîtrise d'ouvrage (MOA) : Le client du projet (mais pas forcément l'utilisateur),
–Maîtrise d’œuvre (MOE) : L'organe réalisateur du projet, représenté par le chef de
projet.
30
Modélisation des SI
- Approches fonctionnelles :
- Proposée, développée et utilisée jusqu’à 1970,
- Mettent l’accès sur les traitements,
- Ce type d’approches fait la distinction entre les données et les
traitements,
- Exemple de Merise (MCD, MCT, ..),
31
Modélisation des SI (2)
• Approches objet :
- La 1ère génération : 1980, début 1990,
- Mettent l’accès sur le concept de l’objet,
- Chaque objet est caractérisé par des données et des traitements,
- Exemple de UML.
32
Modélisation des SI (3)
Méthodes fonctionnelles
• Généralement, qualifiées de méthodes structurées.
• Trouvent leur origine dans les langages procéduraux.
• Elles mettent en évidence les fonctions à assurer.
• Elle proposent une approche hiérarchique descendante et
modulaire.
• Chaque niveau est décomposé en respectant les entrées/sorties
du niveau supérieur.
• La décomposition se poursuit jusqu’à arriver à des composants
maîtrisables.
33
Modélisation des SI (4)
34
Modélisation des SI (5)
Méthodes fonctionnelles (suite)
Programme principale
Données
Sous fonction
1.2…
35
Modélisation des SI (6)
36
Modélisation des SI (7)
38
Modélisation des SI (9)
Remarque
– D’après Church Turing: tout programme écrit dans un langage pourrait
également être écrit dans n’importe quel autre langage.
39
UML : Introduction
• La description de la programmation par objets a fait ressortir
l’étendue du travail conceptuel nécessaire :
– Définition des classes,
– De leurs relations,
– Des attributs et méthodes,
– Des interfaces
– etc.
• Pour programmer une application, il ne convient pas de se
lancer tête baissée dans l’écriture du code :
– Il faut d’abord organiser les idées,
– Les documenter,
– Puis organiser la réalisation en définissant les modules et étapes de la
réalisation.
40
UML: Historique
• Pionnier de l ’Orienté-Objet
– Article en 1981: ‘ Object Oriented Development ’
– Au début, méthode pour le développement d ’applications en Ada pour
le ‘ Department of Défense ’
– Etendue au C++
• Distingue 2 niveaux:
– Logique
• Diagrammes de classes
• Diagramme d’instance
• Diagramme états/transitions
– Physique
• Diagrammes de modules (principe des packages) Grady Booch
• Diagramme de processus
41
UML: Historique (2)
• 3 axes
– Statique
– Dynamique
– Fonctionnel
James Rumbaugh
42
UML: Historique (3)
43
UML: Historique (4)
44
UML: Historique (5)
45
UML: Historique (6)
46
UML: Historique (7)
Définition en cours par une UML 2.0
commission de révision
Soumission à l’OMG UML 1.x 1999-2002
Booch’93 OMT-2
48
Qu’est ce que UML ?
50
Diagrammes d'UML
• Sept diagrammes comportementaux :
– Diagramme de cas d’utilisation: modélise les interactions fonctionnelles entre les
acteurs et le système à l’étude.
– Diagramme de séquence: montre la séquence verticale des messages passés entre
objets au sein d’une interaction.
– Diagramme de communication: représente la communication entre objets dans le
plan au sein d’une interaction.
– Diagramme d’activité: montre l’enchaînement des actions et des décisions au sein
d’une activité.
– Diagramme d’états: montre les différents états et transitions possibles des objets
d’une classe.
– Diagramme de vue d’ensemble des interactions: fusionne les diagrammes
d’activité et de séquence pour combiner des fragments d’interaction avec des
décisions et des flots.
– Diagramme de temps: fusionne les diagrammes d’états et de séquence pour
montrer l’évolution de l’état d’un objet au cours du temps.
51
Diagrammes d'UML
52
Diagrammes d’UML
• UML 2.5 est composé de plusieurs diagrammes :
53
Conclusion
54
Chapitre 2 : Diagramme de cas
d’utilisation
55
Diagramme de cas d’utilisation
Objectifs
56
Diagramme de cas d’utilisation
• Décrit, sous forme d’actions et de réactions, le comportement
d’un système du point de vue utilisateur.
• Permet de définir les limites du système et ses relations avec
l’environnement externe.
• Sert à modéliser les aspects fonctionnels d'un système.
• Fait ressortir les acteurs et les fonctions assurés par le système.
• Utilisé pour modéliser les exigences (besoins) du client.
• Comporte plusieurs éléments :
– Acteurs;
– Cas d'utilisation;
– Relations de dépendances, de généralisations et d'associations.
57
Acteurs
• Un acteur:
– Est un rôle joué par une entité externe,
58
Acteurs (2)
• Remarques:
– La même personne physique peut jouer le rôle de plusieurs acteurs.
Exemple:
• Plusieurs personnes peuvent jouer le rôle d’administrateur.
59
Acteurs (3)
• Un acteur peut être représenté de deux manières différentes :
– Petit personnage (stick man)
Nom acteur
– Classe stéréotypée
<<Acteur>>
Nom Acteur
60
Acteurs (4)
• Les acteurs peuvent être de trois types :
– Humains : utilisateurs du logiciel à travers son interface graphique, par
exemple.
– Logiciels : disponibles qui communiquent avec le système grâce à une
interface logicielle (API, ODBC, …).
– Matériels : exploitant les données du système (Imprimante, robots,
automates, …).
61
Acteurs: exemple
<<Acteur>>
Site web de
l’établissement Professeur
association
<<Acteur>> Etudiant
imprimante
62
Acteurs (5)
• De point de vue système on distingue deux types :
– Acteurs principaux :
• Utilisent les fonctions principales du système.
• Pour qui le cas d’utilisation produit un résultat observable.
Exemple: le client pour un distributeur de billets.
– Acteurs secondaires :
• Effectuent des tâches administratives ou de maintenance.
• Ils peuvent uniquement consulter ou informer le système lors de
l’exécution du cas d’utilisation.
Exemple: la personne qui recharge la caisse contenue dans le
distributeur.
63
Acteurs (6)
Remarques:
– Une association est une relation entre des éléments UML (classes, cas
d’utilisation, etc.) qui décrit un ensemble de liens.
64
Acteurs (7)
Acteur
particulier 65
Cas d'utilisation
• Introduit par Ivar Jacobson en 1992 dans sa méthode Object-
Oriented Software Engineering (OOSE).
• Technique de description du système étudié privilégiant le
point de vue de l'utilisateur.
• Repris par UML dans le but de:
– Déterminer une bonne délimitation du système;
– Spécifier d’une manière assez correcte les besoin d’un utilisateur;
– Améliorer la compréhension de son fonctionnement interne.
66
Cas d'utilisation (2)
• Les cas d’utilisations:
– Permettent de modéliser les attentes (besoins) des utilisateurs;
– Représentent les fonctionnalités du système.
– Il correspond à un certain nombre d’actions que le système devra
exécuter en réponse à un besoin d’un acteur.
– Un cas d’utilisation représente un résultat observable pour un ou
plusieurs acteurs.
– Une interaction permet de décrire les échanges entre un acteur et un cas
d’utilisation.
– Un cas d'utilisation est représenté par une ellipse en trait plein,
contenant son nom.
cas d'utilisation
67
Cas d'utilisation (3)
• L’intitulé du cas d’utilisation respecte le pattern:
verbe + compléments
– Le verbe de l’intitulé permet de spécifier la nature de la fonctionnalité
offerte par l’application.
– Les compléments permettent de spécifier les données d’entrée ou de
sortie de la fonctionnalité.
– Exemple « calculer taux d’intérêt du prêt » permet de comprendre que
l’application permet à ses utilisateurs de calculer le taux d’intérêt d’un
prêt.
calculer taux
d’intérêt du prêt
68
Cas d'utilisation (4)
• Il faut bien comprendre que chaque cas d’utilisation doit avoir
un objectif en soi et pouvoir être réalisé indépendamment des
autres.
Exemple : site d’ e-commerce:
– Un internaute visite quelquefois le site dans le seul but de chercher des
ouvrages, sans intention d’acheter.
– Dans d’autres cas, il gère un panier virtuel pour faire une simulation, ou
obtenir un devis.
– Il peut également se connecter pour surveiller l’état de sa dernière
commande.
• Tous ces objectifs sont bien indépendants et auto-suffisants : il
s’agit de vrais cas d’utilisation.
69
Structuration des cas d'utilisation
• Après avoir identifié les acteurs et les cas d'utilisation, il est
utile de restructurer l'ensemble des cas d'utilisation afin de
rechercher les:
– Comportements partagés;
– Cas particuliers, exceptions, variantes;
– Généralisations/spécialisations.
• UML définit trois types de relations standardisées entre les cas
d'utilisation :
– Une relation d'inclusion, formalisée par la dépendance «include»
– Une relation d'extension, formalisée par la dépendance «extend»
– Une relation de généralisation/spécialisation.
70
Relation d'inclusion
• Comment?
– Via la création de nouveaux cas d'utilisation qui sont utilisés par les autres
cas qui les avaient en commun.
71
Relation d'inclusion (2)
• Cas A inclut cas B : le cas A inclut obligatoirement le
comportement définit par le cas B; permet de factoriser des
fonctionnalités partagées.
Cas B
<<include>>
Cas A
72
Relation d'inclusion (3)
Retirer de
l’argent
Déposer
de l’argent
<<include>> S’authentifier
Effectuer
de Les cas d'utilisation "Déposer de
virements
l'argent", "Retirer de l'argent",
"Effectuer des virements" et "Consulter
Consulter solde" incorporent de façon explicite le
solde cas d'utilisation "S'authentifier", à un
endroit spécifié dans leurs
enchaînements.
73
Relation d'inclusion (4)
• On utilise cette relation pour éviter de décrire plusieurs fois un
même enchaînement d'actions.
• Le but est de factoriser un comportement commun à plusieurs
cas d'utilisation dans un cas d'utilisation à part.
Remarques:
– La relation «include» n’a pour seul objectif que de factoriser une partie
de la description d’un cas d’utilisation qui serait commune à d’autres
cas d’utilisation.
– Le cas d’utilisation inclus dans les autres cas d’utilisation n’est pas à un
vrai cas d’utilisation:
• Car il n’a pas d’acteur déclencheur ou receveur d’évènement. Il est juste un
artifice pour faire de la réutilisation d’une portion de texte.
74
Relation d'inclusion (5)
Synthèse:
– Une instance du cas source inclut obligatoirement le comportement
décrit par le cas d’utilisation destination.
Factorisation
75
Relation d'extension
• Le CU source (B) ajoute, sous certaines conditions, son
comportement au CU destination (A).
• En d’autres termes, le CU B peut être appelé au cours de
l’exécution du CU A.
Cas A
Cas B <<extend>> point
d’insertion
76
Relation d'extension (2)
Retenir la S’authentifier
carte <<extend>>
77
Relations d’inclusion et d'extension
• La relation « extend » montre une possibilité d'exécution
d'interactions qui augmenteront les fonctionnalités du cas
étendu, mais de façon optionnelle et non obligatoire.
79
Relation d'héritage : Exemple
• On voit qu'il ne s'agit pas d'une relation "extend", car la
réservation par Internet n'étend pas les interactions ni les
fonctionnalités du cas d'utilisation "Réserver voyage".
Réserver
voyage
Réserver
Réserver
voyage par
voyage par
téléphone
internet
81
Structuration entre cas d’utilisation
Synthèse:
82
Relations entre cas d’utilisation
Exercice
– Un client peut effectuer un retrait bancaire via une carte
bancaire.
– Le retrait peut être effectué sur place ou par Internet.
– Le client doit être identifié (en fournissant son code d’accès)
pour effectuer un retrait, mais si le montant dépasse 500DH,
la vérification du solde de son compte est réalisée.
– Si le client n’a pas pu s’identifier, la carte est avalée.
83
Description des cas d’utilisation
• Le diagramme de cas d’utilisation décrit les grandes fonctions
d’un système du point de vue des acteurs.
• Mais il n’expose pas de façon détaillée le dialogue entre les
acteurs et les cas d’utilisation.
• Alors, il est nécessaire de décrire ce dialogue.
• Deux façons sont couramment utilisées pour décrire les cas
d’utilisation :
– Description textuelle;
– Description à l’aide d’un diagramme de séquence.
84
Description des cas d’utilisation (2)
Exemple:
Retirer de
l’argent
SA
Déposer
VISA
de
<<include>>
l’argent S’authentifier
Porteur
de CB Effectuer
Visa de
virements
Consulter
solde
85
Description des cas d’utilisation (3)
Exemple:
86
Description des cas d’utilisation (4)
Scénario nominal :
1. Le porteur de CB Visa introduit sa carte dans le lecteur de cartes du GAB.
2. Le GAB vérifie que la carte introduite est bien une carte Visa.
3. Le GAB demande au porteur de CB Visa de saisir son code d’identification.
4. Le porteur de CB Visa saisit son code d’identification.
5. Le GAB compare le code d’identification avec celui codé sur la puce de la
carte.
6. Le GAB demande une autorisation au système d'autorisation VISA.
87
Description des cas d’utilisation (5)
88
Description des cas d’utilisation (6)
89
Description des cas d’utilisation (7)
90
Description des cas d’utilisation (8)
A3 : ticket refusé
L’enchaînement A3 démarre au point 11 du scénario nominal.
12. Le porteur de CB Visa refuse le ticket.
13. Le GAB rend sa carte au porteur de CB Visa
14. Le porteur de CB Visa reprend sa carte.
15. Le GAB délivre les billets.
16. Le porteur de CB Visa prend les billets.
91
Description des cas d’utilisation (9)
E1 : carte invalide
L’enchaînement E1 démarre au point 2 du scénario nominal.
3. Le GAB indique au porteur que la carte est invalide (illisible,
périmée, etc.). Le cas d’utilisation est terminé.
92
Description des cas d’utilisation (10)
93
Description des cas d’utilisation (11)
Postconditions
95
Description des cas d’utilisation (13)
• Si l’on adopte cette technique pour formaliser les exigences, il
faut savoir qu’un UC ne décrit que les exigences
fonctionnelles.
• Alors, il faut compléter avec d’autres exigences:
– Interfaces externes,
– Règles métier,
– Formats de données,
– Performance…
96
Description des cas d’utilisation (14)
Exemple : Exigences non fonctionnelles
Contraintes Descriptif
Temps de • L’interface du GAB doit réagir en 2 secondes au
réponse maximum.
• Une transaction nominale de retrait doit durer moins de 2
minutes.
Concurrence Non applicable (mono-utilisateur).
Disponibilité • Le GAB est accessible 7 jours sur 7, 24 h sur 24.
• L’absence de papier pour imprimer les tickets ne doit pas
empêcher les retraits.
Intégrité • Les interfaces du GAB doivent être très robustes pour
prévenir aux actes de Vandalisme.
Confidentialité • La comparaison du code d’identification saisi sur le
clavier du GAB avec celui de la carte doit être fiable à 10-6
97
Description des cas d’utilisation
Exemple : Exigences non fonctionnelles (suite):
– Besoins d’IHM:
• Les dispositifs d’entrée/sortie à la disposition du porteur de carte doivent être :
– Un lecteur de carte bancaire.
– Un clavier numérique (pour saisir son code), avec des touches « validation »,
« correction » et « annulation ».
– Des touches autour de l’écran pour sélectionner un montant de retrait parmi ceux
qui sont proposés.
– Un distributeur de billets.
– Un distributeur de tickets.
98
Diagramme des cas d'utilisation
• Le diagramme des cas d'utilisation regroupe dans un même schéma:
– Les acteurs,
• Elle peut comporter des multiplicités comme toute association entre classes.
99
Étapes de construction du diagramme
des cas d'utilisation
• Pour modéliser en diagramme des cas d'utilisation, il faut :
1. Identifier les acteurs qui entourent le système.
• Certains acteurs utilisent le système pour accomplir des tâches (acteurs principaux),
• D'autres effectuent des tâches de maintenance ou d'administration (acteurs
secondaires).
2. Organiser les acteurs selon une hiérarchisation de généralisation/spécialisation.
3. Intégrer les acteurs au diagramme en spécifiant les cas d'utilisation auxquels ils
se rapportent.
4. Structurer les cas d'utilisation pour faire apparaître les comportement partagés
(relation d'inclusion), les cas particuliers (généralisation/spécialisation) ou les
options (relation d'extension).
5. Répéter les points 1-4 jusqu’à la satisfaction.
100
Résumé
Architecte Vérifie
Testeur
Les Cas d’utilisation interviennent tout au longue du cycle de vie d’un projet
101
Exercice
Quel sont les erreurs commises dans le diagramme de cas
d’utilisation suivant :
client
102
Conclusion
103
Chapitre 3: Diagrammes de
classes, de packages et d’objets.
104
Diagrammes de classes
Objectifs
• Présenter les concepts UML relatifs à la vue structurelle
(diagramme de classes).
• Présenter la notation graphique du diagramme de classes
UML.
• Expliquer la sémantique des classes UML (compatible avec la
sémantique des langages de programmation orientés objet).
• Identifier les concepts du domaine et les modéliser en tant que
classes.
• Identifier les associations pertinentes entre les concepts.
105
Diagrammes de classes (2)
Objectifs (suite)
106
Diagrammes de classes (3)
• Les diagrammes de cas d'utilisation modélisent à QUOI sert le
système.
• Le système est composé d'objets qui interagissent entre eux et
avec les acteurs pour réaliser ces cas d'utilisation.
• Les diagrammes de classes permettent de spécifier la structure
et les liens entre les objets dont le système est composé.
• Il montre la structure interne.
• Il permet de fournir une représentation abstraite des objets du
système qui vont interagir ensemble pour réaliser les cas
d’utilisation (répondre à QUOI faire).
• C’est le point central dans un développement orienté objet.
107
Diagrammes de classes (4)
108
Concept de classes et instances
• Une instance est une concrétisation d’un concept abstrait.
Exemple :
– Ma voiture « Hyandai Tuccson » est une instance du concept
abstrait Voiture,
– Le cours UML que j’enseigne est une instance du concept
abstrait Cours.
• Une classe est un concept abstrait représentant des éléments
variés comme:
– Des éléments concrets (des voitures, avions, … ),
– Des éléments abstraits (des commandes de marchandises ou services),
– Des composants d’une application (les boutons des boîtes de dialogue),
– etc.
109
Concept de classes et instances (2)
• Tout système orienté objet est organisé autour des classes.
• Une classe est la description formelle d’un ensemble d’objets
ayant une sémantique et des caractéristiques communes.
• Elle spécifie l'ensemble des caractéristiques qui composent des
objets de même type.
• Classe = ensemble d’objets ayant les mêmes propriétés
(attributs) et le même comportement (opérations).
– Tous les clients sont décrits par un nom, un prénom, … qui peuvent
acheter, négocier, …
– Tous les comptes bancaires ont un numéro, un solde, … sur lesquels
on peut déposer ou retirer l'argent, ou les consulter.
– …
110
Concept de classes et instances (3)
• Un objet est instance d’une classe, et le fait de créer un
objet d'une classe est dite instanciation.
• Classe représentée par un rectangle à trois parties :
– Partie 1 : Nom de la classe,
– Partie 2 : Attributs (propriétés, champs),
– Partie 3 : Méthodes (fonctions, opérations).
NomClasse
attributs
méthodes
111
Concept d'objet
• Objet = un concept, abstraction ou une entité autonome qui a
un sens dans le contexte du système à modéliser:
– Un client C1,
– Un livre V1,
– Un compte bancaire n° 1915233C,
– …
• L’état d’un objet correspond aux valeurs de tous ses attributs à
un instant donné.
Remarque
– Un objet doit :
• Être autonome;
• Avoir une signification dans le système;
• En relation avec d'autres objets.
Exemples
• Gestion de stock : Clients, Commandes, Articles, …
• Gestion d’une société: Employé, Atelier, Spécialité, …
112
Concept d'attribut
• Un attribut est une propriété caractéristique d’un objet.
Exemple :
– un étudiant a un nom, un prénom, une adresse, un CNE, …
– un compte bancaire a un numéro, un solde, …
• Un attribut doit (généralement) avoir une valeur
• La description d’un attribut comporte :
Visibilité attribut: type [= valeur initiale]
– Visibilité : (+ publique), (- privée) et (#protégée, protected)
– Nom d’attribut
– Type d’attribut
– Valeur initiale (facultative)
113
Concept d'attribut (2)
• Le type d’un attribut peut être :
– Un type de base : entier, réel, …
– Une expression complexe : tableaux, enregistrements, …
– Une classe.
Exemples d’attributs :
• - code : 1254, 2536, …
• # notes[] : float
• - Client : Personne
• Par exemple, une classe « Rectangle » peut contenir les attributs
suivants :
Rectangle
• longueur : réel,
- Largeur : float = 8.0
• largeur : réel,
- Longueur : float
• /surface : réel. - /Surface : float
114
Concept d'attribut (3)
• On distingue deux types d'attributs :
– Attribut d'instance :
• Chaque instance de la classe possède une valeur particulière pour cet
attribut.
• Notation : Visibilité attribut: type[= valeur initiale]
– Attribut de classe:
• Toutes les instances de la classe possède la même valeur pour cet attribut.
• Notation : Visibilité attribut: type[= valeur initiale]
• Équivalent en C++, Java : static.
115
Concept d'attribut (4)
Fenêtre
- taille : Rectangle = (100,50)
Attributs d'instances
- visibilité : boolean = true
- tailleDefaut : Rectangle
-tailleMax : Rectangle Attributs de classes
116
Concept d'attribut: Exercice
• Question 1:
Définissez la classe UML représentant un étudiant. Cette classe
d’étudiants est caractérisée par un identifiant, un nom, un prénom et
une date de naissance.
• Question 2:
Définissez la classe UML représentant un cours, caractérisé par un
identifiant, un nom, le nombre d’heures de cours magistral, le
nombre d’heures de travaux dirigés et un nombre d’heures de
travaux pratiques que doit suivre un étudiant.
117
Concept d'attribut: Exercice
• Réponse 1:
• Réponse 2:
118
Concept d'opération et méthode
• Dans une classe, une opération (même nom et même types de
paramètres) doit être unique.
• Une opération est :
– Un service produit par la classe.
– Une fonction ou une transformation qui peut être appliquée aux objets
d’une classe.
– Permet de décrire le comportement d’un objet.
Exemple, « Embaucher », « Licencier » et « Payer » sont des opérations
de la classe « Société ».
– L’implémentation d’un service proposé par la classe (opération).
– Différents types (Accesseurs, Modificateurs et Constructeurs).
119
Concept d'opération et méthode (2)
La description d’une opération comporte :
Visibilité opération([arguments:type[=valeur initiale]]):type de résultat
– Visibilité de l’opération (-, +, #);
– Nom de l’opération;
– Liste des arguments avec leurs types et éventuellement leurs valeurs par
défaut; Compte
– Le type du résultat retourné. - NumCompte : String
- Solde : float
- Client : Personne
+ <<Constructeur>> Compte()
+ deposer (somme : float) : void
+ retirer(somme : float) : float
+ getSolde() : float
120
Concept d'opération et méthode (3)
• Quand le nom d’une opération apparaît plusieurs fois avec des
paramètres différents, on dit que l’opération est surchargée.
Méthode de classe
Méthode de classe
• Cette méthode n’a pas accès aux attributs de la classe (i.e. des
instances de la classe).
122
Concept d'attribut
Fenêtre
- taille : Rectangle = (100,50)
Attributs d'instances
- visibilité : boolean = true
- tailleDefaut : Rectangle
-tailleMax : Rectangle Attributs de classes
+ <<Constructeur>> Fenêtre()
+ affiche() : void
Opérations d'instances
+ cacher() : void
+ getTailleMax() : Rectangle
+ getTailleDefaut() : Rectangle Opérations de classes
123
Concept d'opération et méthode:
Exercice
Question 1:
• On nomme modifierAdresseEtudiant() l’opération permettant
de modifier l’adresse de l’étudiant.
• Positionnez cette opération dans une classe, puis précisez les
paramètres de cette opération.
Question 2:
• On nomme coursDeEtudiant() l’opération permettant d’obtenir
l’ensemble des cours suivis par un étudiant.
• Positionnez cette opération dans une classe, puis précisez les
paramètres de cette opération.
124
Encapsulation, visibilité et interface
125
Encapsulation, visibilité et interface (2)
Données
} •
•
Partie statique, passive
Partie cachée, privée
utilisateur
126
Méthodes et classes abstraites
• Une méthode est dite abstraite si on connaît son entête, mais
pas la manière dont elle peut être réalisée.
• Une classe est dite abstraite lorsqu’elle contient au moins une
méthode abstraite.
FormeGeometrique {abstract}
- abs : int
- ord: int
-…
127
Méthodes et classes abstraites (2)
128
Classe « Interface »
• Une interface est une classe spéciale dont toutes les méthodes
sont abstraites.
• Une interface se note en UML avec le stéréotype
<<interface>>
<<interface>>
Forme
- abs : int
- ord: int
-…
+ surface () : double
+ getAbs() : int
+ getOrd(): int
+ ….
129
Associations
Client Compte
Etudiant cours
• Une association indique qu’il peut y avoir des liens entre des
instances des classes associées.
131
Associations
• Remarque
– Une association fonctionne (généralement) dans les 2 sens
(bidirectionnelle).
• Les termes associés à une association sont:
– Nom,
– Sens de lecture,
– Multiplicité,
– Rôle,
– Navigabilité,
– degré (arité).
132
Associations
Nom et sens de lecture
• Décrit la nature (signification) de l’association.
• Montre la direction de lecture de l’association.
Est titulaire d’un
Client Compte
Appartient à un
Multiplicité
• Indique un nombre de participations d’une classe dans une
association.
• Indique un domaine de valeurs pour préciser le nombre
d’instance d’une classe vis-à-vis d’une autre classe pour une
association donnée.
133
Associations
Multiplicité
1. indiquée à chaque extrémité d’une association
2. sous la forme min..max
3. min, max = 0, 1, *
1 1..*
Exemples Société Personne
Employeur Employé
135
Associations
Rôle d’une association
• Décrit le rôle d’une classe dans une association.
• Le rôle tenu par une classe vis-à-vis d’une association peut
être précisé sur l’association.
Société Personne
Employeur Employé
136
Associations
137
Associations: Exercice
Question:
• Définissez les associations qui peuvent exister entre un
enseignant et un cours.
Réponse:
138
Association
Navigabilité
• Par défaut une association est navigable dans les deux sens
c’est-à-dire elle est bidirectionnelle.
Commande Client
1..* 1
Navigabilité
• Elle est matérialisée par une ou deux extrémités fléchées.
• La non navigabilité se représente par un « X ».
• Exemple:
Voiture * * ServiceContravention
CopieExamen * 1 Etudiant
Professeur
Symbole d’association
Salle Etudiant
Attention
difficiles à déchiffrer
141
Qualification d'une association
NCompte Compte
Banque
1 1 142
Qualification d'une association
Exercice
• Un avion est composé de plusieurs sièges, mais dans une
rangée il y a seulement quatre sièges.
143
Associations
Classe association
• Les associations ne pouvant pas posséder de propriété.
• Donc, il faut introduire un nouveau concept pour modéliser
cette situation : celui de classe association.
• Les classes association sont utiles quand il y a des attributs qui
sont pertinents à l’association, mais à aucune des classes
impliquées.
• Une classe association est connecté à deux ou plusieurs
classes.
• Elle possède également des attributs et des opérations.
• Une classe association est caractérisée par un trait discontinu
entre la classe et l’association qu’elle représente.
144
Associations
Classe association
• Exemples:
– L’association Emploie entre une Entreprise et une Personne possède
comme propriétés le salaire et la date d’embauche.
– Ces deux propriétés n’appartiennent ni à l’entreprise, qui peut employer
plusieurs personnes, ni aux personnes, qui peuvent avoir plusieurs
emplois.
– Il s’agit donc bien de propriétés de l’association Emploie.
1..* 0..1
Personne Entreprise
Emploi
-Periode: int
-Salaire: float
145
Associations
Classe association
• Exemple
• Le diagramme suivant montre que l’on souhaite enregistrer l’année où
tout étudiant s’inscrit à un module.
• De cette instance, on en déduit, par exemple, que e3 est inscrit au
module 1 en 2005 et au module 3 en 2006.
146
Agrégation
147
Agrégation
148
Agrégation
Pays Région
*
Equipe Joueur
*
150
Composition
Fichier Répertoire
0..* 1
151
Composition
Exercice
• Un document est composé de plusieurs paragraphes, qui, à
son tour, est composé de plusieurs phrases.
• Remarque
• Les notions d’agrégation et surtout de composition posent de
nombreux problèmes en modélisation et sont souvent le sujet de
discussions d’experts et sources de confusions.
152
Généralisation / Spécialisation
153
Généralisation / Spécialisation
• Exemple
(StarUML)
• Exemple (PowerAMC)
Compte
- N°Compte : String
- Solde : float
+ <<Constructor>> Compte ()
+ Déposer (float Somme) : void
+ Retirer (float Somme) : float
+ AvoirSolde () : String
CompteEpargne
- Taux : float
+ AvoirSolde () : String
155
Généralisation / Spécialisation: Exercice
Exercice
• Pensez-vous qu’il soit possible de définir un lien d’héritage
entre les classes UML représentant respectivement les
étudiants et les enseignants ?
156
Généralisation / Spécialisation
= héritage multiple
Etudiant Employe
EdudiantEmploye
157
Dépendance
158
Dépendance
159
Dépendance
• Exemple
160
Contraintes sur les associations
• Une contrainte:
– Est une note ayant une valeur sémantique particulière pour un élément
de la modélisation.
– Permet d’imposer des règles à respecter lors du passage à
l’implémentation.
– Concepts avancés des associations.
– Représentée entre accolades.
– Peut être exprimée dans n’importe quel langage.
• Il est possible d’attribuer toutes sortes de contraintes à une
association.
161
Contraintes sur les associations
contrainte {ordonné}
1 0..*
Client Compte
{ordonné}
1 0..*
Classe Chaise
{ordonné}
162
Contraintes sur les associations
contrainte {xor}
1 Batterie
1 secteur
163
Contraintes sur les associations
contrainte {frozen}
0..*
Personne enfant
{frozen} 2
parent
164
Package
• Un package permet de regrouper des classes, des interfaces et
même d’autre packages.
• La structuration d’un modèle en packages est une activité
délicate.
• Elle doit s’appuyer sur deux principes fondamentaux:
– Cohérence
– Indépendance.
Cohérence
• La cohérence consiste à regrouper les classes qui sont proches
d’un point de vue sémantique.
165
Package
Cohérence
• Les critères de cohérence suivants doivent être réunis :
– Finalité : les classes doivent rendre des services de même nature aux
utilisateurs,
– Évolution : on isole ainsi les classes réellement stables de celles qui
vont vraisemblablement évoluer au cours du projet, ou même par la
suite,
– Cycle de vie des objets: ce critère permet de distinguer les classes dont
les objets ont des durées de vie très différentes.
Indépendance
• Forcer la minimisation des relations entre packages.
166
Package
• Un package est représenté par un rectangle possédant un
onglet dans lequel est inscrit le nom du package
Dessin
<<interface>>
Forme
Rectangle
<<implements>>
Cercle
Carré
<<realize>>
167
Import des packages
• La relation d’import permet à une classe d’un package
d’utiliser les classes d’un autre package.
• La relation est monodirectionnelle : elle comporte un package
source et un package cible.
• La relation d’import s’exprime avec une flèche en pointillé.
• Dans l’exemple, la classe ‘Afficheur’ a besoin des classes du
package ‘Dessin’.
168
Import des packages
Dessin
Outil Dessin
<<interface>>
Forme
Rectangle afficheur
<<implements>>
Cercle
Carré <<realize>>
169
Etapes d'établissement un diagramme de classes
170
Diagramme d’objets
171
Diagramme d’objets
172
Diagramme d’objets
• Le nom d’un objet est souligné
– Nom : Classe
– Nom
– :Classe
173
Diagramme d’objets
• Les objets sont relies par des instances d’associations : les
liens.
• Un lien représente une relation entre objets à un instant donné.
• ATTENTION : la multiplicité des extrémités des liens est
toujours égal à 1.
• Les rôles des associations peuvent être représentés
explicitement :
0..* Khalid
Personne enfant Père
2
parent
Nadine
174
Diagramme d’objets
• Règles:
– Chaque objet est instance d’une classe et la classe de l’objet ne change
pas durant la vie de l’objet.
– Les classes abstraites ne peuvent pas être instanciées.
– Les liens relient les objets et les relations relient les classes.
– Chaque lien est instance d’une relation (association, agrégation,
composition)
– Un lien entre deux objets implique une relation entre les classes (ou
superclasses) des 2 objets.
– Un lien entre 2 objets indiquent qu’ils se connaissent et qu’ils peuvent
s’échanger des messages.
– Les diagrammes d’objets qui contiennent des objets et des liens sont
instances des diagrammes de classes qui contiennent des classes et des
relations.
175
Diagramme d’objets
• Exemple :
– Une entreprise emploie au moins deux personnes.
– Une personne travaille dans une au plus deux entreprises.
Entreprise
:Entreprise e1:Entreprise
0..2
2..*
Personne
:Personne p1:Personne p2:Personne p3:Personne p4:Personne
176
Diagramme d’objets
• Exemple
177
Conclusion
178
Chapitre 4 : Diagrammes de
séquences, d’activités, de vue globale
d’interaction et états.
179
Diagrammes de séquences
Objectifs
• Présenter les concepts UML relatifs à la vue comportementale
du système (diagramme de séquence).
• Présenter la notation graphique du diagramme de séquence
UML.
• Expliquer la sémantique des séquences UML en précisant le
lien avec les classes UML.
180
Diagrammes de séquences
181
Diagrammes de séquences
183
Diagramme de séquences
• Un objet est représenté par un rectangle.
• La ligne verticale représente la ligne de vie de l’objet.
• Les objets communiquent via des messages représentés par des
flèches orientées de l’émetteur au récepteur.
• L’ordonnancement verticale des messages indique la
chronologie.
• Un message reçu par un objet déclenche l’exécution d’une
opération ou plusieurs.
• Un message envoyé par objet correspond :
– Demander un service d’un autre objet;
– Renvoyer le résultat d’une opération;
184
Diagrammes de séquences : Exemple
DiagremmeSequences_1
:Compte
:Client
retirer(somme)
Solde -=somme
Donner (somme)
imprimerReçu()
186
Période d’activité
• 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.
• Représentée par une bande rectangulaire superposée sur la
ligne de vie de l’objet. DiagremmeSequences_1
:Objet 1 :Objet 2
Message 1()
t1
{t2-t1 <2s} Durée
t2 d’activation
187
Période d’activité
• Remarque
– Lorsque le diagramme de séquence est utilisé pour représenter un
sous-ensemble du logiciel à réaliser, il est possible d’indiquer le
pseudo-code exécuté par un objet pendant le déroulement d’une
opération.
188
Messages
• Les messages traduisent les interactions (échange
d’informations) entre objets.
• Ils sont représentés par des flèches orientées de l’émetteur au
récepteur.
• Plusieurs types :
– Message simple,
– Message minuté (Timeout),
– Message récursif,
– Message synchrone,
– Message asynchrone,
– Etc.
189
Message simple
DiagremmeSequences
:Objet 1 :Objet 2
Message 1()
190
Message minuté
• Message minuté bloque l’expéditeur pendant un temps donné,
en attendant la prise en compte du message par le récepteur.
• Après le délai, l’expéditeur est libéré et peut envoyer un autre
message.
DiagremmeSequences
: Objet 1 : Objet 2
Message( 1 minute)
191
Message minuté : Exemple
• La carte est t’éjecter, si la carte n’est pas récupérée dans 10
seconde, le GAB va déclencher un message d’avaler la carte.
DiagremmeSequences
:Client :GAB
Ejecter Carte( 10 seconde)
AvalerCarte()
192
Message récursif
• Appelé aussi message réflexive.
• Message envoyé d’un objet vers lui-même.
DiagremmeSequences
:objet1
Message1()
193
Message récursif : Exemple
• Lorsque le client introduit sa carte de guichet, ce dernier
vérifie la validité de la carte avant de demander le code
d’accès.
DiagremmeSequences
:Client :GAB
IntroduirCarte()
VerificationValidité()
DemandeCode()
194
Message synchrone (appel de procédure)
195
Message synchrone (appel de procédure) :
Exemple
• Communication client serveur : Sockets
CommServeur ConsulterSolde
demandeSolde()
Acceptation()
Requête() getSolde()
Réponse() AfficheSolde()
196
Message asynchrone
197
Message asynchrone
• Présentation
DiagremmeSequences DiagremmeSequences
198
Création et destruction d’objets
Un message peut créer ou détruire un objet.
Objet_1 Objet_3
Message_1
Objet_2
Création d’objet
Message_2
199
•
Exercice
Elaborer un diagramme de séquence convenable à ce scénario nominal
• Scénario nominal :
1. Le porteur de CB Visa introduit sa carte dans le lecteur de cartes du GAB.
2. Le GAB vérifie que la carte introduite est bien une carte Visa.
3. Le GAB demande au porteur de CB Visa de saisir son code d’identification.
4. Le porteur de CB Visa saisit son code d’identification.
5. Le GAB compare le code d’identification avec celui codé sur la puce de la carte.
6. Le GAB demande une autorisation au système d'autorisation VISA.
7. Le système d'autorisation VISA donne son accord et indique le solde hebdomadaire.
8. Le GAB demande au porteur de CB Visa de saisir le montant désiré du retrait.
9. Le porteur de CB Visa saisit le montant désiré du retrait.
10. Le GAB contrôle le montant demandé par rapport au solde hebdomadaire.
11. Le GAB demande au porteur de CB Visa s'il veut un ticket.
12. Le porteur de CB Visa demande un ticket.
13. Le GAB rend sa carte au porteur de CB Visa.
14. Le porteur de CB Visa reprend sa carte.
15. Le GAB délivre les billets et un ticket.
16. Le porteur de CB Visa prend les billets et le ticket.
200
Fragments
• Permet de décomposer une interaction complexe en fragments
simples.
• Représenté par un rectangle dont le coin supérieur gauche
contient un pentagone.
• Dans le pentagone figure le type du fragment.
– loop : boucle
– alt : alternative
– ref : référence
– …
201
Fragments
• Opérateur alt :
– correspond à une instruction de test avec une ou plusieurs alternatives
possibles. Il est aussi permis d’utiliser les clauses de type sinon.
emprunterLivre
:Adhérent :Emrunt
:Gestionnaire
saisirAdherent()
controlerEtat()
Alt EtatEmpunt
[etat emprunt= rendu]
autoriserEmprunt()
DiagremmeSequences_1
:System
:internaute
chercherOuvrage()
OuvrageTrouvé()
opt
miseDansPanier()
203
Fragments
• Opérateur loop:
– Permet d’exécuter une séquence d’interaction tant qu’une condition
(min, max) est satisfaite.
DiagremmeSequences_1
:Caissier :SE
enregistrerArt(code, qts)
mentantPartiel
204
Fragments
• Opérateur par:
– permet de représenter deux séries d’interactions qui se déroulent en
parallèle.
DiagremmeSequences_1
:Internaute :SrveurInternet
par
consulterSite([Link])
consulterSite([Link]
services/[Link])
conculterAbsence()
205
Fragments
• Opérateur break:
– Permet de représenter une situation exceptionnelle correspondant à un
scénario de rupture par rapport au scénario général.
– Le scénario de rupture s’exécute si la condition de garde est satisfaite.
DiagremmeSequences_1
:GAB
:Client
demanderCode()
break
AppuyerAide()
afficherAide()
206
Fragments
• Opérateur ref:
– Permet d’appeler une séquence d’interactions décrite par ailleurs
constituant ainsi une sorte de sous-diagramme de séquence.
:GAB
:Client B : SAB
ref
S’authentifier
demanderAutorisation(numCa
rte)
{< 2s}
demandeMontantRetrai() Autorisation(solde)c
….
207
Fragments
• Opérateur ref:
Sd S’authentifier
:GAB
:Client B
introdureCarte()
verifierCarte()
demandeCode()
saisieCode(code)
verifierCode()
codeOk()
208
Fragments
• Opérateurs strict et weak sequencing
– L’opérateur strict est utilisé quand l’ordre d’exécution des opérations
doit être strictement respecté.
– L’opérateur weak est utilisé quand l’ordre d’exécution des opérations
n’a pas d’importance.
• Opérateurs ignore et consider:
– Sont utilisés pour des fragments d’interactions dans lesquels on veut
montrer que certains messages peuvent être:
• Soit absents sans avoir d’incidence sur le déroulement des interactions
(ignore),
• Soit obligatoirement présents (consider).
209
Fragments
• Opérateur assert:
– permet d’indiquer qu’une séquence d’interactions est l’unique séquence
possible en considérant les messages échangés dans le fragment.
– Toute autre configuration de message est invalide.
• Opérateur neg (negative):
– Permet d’indiquer qu’une séquence d’interactions est invalide.
• Opérateur critical:
– Permet d’indiquer qu’une séquence d’interactions ne peut être
interrompue compte tenu du caractère critique des opérations traitées.
– On considère que le traitement des interactions comprises dans la
séquence critique est atomique.
210
Conclusion
211