Méthodologies de conception des systèmes (Chapitre4: Modélisation statique)
Plan du chapitre Diagramme de classes Les extensions syntaxiques Diagramme objet Diagramme de package
Diagrammes de classes Un diagramme de classe présente un ensemble de classes et d'interfaces avec leurs relations Il peut être utilisé en phase d’analyse et de conception Analyse: offrir une description préliminaire du structure des entités Le nom de quelques attributs et méthodes quand ceux-ci découlent naturellement du domaine modélisé Conception: offrir une description détaillée L’ensemble des classes utilitaires destinées à assurer le fonctionnement du logiciel Tous les attributs et méthodes doivent apparaître de façon détaillée, avec tous les types de paramètres et les types de retour
Classe Une classe est la description d'une collection d'objets qui partagent les mêmes attributs, les mêmes opérations, les mêmes relations et la même sémantique
Représentation graphique d'une classe Compartiment Classe Nom Stéréotype Compartiment Attribut Compartiment Opération Compartiment extra
Nommer une classe Chaque classe doit avoir un nom qui la distingue des autres classes (unicité du nom complet) Nom du package englobant + le nom de la classe En pratique les noms de classes sont des noms pris dans le vocabulaire du domaine Il est d'usage de capitaliser la première lettre de chaque mot Type ClientBanque java::awt::Rectangle
Packages Un package (paquetage) est un regroupement d'éléments (classes) Le regroupement peut être pour des raisons sémantiques, d'usage, de lieux, etc.
Visibilité d'une classe Classe publique (+) La classe est visible pour tous les éléments qui importent le package englobant la classe Classe privée (-) La classe n'est visible que pour les classes qui appartiennent au même package Classe protégée (#) La classe est visible pour les classes qui appartiennent au même package ET pour les classes contenues dans les packages enfant du package englobant
Multiplicité UML permet de préciser le nombre d'instances d'une classe Zéro instance : classe utilitaire (attribut et opération de classe) Une seule instance : classe singleton (ex: classe PDG) Un nombre spécifique Un nombre quelconque (défaut) Connexion internet 0..100 Base de données 1 Outils
Attribut Les attributs forment la description de la partie structurelle ou statique UML permet de représenter les attributs multivalués en précisant le nombre possible de valeurs pour un attribut
Visibilité d'un attribut Attribut public (+) L'attribut est visible pour toutes les classes du package englobant Attribut privé (-) L'attribut n'est visible que pour la classe elle-même Attribut protégé (#) L'attribut est visible pour toutes les sous-classes
Propriétés d'un attribut UML définit trois propriétés qui peuvent être utilisées avec les attributs Changeable Aucune restriction sur les modifications de la valeur de l'attribut Ajout Pour les attributs dont la multiplicité est supérieur à 1, des valeurs additionnels peuvent être ajoutées,mais ne peuvent ensuite être supprimées ou modifiées Gelé La valeur de l'attribut ne peut pas être changée après l'initialisation de l'objet
Syntaxe d'un attribut [visibilité] nom [multiplicité] [: type] [=valeur-défaut] [{propriété}] Exemples - origine + origine origine : Point prénom [1..3] : String origine : Point = {0,0} id : Entier {gelé}
Portée d'un attribut Attribut d'instance Attribut de classe Attribut dont la valeur peut varier pour chaque instance de la classe Attribut de classe Attribut propre à la classe dont la valeur est fixe pour toutes les instances de la classe
Associations (1/2) Par défaut une association est bidirectionnelle Navigation dans les deux sens UML permet de spécifier une limitation de la navigation La flèche indique que les instances d'une classe ne "connaissent" pas les instances d'une autre 0..n GroupeUsager Usager 0..n Usager MotDePasse propriétaire 1..1 0..n clé
Association (2/2) Association peut être aussi réflexive Personne Superviseur 1..1 1..n Supervise
Qualification UML permet de spécifier comment limiter le nombre d'objets en cas de navigation d'associations La connaissance de l'objet source et du qualificateur permet de limiter le nombre d'objets liés Compagnie Personne employeur 1..1 0..n employé 0..1 noEmployé
Agrégation vs. Composition
Classe d'association UML permet de modéliser les propriétés d'une association entre deux classes par une classe d'association 1..n employé Compagnie Personne employeur 0..n Emploi descriptif dateEmbauche salaire
Héritage L'héritage est le mécanisme qui basé sur la généralisation permet aux sous-classes d'hériter, c'est à dire d'avoir les mêmes attributs, opérations et associations que la superclasse
Classes particulières Une classe concrète est une classe qui peut avoir des instances Une classe abstraite est une classe qui n'a pas d'instances Une classe racine est une classe qui ne peut avoir de superclasse Une classe feuille est une classe qui ne peut avoir de sous-classes
Héritage multiple L’héritage multiple permet à une classe d'hériter de plusieurs classes
Opération Les opérations décrivent la partie comportementale ou dynamique
Visibilité d'une opération Opération publique (+) L'opération est visible pour toutes les classes du package englobant Opération privée (-) L'opération n'est visible que pour la classe elle-même Opération protégée (#) L'opération est visible pour toutes les sous-classes
Exemple de visibilité d’opérations Package ClasseA +créer #modifier -détruire -créer +lire -détruire ClasseB Package1 Package2 ClasseC -créer -détruire -créer +écrire -détruire ClasseD
Valeur de retour & paramètres Une opération peut retourner une valeur simple spécifiée par son type Une opération peut avoir des paramètres d'entrée et de sortie Tâche +lireDateDébut() : Date +lireNbHeures() : Entier Tâche +écrireDateDébut(dateDébut : Date) +écrireNbHeures(nbHeures : Entier)
Déclaration d'une opération [visibilité] nom [(liste-paramètres)][: type-retour] Liste-paramètres [direction] nom : type [=valeur-défaut],... Direction Entrée (paramètre d'entrée qui ne peut pas être modifié) Sortie (paramètre de sortie qui peut être modifié) Entrée-Sortie (paramètre d'entrée et de sortie qui peut être modifié)
Contraintes sur les associations (1/2) Une contrainte est une règle de gestion exprimée entre { } ou avec OCL Contrainte sur un attribut qui doit être positif Contrainte {frozen} précise que le nombre de roues d’un véhicule ne peut pas varier
Contraintes sur les associations (2/2) Contrainte {subset} précise que le président est également un membre du comité Contrainte {xor} (ou exclusif) précise que les employés de l’hôtel n’ont pas le droit de prendre une chambre dans ce même hôtel
Contraintes de spécialisation Quatre types de contraintes de spécialisation : disjointe ,non disjointe, complète ou non complète {Disjointe} : un objet ne peut appartenir qu’à une seule classe spécialisée Exemple : un salarié ne peut être que stagiaire ou titulaire et non pas les deux ensemble {Complète} : une contrainte complète précise qu’on ne peut pas rajouter une classe spécialisée à une classe générique ayant déjà une ou plusieurs classes spécialisée Salarié {Disjointe, non complète} Titulaire Stagiaire
Diagramme de classe
Construire un diagramme de classes Pour identifier les classes on peut s'appuyer sur les mots du domaine applicatif Réduire l'ensemble en fonction des critères suivants : Supprimer des synonymes Supprimer des classes non pertinentes Découvrir les associations exprimant l'interdépendance des classes Trouver les attributs des classes Trouver les opérations sur les classes, association ou attribut
Exemple (1/18) Cette étude de cas concerne un système simplifié de réservation de vols pour une agence de voyage Des compagnies aériennes proposent différents vols Un vol est ouvert à la réservation et refermé sur ordre de la compagnie Un client peut réserver un ou plusieurs vols, pour des passages différents Une réservation concerne un seul vol et un seul passager Une réservation peut être annulée ou confirmée Un vol a un aéroport de départ et un aéroport d’arrivée Un vol a un jour et une heure de départ et un jour et une heure d’arrivée Un vol peut comporter des escales dans des aéroports Une escale a une heure d’arrivée et une heure de départ Chaque aéroport dessert une ou plusieurs villes