• Aucun résultat trouvé

4.2. Diagramme de classes

N/A
N/A
Protected

Academic year: 2022

Partager "4.2. Diagramme de classes"

Copied!
11
0
0

Texte intégral

(1)

Julie Vachon, Hiver 2006

IFT2251 : Génie logiciel

Chapitre 4. Analyse orientée objets

Section 2. Diagramme de classes

Chap.4, Sect.2, p.2 Copyrights Julie Vachon, 2006

4.2. Diagramme de classes

1. Classe

… Attribut … Opérations … Visibilité 2. Associations

… Multiplicité, documentation, navigabilité … Agrégation

… Composition … Association qualifiée … Association dérivée … Classe d’association 3. Généralisation

4. Pour préciser la spécification

… Contraintes, notes, stéréotypes

Chap.4, Sect.2, p.3 Copyrights Julie Vachon, 2006

Références

„

Satzinger et al.

…

Chapitre 5. pages 176–183

…

Chapitre 7

„

Ghezzi et al.

…

Section 4.6.

Chap.4, Sect.2, p.4 Copyrights Julie Vachon, 2006

Introduction

„

Permet de décrire la structure statique du logiciel avec des

…

Classes (attributs, opérations)

…

Relations : associations, agrégations, compositions, héritage, dépendance

Distributeur + choisirBoisson() + verserBoisson() Écran

+ afficherMonnaie() + afficherNonDisp()

GestionMonnaie +insérerMonnaie() +retournerMonnaie()

Boisson +getPrix() +getQuantité() +setQuantité()

Thé froid Coca

1 * 1 1

(2)

Chap.4, Sect.2, p.5 Copyrights Julie Vachon, 2006

4.2.1. Classe

„

Classe

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.

Nom_de_la_classe

Attributs

Opérations

Chap.4, Sect.2, p.6 Copyrights Julie Vachon, 2006

Classe

„

Attributs

<visibilité> <portée> <nom_attribut> :

<type>

= <valeur_initiale>

…Nom_attribut: choisir un nom significatif …Type

„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 nedevrait pascomporter 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.

Chap.4, Sect.2, p.7 Copyrights Julie Vachon, 2006

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ésultatet 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.8 Copyrights Julie Vachon, 2006

Classe

„

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

(3)

Chap.4, Sect.2, p.9 Copyrights Julie Vachon, 2006

Classe

Exemple

Employé – nom : String;

– date_embauche : Date – salaire : Integer;

– congés_autorisés : Integer;

– congés_pris : Integer;

nb_employé : Integer + congés_restant() : Integer salaire_moyen() : Integer

Chap.4, Sect.2, p.10 Copyrights Julie Vachon, 2006

4.2.2. Association

„

Lien = Connexion (physique ou conceptuelle) entre deux instances

„

Association = Ensemble de liens ayant une sémantique commune

…

Réflexive, binaire ou n-aire (peu fréquent)

„

Spécification d’une association

…

Cardinalité

…

Forme verbale (optionnel)

…

Rôles (optionnel)

Chap.4, Sect.2, p.11 Copyrights Julie Vachon, 2006

Association

„

Multiplicité (ou cardinalité)

…

Précise le nombre d’instances participantes

…

min..max

„

Où min et max sont des entiers

„max

peut être non borné: ∗

…

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..∗)

Chap.4, Sect.2, p.12 Copyrights Julie Vachon, 2006

Association

Multiplicité

Polygone forme sommet Point

∗ 3..∗

Professeur est_recteur

enseigne

Université

1 0..1

1..∗ 0..1

(4)

Chap.4, Sect.2, p.13 Copyrights Julie Vachon, 2006

Association

Cardinalité – Association n-aire

„ 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

Cours Professeur

Étudiant

inscription

∗ 0..1

Chap.4, Sect.2, p.14 Copyrights Julie Vachon, 2006

Association

Documentation par noms de rôle

„

Spécifie la fonction d’une classe (de ses instances) pour une association

„

Information indispensable pour les associations réflexives

Personne épouse

mari 0..1 0..1

Chap.4, Sect.2, p.15 Copyrights Julie Vachon, 2006

Association

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 héberge Personne

est hébergée par

∗ 0..1

Chap.4, Sect.2, p.16 Copyrights Julie Vachon, 2006

Association

Association à navigabilité restreinte

