GOL502 Industries de services Conception d un service Partie IIb Version 2013
Introduction Conception d un service partie IIb Nous verrons dans ce chapitre Modélisation d un service; Langage de modélisation UML: Diagrammes d objets; Diagrammes des classes. 2
Les diagrammes d objets font partie des diagrammes UML mais pas comme livrables dans le contexte de ce cours. Les diagrammes d objets sont présentés ici afin d introduire les diagrammes de classes. Ces trois notions d un objet ressemblent à des notions présentes chez les humaines! Diagrammes d objets Représentation abstraite d'entités ayant une existence matérielle: arbre, livres, personne, téléphone mobile, etc. Représentation abstraite d entités ayant une existence virtuelle: sécurité sociale, compte bancaire, états d un projet, etc. Un objet est caractérisé par plusieurs notions: Son identité (obligatoire): c est le nom qui le distingue des autres objets. Ses attributs: Ce sont des données et variables caractérisant l'objet. Ses opérations: Ce sont des opérations qui caractérisent son comportement. Ces opérations permettent de faire réagir l'objet aux sollicitations extérieures (ou d'agir sur les autres objets). 3
Diagrammes d objets Les objets sont en interactions les uns avec les autres; Les objets et les interactions sont décrits dans les cas d utilisation; Symbole UML des objets (sans attributs) : fauteuil : lit : table : laval : Montréal : longueuil : kirkland : lit : table interactions Articles mobiliers Entrepôts Articles mobiliers 4
Diagrammes d objets Les objets sont en interactions les uns avec les autres; Les objets et les interactions sont décrits dans les cas d utilisation; Symbole des objets (avec attributs) rédige Attributs de l objet interactions Note: Par souci de simplicité, les opérations d un objet ne sont pas montrées dans un diagramme d objets 5
Diagrammes d objets Les objets et les interactions sont décrits dans les cas d utilisation; Voici comment trouver les objets: Dans un cas d utilisation Relever les noms (propres, communs, sigles, etc.) dans le tableau de la description du cas d utilisation; Ne pas modéliser les acteurs par des objets; Ne pas modéliser les actions (verbes) par des objets; Ne pas inventer d objets qui ne sont pas dans la description du cas d utilisation D abord, ajouter le nom dans la description; Ensuite le modéliser par un objet. 6
Diagrammes d objets Voici comment trouver les objets (exemple): Liste des noms relevés: convention collective répartition tâche enseignant directeur académique système PAE processus Sont des acteurs dans le diagramme des cas d utilisation 7
Diagrammes d objets Voici comment trouver les objets (exemple): Cas d utilisation CU2_Approuver_répartition Nouvelle liste des noms relevés: convention collective Répartition des tâches système PAE processus L enseignant et le Directeur Académique sont en fait des acteurs; L enseignant approuve sa propre répartition des tâches Le Directeur académique approuve la répartition des tâches de n importe lequel des enseignants; Le terme «répartition des tâches» est un objet qui désigne un concept abstrait celui des tâches d enseignement étalées dans le temps. 8
Diagrammes d objets Voici comment trouver les objets (exemple): Cas d utilisation CU2_Approuver_répartition Nouvelle liste des noms relevés: L enseignant et le Directeur académique utilisent le système PAE pour réaliser l approbation des tâches. convention collective Répartition des tâches système PAE processus 9
Diagrammes d objets Voici comment trouver les objets (exemple): Cas d utilisation CU2_Approuver_répartition Nouvelle liste des noms relevés: convention collective Répartition des tâches système PAE processus L objet processus n est pas en interaction avec au moins un autre objet à retirer; Le Directeur académique approuve l ensemble des répartitions de tâches il nous faut un symbole pour représenter une collection d objets: 10
Diagrammes d objets Voici comment trouver les objets (exemple): Cas d utilisation CU2_Approuver_répartition Nouvelle liste des noms relevés: Enfin, le diagramme d objets pour CU2 ressemble à ceci: convention collective Répartition des tâches système PAE 11
Diagrammes d objets Vous devez en faire un diagramme d objets par cas d utilisation; Rappel: pas comme livrables mais comme documents internes pour votre équipe de coneption. Vous pouvez seulement indiquer l identité des objets en omettant leurs attributs et opérations. En fait, les attributs et les opérations d un objet sont indiqués dans la classe de l objet; Les classes sont présentées dans les prochaines pages de ce document. 12
Une classe est une généralisation des objets; Un objet est une instance de sa classe: «Michel» est une instance de la classe «homo sapiens» «Michel» a les attributs et les opérations de la classe «homo sapiens»; Mais «Michel» a des valeurs d attributs et des opérations propres à lui; «Honda Civic est une instance de la classe «Véhicule» «Honda Civic» a les attributs et les opérations de la classe «Véhicule»; «Honda Civic» a ses propres attributs et opérations; 13
Pourquoi utiliser des classes? Efficacité au lieu de manipuler chaque des objets, on manipule leur généralisation Au lieu de changer une opération dans «Michel», «Simon», «Amin», «Tony» on change l opération dans «homo sapiens» Compréhension - L humain a depuis toujours tenter de comprendre son monde en catégorisant son environnement Les ordres d insects; Les familles d arbres; Les classes sociales; Les types de personnalité; Etc. 14
Pourquoi utiliser des classes? Réutilisation Les objets sont des instances des classes, c est plus simple de réutiliser les classes Au lieu d importer «Michel», «Simon», «Amin», «Tony» dans un autre projet, on importe simplement la classe «homo sapiens» Simplification On réduit la complexité d un problème en le divisant en plusieurs classes représentant divers objets Au lieu de raisonner le marché d automobiles en termes «Fit», «Civic», «CRV» on peut raisonner par «Véhicule Honda» Au lieu de présenter la place de l humain sur la Terre en termes de «Michel», «Simon», «Tony» on peut la présenter en termes «Homo sapiens» 15
Symbole UML des classes Nom de la classe (ex: homo_sapien) Liste des attributs Le nom et le type des attributs (ex: grandeur, âge, sexe, etc.) Liste des opérations Le nom, les paramètres et le type de retour (ex: marcher, rire, manger, cherche, etc.) 16
Symbole UML des classes Le nom d une classe sans espace Un attribut une variable, une donnée Son type: entier (int), nombre réel (float), caractère (char), booléen (bool), chaîne (string), d autres objets, etc. void signifie néant, rien. Une opération fonction, routine Peut posséder des paramètres et doit posséder un type de retour. Exemples: +rendre_monnaie(argent: float): bool +valider_rendezvous(quand: date ): bool -vendre_service(void): void 17
Symbole UML des classes signifie accès public signifie accès privé # signifie accès protégé Accès public tous les objets du modèle y ont accès incluant les objets des autres classes; Accès privé ont accès; seulement les objets de la classe y Accès protégé Accès pour les classes héritières seulment (voir les relations entre classes); Note: plus de détails à la page 27 et 28. 18
Tout comme le monde réel, des relations existent entre les classes d un modèle Dépendance: une classe utilise une autre classe (la modification de l une entraîne la modification de l autre) Association: communication entre classes (relation structurelle entre classes) Agrégation: une classe est une partie de l autre (relation tout/partie entre deux classes) Composition: une classe est une partie de l autre (relation tout/partie entre deux classes) (la destruction d un objet «tout» entraîne la destruction d un objet «partie») Héritage: une classe hérite d une autre 19
Tout comme le monde réel, des relations existent entre les classes d un modèle Dépendance: une classe utilise une autre classe Dans cet exemple la classe «Confrontation» utiliser la classe «Stratégie» comme type de paramètres dans son opération «confronter» De plus, cette relation indique qu une modification dans la classe «Stratégie» provoque nécessairement la modification de la classe «Confrontation». 20
Tout comme le monde réel, des relations existent entre les classes d un modèle Association : communication entre classes (relation structurelle entre classes) Il n y a pas de flèche alors c est une relation bi-directionnelle. Ainsi, les objets de la classe «Personne» peut lire les attributs publics et exécuter les opérations publiques des objets de la classe «Entreprise» 21
Tout comme le monde réel, des relations existent entre les classes d un modèle Association : communication entre classes (relation structurelle entre classes) Classe «Personne» joue le rôle d employé Classe «Entreprise» joue le rôle d employeur On peut rendre explicite l association entre deux classes en donnant le rôle de chacune des classes dans la relation 22
Tout comme le monde réel, des relations existent entre les classes d un modèle Agrégation : une classe est une partie de l autre (relation tout/partie entre deux classes) Composition : une classe est une partie de l autre (relation tout/partie entre deux classes) La destruction du tout détruit ses parties La différence entre l agrégation et la composition: la fin de vie des objets impliqués La classe «Entreprise» possède la classe «Camion». La classe Camion possède la classe «Moteur». De plus, la destruction d un objet de la classe «Camion» entraine nécessairement la destruction des objets de la classe «Moteur». 23
Tout comme le monde réel, des relations existent entre les classes d un modèle Héritage : relation liant une classe générale (parent, classe de base) et une classe spécialisée (enfant, sous-classe) Classe de base, parent Elle représente la généralisation Sous-classes, enfants Elles représentent la spécialisation 24
Tout comme le monde réel, des relations existent entre les classes d un modèle Héritage : relation liant une classe générale (parent, classe de base) et une classe spécialisée (enfant, sous-classe) Héritage Classe chat et Chien nom: string et couleur: int sont des attributs hérités de Animal recevoir_nom(n: string): void est l unique opération héritée de Animal 25
Tout comme le monde réel, des relations existent entre les classes d un modèle Héritage : relation liant une classe générale (parent, classe de base) et une classe spécialisée (enfant, sous-classe) Spécialisation Classe chat miauler: void Classe Chien Aboyer: void 26
Tout comme le monde réel, des relations existent entre les classes d un modèle Niveaux d accès nom: string est à accès public. Tous les objets en relation avec Animal peuvent y accéder (*). couleur: int et recevoir_nom(n:string):void sont à accès protégés. Seuls les objets de la classe Animal et les objets de ses sousclasses (Chat et Chien) peuvent y accéder. Manger:void est à accès privé. Seul les objets de la classe Animal peuvent y accéder. Miauler: void est à accès privé. Seul les objets de la classe Chat peuvent y accéder. Aboyer: void est à accède public. Tous les objets en relation avec Chien peuvent y accéder (*). (*) dépendant de la direction de navigation 27
28
Niveaux d accès du diagramme précédent Classe Maître L attribut compagnon:animal peut être un objet de classe Chat ou de classe Chien; L attribut compagnon:animal est accessible aux objets de la classe Maître; L attribut compagnon:animal est accessible aux objets de la classe École_Kung_Fu; L attribut adresse:string est uniquement accessible par les objets de la classe Maître; Les opérations sortir_animal:bool et nommer_animal(n: string):void sont uniquement accessible par les objets de Maître; La destruction d un objet de la classe École_Kung_Fun n entraîne pas la destruction de les objets de la classe Maître. Classe Animal L attribut nom:string est accessible par les objets de Animal, de Maître, de École_Kung_Fu, de Chat et de Chien; L attribut couleur:int est accessible par les objets de Maître, de Chat et de Chien; L opération Manger: void est uniquement accessible par les objets de Animal; L opération recevoir_nom(n: string): void est uniquement accessible par les objets de Animal, de Chat et de Chien. 29
Niveaux d accès du diagramme précédent Classe Chat L opération miauler: void est uniquement accessible par des objets de Chat; Classe Chien L opération aboyer: void est accessible par les objets de Chien, de Maître et de École_Kung_Fu. Remarques sur le diagramme L École de Kung Fu a 1 seul maître; Le maître est une partie de l École de Kung Fu qui est le tout; Le maître demeure même si l École n existe plus (agrégation); Le maître a 1 animal de compganon; L animal peut être un chat ou un chien; L École de Kung Fu peut connaître le nom de l animal; L École de Kung Fu et/ou le maître peut faire aboyer le chien; Le chat peut miauler de lui-même mais pas faire miauler par le maître ou par l École de Kung Fu. 30
Tout comme le monde réel, il existe la notion de multiplicité notation 1..1 1 Un et un seul objet Signification n Exactement n objets, n > 0 0..1 Zéro à un objet m..n De m à n objets, n m * 0..* Nombre quelconque incluant zéro objet 1..* Nombre quelconque excluant zéro objet 31
Tout comme le monde réel, il existe la notion de multiplicité Interpréter la multiplicité et la signification de ce diagramme des classes 32
Tout comme le monde réel, il existe la notion de multiplicité Interpréter la signification de ce diagramme des classes 33
Comment créer les diagrammes de classes? Rassembler tous les diagrammes d objets du projet Rappel: il doit y avoir 1 diagramme d objets par cas d utilisation. À partir de ces diagrammes d objets: Créer une classe pour des objets similaires; Créer une classe pour des objets reliés; En cas de doute créer une classe! 34
Comment créer les diagrammes de classes? Une fois les classes créées, les relier par des relations; Prenez deux classes A et B à la fois et pour toutes les paires de classes, poser les questions suivantes: Est-ce que A est le «tout» et B est une «partie» de A (vice versa) et la fin de vie de A et B est au même moment? Oui. Alors mettez la relation de composition. Est-ce que A est le «tout» et B est une «partie» de A (vice versa) et la fin de vie de A et B n est au même moment? Oui. Alors mettez la relation d agrégation. 35
Comment créer les diagrammes de classes? Une fois les classes créées, les relier par des relations; Prenez deux classes A et B à la fois et pour toutes les paires de classes, poser les questions suivantes: Est-ce que A est le parent (généralisation) et B est l enfant (spécialisation) (vice versa)? Oui. Alors mettez la relation d héritage. Est-ce que A communique avec B (vice versa)? Oui. Alors mettez la relation d association. 36
Comment créer les diagrammes de classes? Une fois les classes créées, les relier par des relations; Prenez deux classes A et B à la fois et pour toutes les paires de classes, poser les questions suivantes: Est-ce que A utilise B et qu un changement dans B provoque le changement dans A (vice versa)? Oui. Alors mettez la relation de dépendance. 37
Comment créer les diagrammes de classes? Une fois les relations établies, ajuster la direction de navigation; Ne pas tenir compte des relations héritage et dépendance car elles ont une direction de navigation bien définie; Prenez les relations restantes et mettez une flèche dans la direction opposée à la circulation d information et de données. Pour les relations qui sont bidirectionnelles, enlever les flèches. 38
Comment créer les diagrammes de classes? Une fois la navigation réglée, déterminer la multiplicité de chacune des relations; Il y aura deux nombres à déterminer par relation; Poser la question, à l une et à l autre extérmité des relations: Combien y a-t-il d objets créés pour cette classe durant la vie de ce projet? Utiliser le symbole approprié (voir tableau de la page 31) pour représenter le nombre. 39
Exemple Nous allons construire le diagramme des classes ensemble. 40
Fin de la présentation