EPITECH 2009 sebastien@migniot.com UML EPITECH 2009 sebastien@migniot.com
UML2 – Diagrammes principaux Pré-Requis La démarche Classes, la vue statique Séquences, la vue dynamique Diagrammes de classe Notation, attributs et opérations Associations entre classes Abstractions et interfaces Patterns et méta-classes Diagrammes de séquence Les types de message Contraintes, récursivité, boucles Diagramme de collaboration Exemple complet
Pré-requis La démarche Classes, la vue statique Séquences, la vue dynamique
La démarche UseCase : utilisations du système Sequence : déroulement par fonctionnalité Class : détail des participants
Classes Représente les concepts participant au logiciel Représente la vue statique, l'union de tous les attributs et opérations issus de la vue dynamique Contient les relations entre concepts
Séquences Représente le déroulement ou le séquencement Détaille en profondeur un message Liste les participants à la séquence
Diagrammes de classe Notation, attributs et opérations Associations entre classes Abstractions et interfaces Patterns et méta-classes
Notation, attributs et opérations Un objet particulier est nommé, souligné et suivi de sa classe Ses attributs représentent son état à un moment donné Il reste l'instance d'une classe
Notation, attributs et opérations Une classe est présentée comme une fiche de propriétés Ses attributs d'abord Ses opérations ensuite Tous les membres ont une visibilité private - protected rien public +
Notation, attributs et opérations Le type des membres est suffixé Format d'attribut [visi] [nom] [:] [type] Format d'opération [visi] [nom] [(] paramètre* [)] [:] [type] Format de paramètre [in|out|inout] attribut*
Notation, attributs et opérations Les classes ou membres abstraits sont en italique Les membres statiques sont soulignés
Associations entre classes Généralisation Réalisation Agrégation Composition Dépendance utilisation instanciation Import, friend
Associations entre classes La généralisation spécifie que la destination généralise la source La réalisation spécifie que la source remplit le contrat décrit par la destination
Associations entre classes L'agrégation est la relation de contenance La composition est employée lorsque le conteneur contrôle le cycle de vie des contenus Exemple : Un album contient physiquement des Images alors qu’une Facture contient une référence vers un payeur existant ailleurs
Associations entre classes La relation de dépendance générique permet de multiples expressions Les stéréotypes classique sont use instanciate import friend
Abstractions et interfaces Une classe abstraite représente une mise en commun non instanciable Exemple : Un noeud de système de fichier n’a pas d’existence physique autre que Dossier, Fichier et Lien Les interfaces sont les concepts minimalistes les plus proches d’un contrat Exemple : Le comparateur, le filtre
Patterns et méta-classes Les Design pattern, des patrons de conception Exemple: Le Visitor et le Composite du système de fichier Eprouvées depuis des années, nul besoin de reinventer la roue, faire confiance aux QI à trois chiffres D'autres patrons, les patrons d’implémentation Exemple : couplage LDAP et Database Les Meta classes, les classes des classes
Annexe1 Exercice suivant le temps Écrire le diagramme de classes qui modélise cette présentation Montre que les diagrammes de classes ne sont pas triviaux
Diagrammes de séquence Les types de message Contraintes, récursivité, boucles Diagramme de collaboration
Les types de message Synchronze Asynchrone Retour Réflexif Instanciation et destruction
Message synchrone Le message synchrone est le plus concevable L'appelant pose la question et attend la réponse Forme impérative et bloquante
Message asynchrone Le message asynchrone est un mail L'appelant envoie « avec bon espoir de réception » Forme non bloquante, fire and forget
Message retour Pas forcément explicité En général implicitement OK Représente les choix comportementaux et les plages de valeur en réponse au message
Message réflexif Typique d'un message auto-suffisant Exemple : FileSystem.getRoot() Valable pour les récursions Valable pour les itérations
Instanciation, destruction Pour effectuer un virement on passe par une Transaction La transaction est crée, stéréotypée <<new>> ou <<instantiate>> La transaction est effectuée puis détruite, marqué d'un X Cf documents normatifs
Contraintes, récursivité, boucles Les blocs stéréotypés, types et gardes assert : assertion, donc nécessité loop : itération sur une collection alt : alternatives, if else-if, else opt : optionel, if unitaire sans else par : parallele, exécution concurrente break, seq, strict, neg, critical Exemples
Blocs stéréotypés Les blocs ont un stéréotype en haut du cadre Les blocs ont des gardes pour chaque compartiment du cadre stéréotypé alt, assert, loop ...
Assertion Bloc stéréotypé assert Permet de préciser un cas sine qua non Exprime une condition évidente Exemple: dans un chemin de fichier, les intermédiaires sont des dossiers
Conditionnalité Bloc stéréotypé opt et alt Le bloc opt est un if sans else, par exemple, « si le compte est débiteur, envoyer un mail » Le bloc alt décrit de multiples choix exclusifs, par exemple « impair, pair ou jackpot »
Itération Bloc stéréotypé loop Le garde indique la collection itérée Couplable avec break pour une itération de recherche Remarque : va souvent de pair avec une agrégation de cardinalité > 1
Exemple mixte Deux blocs opt ne se joignent pas forcément en un seul bloc alt – commenter – Le bloc loop est évident
Concurrence Bloc stéréotypé par, seq et strict Le lancement de windows lance de multiples programmes Le lancement est fini sur jonction des actions parallèles
Autres blocs Break : fin de boucle Neg : chemin impossible, en erreur Terminer une boucle de recherche Neg : chemin impossible, en erreur Exemple du masculin enceinte Critical : chemin synchronisé Exemple du call 911
Syntaxe des messages [pré "/"] [["["cond"]"] [séq] ["*"["||"]["["iter"]"]] ":"] [r ":="] msg"("[par]")" 3 : bonjour() [heure = midi] 1 : manger() 1.3.6 * : ouvrir() 3 / *||[i := 1..5] : fermerEnParralele() 1.3,2.1 / [t < 10s] 2.5 : age := demanderAge(nom,prenom) Cosmétique avant tout
Exemple des billets Exemple de bloc alternatifs Pour certaines alternatives, itérer Notation des « continuation »
Annexe2 Exercice suivant le temps Écrire le diagramme de séquences qui modélisent le scénario « rendre transparentes les images de la présentation » Montre que les diagrammes de classes sont triviaux .. lorsque les diagrammes de séquence sont implicites
Diagramme de collaboration Bijection avec les diagrammes de séquences Plus facile à écrire et imaginer Plus facilement partageable Traduit en diagramme de séquences pour ajouter des blocs et des gardes
Récapitulatif Pré-Requis Diagrammes de classe Diagrammes de séquence La démarche Classes, la vue statique Séquences, la vue dynamique Diagrammes de classe Notation, attributs et opérations Associations entre classes Abstractions et interfaces Patterns et méta-classes Diagrammes de séquence Les types de message Contraintes, récursivité, boucles Diagramme de collaboration
Exemple complet Ouvrir le diagramme BoUML joint au cours dans le fichier ./UML2 - Diagrammes principaux/Diagrammes/Diagrammes.prj et illustrer les relations d'héritage, les abstractions, les interfaces, les conditionnalités et assertion de séquencement.