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