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