IFT2251 : Génie logiciel
Transcription
IFT2251 : Génie logiciel
4.2. Diagramme de classes
1.
Classe
Attribut
Opérations
Visibilité
IFT2251 :
Génie logiciel
2.
Associations
Multiplicité, documentation, navigabilité
Agrégation
Composition
Association qualifiée
Association dérivée
Classe d’association
Chapitre 4. Analyse orientée objets
Section 2. Diagramme de classes
3.
4.
Généralisation
Pour préciser la spécification
Contraintes, notes, stéréotypes
Julie Vachon,
Hiver 2006
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.2
Références
Satzinger et al.
Chapitre
Chapitre
Introduction
5. pages 176–183
7
Classes
(attributs, opérations)
: associations, agrégations,
compositions, héritage, dépendance
Relations
Ghezzi et al.
Section
Permet de décrire la structure statique du
logiciel avec des
4.6.
Distributeur
1
Chap.4, Sect.2, p.3
Copyrights Julie Vachon, 2006
+ choisirBoisson()
+ verserBoisson()
1
1
Écran
GestionMonnaie
+ afficherMonnaie()
+ afficherNonDisp()
+insérerMonnaie()
+retournerMonnaie()
Chap.4, Sect.2, p.4
Boisson
*
+getPrix()
+getQuantité()
+setQuantité()
Thé froid
Coca
Copyrights Julie Vachon, 2006
1
4.2.1. Classe
Classe
Classe
Attributs
<visibilité> <portée> <nom_attribut> :
<type> = <valeur_initiale>
Nom_de_la_classe
Attributs
Nom_attribut : choisir un nom significatif
Type
Opérations
Remarque: UML distingue opérations et méthodes:
Une méthode est une implémentation d’une
opération.
Plusieurs méthodes peuvent implémenter une même
opération.
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.5
Types primitifs : boolean, real, integer, string, date,
et les types énumérés (définis par l’utilisateur)
Types définis par une classe (interface)
Remarque : un modèle ne devrait pas comporter d’attribut de type
classe, ces attributs (références sur des instances) sont représentés
par des associations.
Valeur_initiale : valeur par défaut
Portée : attribut de classe (indiqué par un $ ou en soulignant le
nom) ou d’instance.
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.6
Classe
Classe
Opérations d’une classe
<visibilité> <portée> <nom_op>
(<liste_paramètres>) : <type_résultat>
Nom_op : choisir un nom significatif
Liste_paramètres
<direction> <nom_paramètre> : <type> =
valeur_initiale
<direction> := in | out | inout
Type_résultat et type : primitif ou classe
Portée : opération de classe (indiqué par un $ ou en soulignant
le nom) d’instance
Chap.4, Sect.2, p.7
Copyrights Julie Vachon, 2006
Visibilité
La
visibilité d’un élément (attribut, opération,
classe, etc.) est représentée par un des trois
symboles : +, – ou #
Public (+) : élément visible par toutes les instances
de toutes les classes
Private (–) : élément visible que par les instances
de la classe
Protected (#) : élément visible par toutes les
instances de la classe et de ses sous-classes
Chap.4, Sect.2, p.8
Copyrights Julie Vachon, 2006
2
Classe
4.2.2. Association
Exemple
Employé
– nom : String;
– date_embauche : Date
– salaire : Integer;
– congés_autorisés : Integer;
– congés_pris : Integer;
nb_employé : Integer
Réflexive,
binaire ou n-aire (peu fréquent)
Spécification d’une association
Cardinalité
Forme
+ congés_restant() : Integer
salaire_moyen() : Integer
Rôles
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.9
Lien = Connexion (physique ou conceptuelle)
entre deux instances
Association = Ensemble de liens ayant une
sémantique commune
verbale (optionnel)
(optionnel)
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.10
Association
Association
Multiplicité (ou cardinalité)
Précise
Multiplicité
le nombre d’instances participantes
min..max
Où min et max sont des entiers
max peut être non borné: ∗
Professeur
1
1..∗
Exemples
1..5 : entre une et cinq instances
6 : implique exactement six instances
2..∗ : implique deux ou plusieurs instances
∗ : implique plusieurs instances (ou aucune, 0..∗)
est_recteur
0..1
enseigne
0..1
Université
Chap.4, Sect.2, p.11
Copyrights Julie Vachon, 2006
Polygone
forme
∗
Chap.4, Sect.2, p.12
sommet
Point
3..∗
Copyrights Julie Vachon, 2006
3
Association
Association
Cardinalité – Association n-aire
Documentation par noms de rôle
Étudiant
Cours
∗
∗
0..1
Professeur
inscription
Spécifie la fonction d’une classe (de ses
instances) pour une association
Information indispensable pour les associations
réflexives
épouse
Pour un cours et un étudiant donné, il peut y avoir un (l’étudiant est inscrit)
ou aucun professeur (l’étudiant n’est pas inscrit)
Un professeur peut donner plusieurs cours suivis par le même étudiant
Dans un cours, un professeur enseigne à plusieurs étudiants
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.13
Personne
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.14
Association
Association à navigabilité restreinte
Documentation par une forme verbale
Nom : verbe ou substantif, près de la ligne qui
représente l’association
Direction indiquée par triangle plein : précise le sens de
lecture de l’association
Une association peut avoir deux noms, un par direction
Hôtel
0..1
héberge
∗
Personne
Par défaut, une association est bidirectionnelle
Pour forcer une association unidirectionnelle et ainsi
indiquer que les instances d’une classe ne peuvent être
identifiées par les instances de l’autre, on restreint la
navigabilité de cette façon:
Électeur
est hébergée par
Chap.4, Sect.2, p.15
0..1
mari
Association
0..1
Copyrights Julie Vachon, 2006
∗
vote
0..1
Candidat
À partir d’un électeur, on peut directement identifier le candidat
pour lequel il a voté.
À partir d’un candidat, on ne peut pas retrouver directement les
électeurs qui ont voté pour lui.
Chap.4, Sect.2, p.16
Copyrights Julie Vachon, 2006
4
Association
Association
Agrégation
Association qui exprime une union marquée et une relation de
subordination entre deux instances (agrégat, instance agrégée)
Inclusion « possède » ou « a pour partie ».
Relation asymétrique, transitive.
Une instance agrégée peut être impliqué dans plus d’une
association. [N’implique pas d’unicité]
Une instance agrégée peut exister sans son agrégat et
inversement, i.e., les cycles de vie de l’agrégat et de l’instance
agrégée sont indépendants. [N’implique pas de dépendance
existencielle]
Chemin
Segment
Agrégat
Agrégé
Association
Composition
Livre
1
Composition
Agrégation forte entre deux instances (un composite et un
composant)
Inclusion « est composé (physiquement) de »
À un même moment, un composant ne peut appartenir qu’à un
seul composite. [Unicité exigée]
Si le composite est détruit (ou copié), ses composants le sont
aussi. [Implique une dépendance existiencielle]
Les composants peuvent être détruits avant le composite
Immeuble
Appartement
Composite
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.17
La destruction d’un livre
entraîne la destruction
de ses pages et des
paragraphes de texte
qu’elles contiennent
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.18
Association
Association, agrégation, composition
Page
∗
Association
1
Organisation
1
0..1
Comité
exécutif
Chap.4, Sect.2, p.19
1
∗
Agrégation
∗
Membre
Composition
Paragraphe
3..∗
La fin d’une organisation fait
disparaître ses membres et son
comité exécutif, la dissolution
du comité n’engendre pas
l’exclusion de ses membres
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.20
Copyrights Julie Vachon, 2006
5
Association
Association
Association, agrégation, composition
Association, agrégation, composition
Association
∗
1
Membre
Remplacer une association (agrégation,
composition) par un attribut dont le type est une
référence sur l’instance associée
Implémentation
Membre
Association
mon_association: Association
membres: set<Membre>
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.21
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.22
Association
Association
Association qualifiée
≠ Modélisation ⇒ Interdit
Caractère bidirectionnel de l’association
Révéler les multiplicités
Compréhension du modèle par les non spécialiste
Aspect visuel convivial de la représentation
Impact que peut avoir le retrait d’une classe
Portée restreinte par une clef
Le qualifiant est composé d’attributs précisant l’association
Le qualifiant constitue une clef (un sélecteur) pour discriminer
certains liens parmi l’ensemble des liens dénotés par
l’association
Le qualifiant agit comme un filtre sur l’association (N à M)
Le qualifiant réduit la cardinalité effective de l’association
Association qualifiée
Banque
no_compte : string
Échiquier
+ No_vol: String
Classe qualifiée
Chap.4, Sect.2, p.23
no_siège : string
départ : date
Qualifiant
1..∗
0..1
Passager
Client
no_ligne : integer
no_colonne : integer
1
1
Case
(échiquier, no_ligne, no_colonne) ⇒ 1 case
case ⇒ un seul (échiquier, no_ligne, no_colonne)
Classe cible
Copyrights Julie Vachon, 2006
0..1
(banque, no_compte) ⇒ 0 ou 1 personne
personne ⇒ plusieurs (banque, no_compte)
Utilisation discutable
Vol
∗
Chap.4, Sect.2, p.24
Copyrights Julie Vachon, 2006
6
Association
Association
Association dérivée
pourrait être déduites à partir des autres
Clarté (lors de l’analyse)
Efficacité (pour l’implantation uniquement !)
Les attributs d’une classe peuvent également être dérivés (si
calculables à partir des autres attributs)
Redondante,
associations
Si l’association est un
ensemble de liens et
non un sac de liens…
Classe d’association
Classe associé à une association
Utilisée dans le cas des associations binaires « plusieurs à
plusieurs » où chaque lien de l’association a des attributs avec
des valeurs propres
Chaque instance de la classe d’association est associée à un
lien unique entre deux instances de classe, sinon réifier
l’association
Entreprise
Facture
0..∗
1
\adresséeAuClient
0..1
Client
1
Commande
1
Si une personne
peut occuper
plusieurs emplois
au sein d’une même
entreprise, cette
représentation est
FAUSSE !
∗
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.25
Association réifiée
entre Personne et Entreprise a
été réifiée pour exprimer concrètement le fait
qu’une personne peut occuper plusieurs
emplois dans la même entreprise
L’association
Réifier = Transformer en
objet distinct ayant sa
propre identité
(indépendante)
Chap.4, Sect.2, p.27
Une personne peut
occuper différents
emplois mais un
seul dans une
entreprise donnée
Emploi
Copyrights Julie Vachon, 2006
Relation entre un élément de description générale
(super) et un élément de description plus spécifique
(sous) cohérent
La relation se lit avec le verbe « être »
+ prix() : integer
Licence
académique
∗
Super-classe
Licence
Emploi
1
Personne
∗
4.2.3. Généralisation
Si l’association est
un sac de liens
Entreprise
employé
∗
Chap.4, Sect.2, p.26
Association
employeur
*
Licence
entreprise
∗
Personne
+ prix() : integer Sous-classe
Sous-classe + prix() : integer
0..1
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.28
Copyrights Julie Vachon, 2006
7
Généralisation
Généralisation
Relation non réflexive, non symétrique, transitive
Type d’héritage
Une super-classe peut avoir plusieurs sous-classes
Une sous-classe peut avoir plusieurs super-classes: la
généralisation est alors multiple.
Class A
Class A
Animal
Class A
Class B
Mammifère
Class B
Aigle
Class C
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.29
Oiseau
Contrainte
Herbivore
Vache
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.30
4.2.4. Pour préciser la spécification
Carnivore
Pour préciser la spécification
Contraintes
Spécifier
une propriété qu'un élément doit vérifier
le rôle ou la portée de tout élément d'un
modèle UML : classe, attribut…
Préciser
membre
Comité
Personne
{sous-ensemble}
S'exprimer
en langage naturel ou en OCL (Object
Constraint Language)
Graphiquement, texte encadré d'accolades, si la
contrainte concerne deux éléments, elle est
positionnée sur une ligne pointillée entre les éléments
délégué
Chap.4, Sect.2, p.31
Par exemple, sur une association, elles peuvent restreindre
le nombre d'instances visées
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.32
Copyrights Julie Vachon, 2006
8
Pour préciser la spécification
Notes
Afficher
Pour préciser la spécification…
la sémantique (pas la structure) de la
notation existante
Définir des distinctions d’usage
Stéréotypes prédéfinis
Spécification d’une opération, contrainte.
Solution
Cette classe a
été revue par
les utilisateurs
« includes », « extends », « interface »
Créer
de nouvelles catégories d’éléments de
modélisation
« actor »
+ quadratic() : integer
« constraint »
Une seule instance de
solution peut exister à la fois
Stéréotypes
Enrichir
un commentaire, une information
Client
{retourne
sqrt(b*b -4*a*c/2*a)}
client
Stéréotype icône
Chap.4, Sect.2, p.33
Copyrights Julie Vachon, 2006
Parmi les objectifs d’apprentissage
Savoir lire, interpréter et créer un diagramme de classes
Comprendre et savoir utiliser les concepts relatifs à la
description des classes (attributs, opération, visibilité, portée)
Comprendre et savoir utiliser les concepts relatif à la description
des associations (multiplicités, rôles, forme verbales)
Expliquer et utiliser la distinction entre association, agrégation et
composition
Expliquer et utiliser l’héritage
Expliquer et interpréter les concepts de classe d’association,
d’association qualifiée, d’association dérivée, d’association à
navigabilité restreinte
Interpréter une contrainte, une note ou un stéréotype
Chap.4, Sect.2, p.35
Copyrights Julie Vachon, 2006
Stéréotype étiquette
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.34
Complément
Les transparents qui suivent ne sont pas au
programme des examens
Observations sémantiques sur les
différents types de relations
(généralisation, agrégation / composition)
Chap.4, Sect.2, p.36
Copyrights Julie Vachon, 2006
9
Généralisation
Généralisation
Distinction entre généralisation et héritage
Objectifs sémantiques de la généralisation
Réutilisation
Généralisation
= Relation sémantique entre
classes qui implique que l’interface de la
sous-classe inclut toutes les opérations de
l’interface de la super-classe
Héritage = Mécanisme par lequel les
éléments de la super-classe sont réutilisés
dans la sous-classe
Substitutabilité
Héritage d’interface
Héritage d’implémentation
Copyrights Julie Vachon, 2006
Aptitude d'un même message à déclencher des opérations
différentes, selon la classe de l’instance auquel il est destiné
Possibilité de définir des opérations sans implémentation =
Opération abstraite
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.38
Généralisation
Généralisation
Héritage d’interface
Héritage
« sans danger »
La sous-classe hérite de la signatures des opérations
de la super-classe, elle n’hérite d’aucune
implémentation
Ce
Permet de réaliser la propriété de substitutabilité
(préserve le sous-typage)
Chap.4, Sect.2, p.39
Héritage d’implantation
Héritage
parfois « dangereux »
sous-classe hérite du code de la superclasse (interface et implantation)
La
type d’héritage se fait souvent à partir
Classe abstraite (implémentation partielle)
Interface (aucune implémentation fournie)
Autorise
(sous-typage)
Les instances d'une classe peuvent être utilisés en place des
instances de leurs super-classe
Polymorphisme
Chap.4, Sect.2, p.37
(sous-classage)
Les attributs, les opérations, les relations et les contraintes
définies dans les super-classes sont héritées intégralement
dans les sous-classes
Permet la réutilisation de code
L’implémentation dans les sous-classes peut être
redéfinie
Autorise
le polymorphisme
le polymorphisme
Copyrights Julie Vachon, 2006
Chap.4, Sect.2, p.40
Copyrights Julie Vachon, 2006
10
Généralisation
Agrégation
Héritage d’implémentation
Redéfinition ou retrait d’attributs ou de méthodes
Par commodité (forme problématique à éviter)
Chap.4, Sect.2, p.41
Relation transitive
Relation asymétrique
Membre
Copyrights Julie Vachon, 2006
Dépendance existentielle
Relation transitive
Relation asymétrique
Possession
Problème de la classe de base fragile
Envoi de message dans tous les sens
Problèmes de l’héritage multiple
Dépendance existentielle (les instances agrégées n’appartiennent qu’à un
seul agrégat à la fois et la destruction de l’agrégat implique leur destruction)
Relation transitive
Relation asymétrique
Relation fixe (durant toute sa vie, une instance agrégée ne peut appartenir
qu’à un même et unique agrégat : pas de reconnexions)
Propriétaire (composition)
Absence de relation taxonomique : « Segment » sous-classe de
« Point »
Inconvénients
Propriétaire exclusif (composition)
Ajout d’attributs et de méthodes sans modifier ce qui a été hérité
Toute redéfinition doit être faite avec attention pour ne pas modifier
les propriétés
Par restriction (forme problématique)
Par extension
Sémantique de l’agrégation
Chap.4, Sect.2, p.42
Aucune propriété particulière, regroupement simple d’instances
Copyrights Julie Vachon, 2006
11