„

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:

…À 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.

Électeur ∗ vote 0..1 Candidat

(5)

Chap.4, Sect.2, p.17 Copyrights Julie Vachon, 2006

Association

„

Agrégation

…Association qui exprime une union marquéeet une relation de subordinationentre 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é

Chap.4, Sect.2, p.18 Copyrights Julie Vachon, 2006

Association

„

Composition

…Agrégation forteentre 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

Chap.4, Sect.2, p.19 Copyrights Julie Vachon, 2006

Association

Composition

Livre 1 ∗ Page

Paragraphe

∗ 1 Organisation

Comité exécutif

Membre 1 ∗

1 3..∗

0..1

La destruction d’un livre entraîne la destruction de ses pages et des paragraphes de texte qu’elles contiennent

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

Chap.4, Sect.2, p.20 Copyrights Julie Vachon, 2006

Association Agrégation

Association

Association, agrégation, composition

Composition

(6)

Chap.4, Sect.2, p.21 Copyrights Julie Vachon, 2006

Association

Association, agrégation, composition

Association 1 ∗ Membre

Membre mon_association: Association

Association membres: set<Membre>

Chap.4, Sect.2, p.22 Copyrights Julie Vachon, 2006

Association

Association, agrégation, composition

„

Remplacer une association (agrégation, composition) par un attribut dont le type est une référence sur l’instance associée

…

Implémentation

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

Chap.4, Sect.2, p.23 Copyrights Julie Vachon, 2006

Association

„

Association qualifiée

…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

„

Utilisation discutable

Vol no_siège : string 1..∗ 0..1 Passager

départ : date Classequalifiée Qualifiant

Classe cible + No_vol: String

Chap.4, Sect.2, p.24 Copyrights Julie Vachon, 2006

Association

Association qualifiée

Banque no_compte : string ∗ 0..1 Client

(banque, no_compte) ⇒0 ou 1 personne personne ⇒plusieurs (banque, no_compte)

Échiquier no_ligne : integer 1 1 Case

no_colonne : integer

(échiquier, no_ligne, no_colonne) ⇒1 case case ⇒un seul (échiquier, no_ligne, no_colonne)

(7)

Chap.4, Sect.2, p.25 Copyrights Julie Vachon, 2006

Association

„

Association dérivée

…

Redondante, pourrait être déduites à partir des autres associations

„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)

Facture

Commande

1 Client

0..1

\adresséeAuClient 1 0..∗

1

Chap.4, Sect.2, p.26 Copyrights Julie Vachon, 2006

Association

„

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

Emploi

Personne

employeur employé

Si une personne peut occuper plusieurs emplois au sein d’une même entreprise, cette représentation est FAUSSE !

Une personne peut occuper différents emplois mais un seul dans une entreprise donnée

Si l’association est un ensemblede liens et non un sacde liens…

Chap.4, Sect.2, p.27 Copyrights Julie Vachon, 2006

Association

„

Association réifiée

…

L’association 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

Entreprise Emploi

Personne

∗ 1

∗ 0..1

Réifier = Transformer en objet distinct ayant sa

propre identité (indépendante)

Si l’association est un sacde liens

Chap.4, Sect.2, p.28 Copyrights Julie Vachon, 2006

4.2.3. Généralisation

„

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 »

Licence

+ prix() : integer* Licence

académique + prix() : integer

Licence entreprise + prix() : integer Sous-classe Sous-classe

Super-classe

(8)

Chap.4, Sect.2, p.29 Copyrights Julie Vachon, 2006

Généralisation

„

Relation non réflexive, non symétrique, transitive

Class A

Class A

Class B

Class A

Class B

Class C

Chap.4, Sect.2, p.30 Copyrights Julie Vachon, 2006

Généralisation

„

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.

Animal

Mammifère Oiseau Carnivore Herbivore

Aigle

Vache

Chap.4, Sect.2, p.31 Copyrights Julie Vachon, 2006

4.2.4. Pour préciser la spécification

Contrainte

membre

délégué {sous-ensemble}

Comité Personne

Chap.4, Sect.2, p.32 Copyrights Julie Vachon, 2006

Pour préciser la spécification

„

Contraintes

…

Spécifier une propriété qu'un élément doit vérifier

…

Préciser le rôle ou la portée de tout élément d'un

modèle UML : classe, attribut…

