Modélisation avec UML

519 vues

Publié le

Ce cours présente le langage UML qui permet notamment de modéliser des logiciels programmés en orienté objet. Ce cours présente les diagrammes de classes qui permettent de décrire la structure d'un logiciel et les diagrammes d'activité qui permettent de décrire les aspects dynamiques de l'exécution.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
519
Sur SlideShare
0
Issues des intégrations
0
Intégrations
7
Actions
Partages
0
Téléchargements
30
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Modélisation avec UML

  1. 1. PO3T Programmation orientée objet Séance 5 Modélisation avec UML Sébastien Combéfis, Quentin Lurkin lundi 26 octobre 2015
  2. 2. Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
  3. 3. Rappels Héritage et polymorphisme des objets Référence polymorphique et conversion Résolution des appels de méthodes (statique et dynamique) Classe abstraite et interface Factorisation de code similaire entre classes Contrat à respecter pour l’implémentation 3
  4. 4. Objectifs Comprendre et utiliser la modélisation d’un logiciel Structure et architecture de l’application orientée objet Description de l’aspect dynamique et de l’exécution Découvrir le langage UML Diagramme de classe Diagramme d’activité 4
  5. 5. Modélisation
  6. 6. Object Modelling Technique (OMT) Notation développé en 1991 par Rumbaugh Développé pour supporter la programmation orientée objet Quatre buts pour l’utilisation en développement logiciel Tester des entités physique avant construction (simulation) Communiquer avec le client Visualisation (présentation alternative de l’information) Réduction de la complexité Prédécesseur du langage UML 6
  7. 7. Trois modèles d’OMT Modèle objet pour les éléments statiques Classes et associations, avec les attributs et les opérations Modèle dynamique pour une vue état/transition États, transitions et évènements pour déclencher les transitions Modèle fonctionnel gère l’aspect processus Processus, stockage et flux de données et acteurs 7
  8. 8. Unified Modelling Language (UML) Language de modélisation utilisé en ingénierie logicielle Notation unifiée pour visualiser le design d’un système Standard de l’Object Management Group (OMG) en 1997 Également adopté comme un standard ISO en 2005 Très utilisé pour le design de programme en orientée objet Mais pourrait être utilisé pour le design de base de données 8
  9. 9. Modélisation Permet de visualiser le plan architectural d’un système À l’aide d’un ensemble de diagrammes Distinction entre le modèle du système et les diagrammes Diagramme = représentation graphique partielle d’un système Deux vues d’un système Statique décrit la structure du système Dynamique décrit le comportement dynamique du système 9
  10. 10. Diagrammes prédéfinis en UML 2 Quatorze diagrammes prédéfinis divisés en deux catégories Structurel Classe (Class diagram) Objet (Object diagram) Composant (Component diagram) Déploiement (Deployment diagram) Package (Package diagram) Structure composite (Composite structure diagram) Profil (Profile diagram) Comportemental Cas d’utilisation (Use case diagram) États-transitions (State machine diagram) Activité (Activity diagram) Interaction Séquence (Sequence diagram) Communication (Communication diagram) Aperçu de l’interaction (Interaction overview diagram) Temps (Timing diagram) 10
  11. 11. Diagramme structurel
  12. 12. Diagramme de classe Capturer les relations statiques dans le programme Comment les éléments du programme sont mis ensemble Plusieurs types de relation Stockage de références vers d’autres classes Appartenance de classes ... Capture de la « structure physique » d’un système 12
  13. 13. Représenter une classe (1) Classe modélisée par un diagramme de classe Définition composée de trois compartiments Nom pour identifier la classe Attributs avec visibilité et valeur par défaut (optionnel) Opérations avec visibilité Employee {author = Combéfis} +office : String #salary : Float = 1000 −name : String +getName() : String +promote() : void 13
  14. 14. Représenter une classe (2) Possibilité d’ajouter des valeurs tagguées Rattachées à un élément qui définit leur portée Quatre niveau de visibilité + pour public − pour private # pour protected ~ pour package Employee {author = Combéfis} +office : String #salary : Float = 1000 −name : String +getName() : String +promote() : void 14
  15. 15. Attribut Un attribut est un type primitif simple ou un objet Peut être une relation vers d’autres objets complexes Deux formes possibles pour un attribut Attribut déclaré directement dans la classe Relation entre classes Propriétés de multiplicité, d’unicité et d’ordre Définissable pour les deux formes d’attribut visibilité nom : type [multiplicité] = défaut {propriétés} 15
  16. 16. Visibilité Quatre niveaux de visibilité Visibilité publique (public) rend l’élément visible de partout Visibilité privée (private) restreint la visibilité à la classe Visibilité protégée (protected) utilisée avec l’héritage Publique pour les sous-classes et privée ailleurs Visibilité package rend l’élément visible dans le package Applicable pour les attributs et les pour les opérations 16
  17. 17. Multiplicité La multiplicité définit le nombre d’instances de l’attribut Pour chaque instance de la classe principale créée Simple entier, un liste d’entier, un intervalle d’entiers Multiplicité par défaut est de 1, valeur non bornée avec * Flight −name : String −passengers : Person[0..400] −operator : Airline −partners : Airline[*] −pilots : Person[2] 17
  18. 18. Propriété des attributs Imposer un stockage séquentiel des éléments avec {ordered} Pour les attributs multiples uniquement, non ordonné par défaut Autoriser les doublons avec {notunique} Pour les attributs multiples uniquement, {unique} par défaut Figer la valeur d’un attribut avec {readOnly} La valeur de l’attribut ne peut être changée une fois initialisée 18
  19. 19. Contrainte des attributs Ajout de restriction sur les éléments avec des contraintes Expression booléenne derrière l’élément ou comme note On peut ajouter une étiquette à la contrainte Qu’on place devant l’expression booléenne, suivie de : Car −length : Float {length > 0} −seating : Int −color : Color iscar : 0 < seating <= 7 19
  20. 20. Attribut dérivé Attribut dérivé ne doit pas être dans l’implémentation Il peut être calculé à partir d’autres Peut néanmoins être présent pour raison d’efficacité Signalé en préfixant le nom avec un slash ( / ) Pair −x : Float −y : Float −/ordered : Boolean +getX() : Float +getY() : Float +isOrdered() : Boolean ordered == true if x <= y, and false otherwise 20
  21. 21. Relation Représentation d’un attribut par une relation Illustre comment l’attribut est en lien avec la classe Une classe qui contient l’attribut et une qui le représente Lien entre les classes, avec le nom de l’attribut Mêmes informations que pour attribut déclaré dans la classe Mais placées à différents endroits School −name : String +getName() : String 1 −director Person −firstname : String −lastname : String −birthdate : Date +getName() : String +getBirthdate() : Date 21
  22. 22. Opération Une opération permet d’invoquer un comportement Le comportement agit sur une instance de la classe UML fait la distinction entre opération et méthode Opération spécifie comment invoquer un comportement Méthode implémente l’opération visibilité nom (paramètres) : type {propriétés} 22
  23. 23. Paramètre Un paramètre d’une opération se définit comme un attribut Nom, type, multiplicité, valeur par défaut et propriétés La direction décrit comment un paramètre est utilisé in : passé à l’opération inout : passé par l’appelant, modifiable par l’opération out : modifié par l’opération return : passé par l’appelant, renvoyé par l’opération direction nom : type [multiplicité] = défaut {propriétés} 23
  24. 24. Contrainte des opérations (1) Association de contraintes sur les opérations Contrat que l’implémentation de l’opération doit respecter Définition des contraintes comme pour les attributs Quelques contraintes spéciales (étiquettes prédéfinies) Precondition doivent être satisfaite avant l’appel Postcondition seront satisfaites après l’appel bodyCondition contraint la valeur de retour 24
  25. 25. Contrainte des opérations (2) Shape −position : Coord −color : Color +nbSides() : Int +draw(c : Canvas) : void Square +nbSides() : Int +draw(c : Canvas) : void bodyCondition : Int > 0 bodyCondition : Int == 4 Precondition : c.contains(position) Postcondition : the shape has been drawn in the specified canvas 25
  26. 26. Effet de bord Indiquer que l’objet n’est pas modifié avec {query} L’implémentation ne peut pas modifier l’état de l’objet L’appel de l’opération ne provoque aucun effet de bord Person −firstname : String −lastname : String +getName() : String {query} 26
  27. 27. Classe abstraite Classe abstraite contient des opérations sans implémentation Peut ne contenir aucune opération Impossible de créer une instance d’une classe abstraite Étendue par des classes concrètes Nom de la classe écrit en italique dans le diagramme UML Animal +isMammal() : Bool +yell() : void 27
  28. 28. Relation de dépendance Dépendance lorsqu’une classe utilise une autre (relation uses) La relation entre les classes n’est pas durable Quelques exemples Une opération reçoit un paramètre de type d’une autre classe Le type de retour d’une opération est d’une autre classe ... Math ArithmeticException 28
  29. 29. Relation d’association Association lorsqu’une classe retient une autre (relation has-a) La relation entre les classes est durable Les vies des objets ne sont pas dépendantes Un objet peut être détruit sans que l’autre ne le soit City Person Une ville possède un bourgmestre 29
  30. 30. Propriété des associations On indique la navigabilité avec une flèche sur l’association Et on peut ajouter une croix pour indiquer la non navigabilité Le nom d’une association donne son contexte Utilisation multiplicité lorsque l’association est un attribut Par défaut, la multiplicité est de 1 Classroom a pour élèves des 1..* × Person 30
  31. 31. Relation d’aggrégation Représente une association forte (relation owns-a) Il y a appartenance entre deux classes On peut indiquer la navigabilité et la multiplicité Person 1..2 Address Une personne pos- sède l’adresse de son domicile légal et éven- tuellement l’adresse du bureau à son travail 31
  32. 32. Relation de composition Représente une association très forte (relation is-part-of ) Une classe est composée à partir d’autres classes Les vies des objets composés sont liées à celle du principal Les objets composés disparaissent en même temps que le principal List * ListElement Une liste possède 0, 1 ou plusieurs éléments 32
  33. 33. Relation de généralisation Une classe généralise une autre plus spécifique (relation is-a) Une classe est construite en dérivant d’une autre Pas de multiplicité ni de nom sur les relations de généralisation Animal SeaHorse 33
  34. 34. Classe d’association Une classe d’association représente une association complexe Possède un nom et des attributs Résultera typiquement en trois classes lors de l’implémentation Student 1..* * Exam ExamResult −grade : Int 34
  35. 35. Interface (1) Une interface a des déclarations de propriétés et méthodes Représente un contrat qu’une implémentation doit respecter Deux représentations graphique différentes Comme une relation ou notation « ball-and-socket » « interface » Sortable +isBefore(o : Sortable) : Bool Person +isBefore(o : Sortable) : Bool Alphabetizer 35
  36. 36. Interface (2) Moins de détails sur l’interface Focus sur la relation entre les classes L’interface est indiquée sous la « ball » Et la classe qui dépend de l’interface avec un « socket » Person Sortable Sortable Alphabetizer 36
  37. 37. Template Classe paramétrisée reçoit des types en paramètre Permet d’indiquer un type de classe avec lequel la classe interagit Plusieurs templates à séparer avec des virgules On peut ajouter une restriction comme ElemType : Sortable List −size : Int −elements : ElemType[*] +size() : Int +get(i : Int) : ElemType +add(e : ElemType) : void ElemType 37
  38. 38. Binding Binding à faire en spécifiant un type concret pour le template Lorsque la classe est utilisée comme attribut ou dans une relation (composition, généralisation...) List −size : Int −elements : ElemType[*] +size() : Int +get(i : Int) : ElemType +add(e : ElemType) : void ElemType StudentList «bind» <ElementType -> Student> 38
  39. 39. Diagramme comportemental
  40. 40. Diagramme d’activité Capturer l’exécution et le comportement d’un système Permet de modéliser n’importe quel comportement Représente le comportement suite aux appels de méthodes Lorsqu’on modélise un logiciel Deux éléments de base : activité et action Une activité est un comportement composé d’actions 40
  41. 41. Activité et action Activité décomposée en actions, étapes élémentaires Une action ne peut pas être décomposée Une activité possède un nom et des paramètres éventuels Représentation avec un rectangle aux coins arrondis Retrait d’argent account : Account Demander le montant Débiter le compte 41
  42. 42. Début et fin de l’activité Nœuds spéciaux pour marquer le début et la fin d’une activité Point noir pour le début et point noir entouré pour la fin On peut attacher des pré et postconditions à une activité À indiquer en haut dans la boite de l’activité Retrait d’argent account : Account «Precondition» Solde positif «Postcondition» Compte débité Demander le montant Débiter le compte 42
  43. 43. Pré et postconditions locales Pré et postconditions locales sur les actions Ajout de notes sur les actions pour ces conditions Retrait d’argent account : Account «Precondition» Solde positif «Postcondition» Compte débité Demander le montant Débiter le compte «localPostcondition» Le montant demandé est inférieur au solde 43
  44. 44. Arête d’activité Description du flux d’exécution au sein d’une activité À l’aide d’arêtes reliant les actions Les arêtes indiquent les flux de contrôle et de donnée Les arêtes sont dirigées et peuvent être nommées Exécution concurrente des actions non liées par des arêtes Possibilité d’exécution parallèle sur une machine multiprocesseurs 44
  45. 45. Nœud d’activité Trois différents types de nœuds Paramètre d’entrée et de sortie pour l’activité Objet représentant des données complexes Contrôle pour diriger le flux de contrôle Les différents nœuds sont reliés par des arêtes d’activité Par défaut une simple arête dirigée 45
  46. 46. Nœud de paramètre Une activité reçoit des paramètres et produit des résultats Nœuds de paramètre placés au bord de l’activité Nœud de paramètre représenté par un rectangle Nom ou description des paramètres dans le rectangle Correction d’un examen Exam Vérification des réponses Encodage des points Grade 46
  47. 47. Nœud objet (1) Données qui circulent dans l’activité représentée par des objets La donnée est transférée entre deux actions Représente une instance d’une classe transférée entre actions Production d’un objet par une action et réception par une autre Découpe d’une pièce Coupe de l’acier Piece Stockage de la pièce 47
  48. 48. Nœud objet (2) Notation compacte à l’aide de pins pour les entrées/sorties On attache le rectangle de l’objet sur l’action Les pins sont reliés par une arête pour indiquer le transfert Production d’un objet par une action et réception par une autre Découpe d’une pièce Coupe de l’acier Piece Piece Stockage de la pièce 48
  49. 49. Pin d’exception Pin d’exception indique une condition d’erreur Ajout d’un triangle près de la pin Permet plusieurs chemins possibles en sortant d’une action Découpe d’une pièce Coupe de l’acier ∆ Report Piece Piece Stockage de la pièce Prévenir la maintenance 49
  50. 50. Nœud de contrôle (1) Contrôle du flux d’exécution à l’aide de nœuds spéciaux Prise de décision, concurrence et synchronisation Plusieurs types de nœud de contrôle Début indique le point d’entrée de l’activité Décision permet plusieurs chemins selon une condition Fork pour lancer des actions concurrentes Final indique le point de sortie de l’activité 50
  51. 51. Nœud de décision Choix d’un chemin de sortie en fonction d’une condition Gardes sur les arêtes et éventuellement entrée de condition Nœud représenté par un diamant et gardes entre crochets Connexion d’un utilisateur Vérification identifiants [true] [false] Montrer page d’accueil Montrer page 100e visiteur «decisionInput» numLogins == 100 51
  52. 52. Nœud de fusion Fusion de plusieurs actions vers une autre Rend disponible à un nœuds les informations de plusieurs autres Il ne s’agit pas d’une synchronisation d’actions Engagement d’un employé Préparation offre d’emploi Vérification candi- dature spontanée Recruter can- didat 52
  53. 53. Nœud de fork Exécution concurrente de plusieurs actions Les données sont dupliquées pour toutes les arêtes sortantes Une arête entrante et plusieurs sortantes Chaque branche se finit avec un nœud de fin de branche Engagement d’un employé Acceptation de l’employé Création compte e-mail Affectation bureau 53
  54. 54. Nœud de jointure Jointure de plusieurs actions avant de poursuivre une autre Attend que les actions concurrentes soient toutes terminées Plusieurs arêtes entrantes et une arête sortante Permet de rassembler des branches en une seule Préparation d’un plat Servir le plat Cuire la viande Cuire les patates 54
  55. 55. Crédits https://www.flickr.com/photos/mazzuk/1481457389 https://en.wikipedia.org/wiki/File:UML_logo.gif https://www.flickr.com/photos/colinsd40/15183445332 https://www.flickr.com/photos/marcwathieu/4074527074 55

×