„Par exemple, sur une association, elles peuvent restreindre le nombre d'instances visées

…

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

(9)

Chap.4, Sect.2, p.33 Copyrights Julie Vachon, 2006

Pour préciser la spécification

„

Notes

…

Afficher un commentaire, une information

„

Spécification d’une opération, contrainte.

Cette classe a été revue par les utilisateurs

« constraint » Une seule instance de solution peut exister à la fois

Solution

+ quadratic() : integer

{retourne sqrt(b*b -4*a*c/2*a)}

Chap.4, Sect.2, p.34 Copyrights Julie Vachon, 2006

Pour préciser la spécification…

„

Stéréotypes

…

Enrichir la sémantique (pas la structure) de la notation existante

…

Définir des distinctions d’usage

…

Stéréotypes prédéfinis

„« includes », « extends », « interface »

…

Créer de nouvelles catégories d’éléments de

modélisation

« actor »

Client

client

Stéréotype étiquette Stéréotype icône

Chap.4, Sect.2, p.35 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.36 Copyrights Julie Vachon, 2006

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)

(10)

Chap.4, Sect.2, p.37 Copyrights Julie Vachon, 2006

Généralisation

„

Distinction entre généralisation et héritage

…

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

„

Héritage d’interface

„

Héritage d’implémentation

Chap.4, Sect.2, p.38 Copyrights Julie Vachon, 2006

Généralisation

„

Objectifs sémantiques de la généralisation

…

Réutilisation (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

…

Substitutabilité (sous-typage)

„Les instances d'une classe peuvent être utilisés en place des instances de leurs super-classe

…

Polymorphisme

„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

Chap.4, Sect.2, p.39 Copyrights Julie Vachon, 2006

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

„Permet de réaliser la propriété de substitutabilité (préserve le sous-typage)

…

Ce type d’héritage se fait souvent à partir

„Classe abstraite (implémentation partielle)

„Interface (aucune implémentation fournie) …

Autorise le polymorphisme

Chap.4, Sect.2, p.40 Copyrights Julie Vachon, 2006

Généralisation

„

Héritage d’implantation

…

Héritage parfois « dangereux »

…

La sous-classe hérite du code de la super- classe (interface et implantation)

„

Permet la réutilisation de code

„

L’implémentation dans les sous-classes peut être redéfinie

…

Autorise le polymorphisme

(11)

Chap.4, Sect.2, p.41 Copyrights Julie Vachon, 2006

Généralisation

„

Héritage d’implémentation

…Par extension

„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)

„Redéfinition ou retrait d’attributs ou de méthodes …Par commodité (forme problématique à éviter)

„Absence de relation taxonomique : « Segment » sous-classe de

« Point » …Inconvénients

„Problème de la classe de base fragile

„Envoi de message dans tous les sens

„Problèmes de l’héritage multiple

Chap.4, Sect.2, p.42 Copyrights Julie Vachon, 2006

Agrégation

„ Sémantique de l’agrégation

…Propriétaire exclusif (composition)

„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)

„Dépendance existentielle

„Relation transitive

„Relation asymétrique …Possession

„Relation transitive

„Relation asymétrique …Membre

„Aucune propriété particulière, regroupement simple d’instances

Références

Documents relatifs

ANNEX 1 Revival, Religious Practice of Jamaica inventory records at the African Caribbean Institute of Jamaica/Jamaica Memory

[r]

Chap.2 p.10 Copyrights Julie Vachon,

Tracer, dans un repère orthog., la courbe représentative de la fonction γγγγ.. Etude du mouvement du

Choisis un réseau social de ton choix (Facebook, Twitter, Instagram, Snapchat, Youtube, Tiktok, What’s app, LinkedIn, Pinterest, Soundcloud, Periscope) et établis sa

Apre`s un nume´ro de lancement que nombre d’entre vous semble avoir appre´cie´, voici le deuxie`me de notre revue qui, meˆme s’il n’est pas encore tout a` fait ce que

Patrick Guillemet – Télé-université du Québec, Montréal, Québec Geneviève Jacquinot – GRAME, Université Paris 8, France Marie-Noëlle Lamy – FELS, Open University,

Esto se da a entender por medio del tipo de planos y movimientos de “cámara” que hay: los efectos digitales de la imagen como freezing, los gráficos del teléfono y la