La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

UML : Diagrammes de Classes Classes, attributs, opérations, méthodes, associations, généralisation, dépendance, interface, …

Présentations similaires


Présentation au sujet: "UML : Diagrammes de Classes Classes, attributs, opérations, méthodes, associations, généralisation, dépendance, interface, …"— Transcription de la présentation:

1 UML : Diagrammes de Classes Classes, attributs, opérations, méthodes, associations, généralisation, dépendance, interface, …

2 Notions de base La classe Les attributs Les symboles dannotation Les opérations Les mots-clés, stéréotypes et propriétés.

3 La Classe : Définition Une classe est un classificateur – Un classificateur UML est un élément de modèle qui décrit des caractéristiques structurelles et comportementales. Une « classe » peut être soit : – une classe conceptuelle (abstraite, au sens Analyse), – une classe logique (indépendante dun langage de programmation), – une classe physique (Java/ C#/ C++).

4 La Classe : Notation Plusieurs notations possibles (normalement un rectangle). Visual Studio 2005 Classe Mode Esquisse Classe Mode Esquisse Visual Paradigm for UML

5 La Classe abstraite : Notation Il existe une notation particulière pour les classes abstraites. Le nom de la classe apparaît en italique.

6 Les Attributs : Définition Les attributs dune classe (également nommés propriétés structurelles en UML) peuvent se représenter de différentes façons : – Texte, par exemple m_driver : CWifiDriver – Ligne dassociation – Une combinaison des deux.

7 Les Attributs : Représentation Association + Texte

8 Les Attributs : Visibilité En notation UML, les marques de visibilité sont : – « + » pour un attribut public – « - » pour un attribut privé

9 Les Attributs : Type Pour les types « classes », on utilisera de préférence une ligne dassociation afin de mieux visualiser les relations entre classes.

10 Les Attributs : Notation pour le format Texte La syntaxe complète de la notation dun attribut sous forme texte est la suivante : Visibilité nom : type [multiplicité] = défaut {chaîne de propriétés} – + m_Driver : CWifiDriver [0..1] = null – - m_Paquets : CPacket [0..*] {ordered} – - m_Paquets : ListePackets {list, ordered} – - DefTimeOut : integer = 20 {readonly} – … Les attributs sont supposés privés si aucune visibilité nest précisée. – m_Paquets : CPacket [0..*] {ordered} est équivalent à – - m_Paquets : CPacket [0..*] {ordered}

11 Les Attributs : Notation pour le format Texte UML permet demployer la syntaxe de nimporte quel langage de programmation pour déclarer les attributs (pourvu que lutilisateur et/ou loutil en soient informés). – - m_Delay : UInt32 – - m_Packets : ArrayList = null – - m_Packets : List = null – private List m_Packets;

12 Les Attributs : Notation pour le format Ligne dassociation Pour les lignes dassociations, on a : – Une flèche de navigabilité pointant de la source (CMonitoring) vers lobjet cible (CWifiDriver) indiquant que CMonitoring a un attribut qui est une référence sur une instance de CWifiDriver

13 Les Attributs : Notation pour le format Ligne dassociation Pour les lignes dassociations, on a : – Une indication de multiplicité du côté cible, mais non du côté source.

14 Les Attributs : Notation pour le format Ligne dassociation – Les multiplicités possibles sont : Classe référencée * Zéro ou plus; plusieurs Classe référencée 1..* Un ou plus Classe référencée De 1 à 40 Classe référencée 5 Exactement 5 Classe référencée 3,5,8 Exactement 3,5 ou 8

15 Les Attributs : Notation pour le format Ligne dassociation Pour les lignes dassociations, on a : – Un nom de rôle (m_Driver) seulement du côté cible pour mentionner le nom de lattribut. – Pas de nom dassociation.

16 Les Attributs : Notation pour le format Ligne dassociation En résumé, une ligne dassociation est définie par : – une flèche de navigabilité, – un nom de rôle (optionnel), officiellement appelée nom dextrémité dassociation, pour indiquer le nom de lattribut, – une valeur de multiplicité, – ainsi quune chaîne de propriétés telle que {ordered} ou {list,ordered}.

17 Les Attributs : Notation pour le format Ligne dassociation Une chaîne de propriétés a la forme suivante : – { * } – Autrement dit, une suite de mots-clés situés à lintérieur daccolades. – Les mots-clés sont : soit définis par UML : ordered, unique, … soit définis par lutilisateur : list (faisant référence à linterface List dun langage orienté objet).

18 Les Attributs : Notation pour le format Ligne dassociation

19 Les Attributs : Format Texte vs Format Ligne dassociation Les types de données courants sont primitifs : – Int, float, double, DateTime, Date, Color, string, PhoneNumber, … – Pour les attributs correspondants à ces types, on utilisera de préférence la notation sous forme de texte. Pour les types de données définis par une classe, on utilisera de préférence la notation sous forme de ligne dassociation. – Permet de mieux visualiser les relations entre classes (accentue les connexions).

20 Symboles dannotation : notes, commentaires, contraintes, … Les symboles dannotation sont possibles dans nimporte quel diagramme UML mais ils sont particulièrement courants dans les diagrammes de classes. Un symbole dannotation a la forme dun rectangle au coin corné relié par une ligne pointillée à lélément annoté.

21 Symboles dannotation : notes, commentaires, contraintes, … Un symbole dannotation peut représenter plusieurs choses, par exemple : – Une note ou un commentaire UML qui, par définition na pas dimpact sémantique. – Une contrainte UML, auquel cas elle doit être placée entre accolades { … }

22 Symboles dannotation : notes, commentaires, contraintes, … Contrainte Note/Commentaire

23 Opérations : Notation Le format complet de la syntaxe officielle dune opération est le suivant : Visibilité nom {liste de paramètres} {chaîne de propriétés} En UML 2.0, le type de retour a été supprimé de la notation. Néanmoins, il est plus judicieux de continuer à utiliser le format avec le type de retour. Visibilité nom {liste de paramètres} : type de retour {chaîne de propriétés}

24 Opérations : Notation Visibilité nom {liste de paramètres} : type de retour {chaîne de propriétés} + StartCapture(delay : integer) : void + StartCapture(delay : integer) + StartCapture(delay) + StopCapture() : void + StopCapture() + GetCurrentPacket() : CPacket + SetInterface(name : string) : boolean - RetrieveInternalPacket()

25 Opérations : Notation

26 Les opérations sont considérées comme publiques lorsque la visibilité nest pas explicitement spécifiée. Les chaînes de propriétés contiennent des informations supplémentaires arbitraires, par exemple les exceptions qui doivent être lancées, lindication quune opération est abstraite, etc. - InternalStartCapture() { Exception : InvalidInterfaceException }

27 Opérations : Notation Outre la syntaxe officielle des opérations, UML permet décrire les signatures des opérations dans nimporte quel langage, Java par exemple, pourvu que le lecteur ou loutil en soient informés. – + StartCapture(delay : integer) : boolean { exception InvalidInterfaceException } – public bool StartCapture(int delay) throws InvalidInterfaceException

28 Opérations vs Méthodes Une opération nest pas une méthode. Une opération UML est une déclaration, avec un nom, des paramètres, un type de retour, une liste dexceptions et éventuellement un ensemble de contraintes sous forme de pré- et de postconditions. Mais ce sont les méthodes qui sont les implémentations.

29 Méthodes : Définition Une méthode UML est limplémentation dune opération. Si des contraintes sont définies, la méthode doit les satisfaire. Une méthode peut être représentée de différentes façons : – Dans les diagrammes dinteractions, par les détails et la séquences des messages; – Dans les diagrammes de classes, avec un symbole de note UML assortie du stéréotype « méthod ».

30 Méthodes : Exemple Utilisation dune note pour le corps de la méthode

31 Méthodes : Exemple Utilisation de la documentation de lopération

32 Méthodes Lorsque nous utilisons une note UML pour représenter une méthode, nous mélangeons les vues statique et dynamique dans le même diagramme. Le corps de la méthode, qui définit un comportement dynamique, ajoute un élément dynamique au diagramme de classes statique.

33 Les Mots-clés Un mot-clé UML permet de catégoriser un élément de modèle avec du texte. Exemple : interface, abstract, actor, ordered, … La plupart des mots-clés sont placés entre guillements (UML 2.0) « … » comme « actor », « interface », … Certains figurent entre accolades { … }, comme {abstract} qui est une contrainte. – Généralement utilisés pour les chaînes de propriétés. – Possibilité davoir des termes définis par lutilisateur

34 Les Stéréotypes Un stéréotype représente un raffinement dun concept de modélisation existant. – = Mécanisme dextension – Stéréotypes prédéfinis par UML (défini au sein dun profil UML) ou définis par lutilisateur – Placés entre guillemets « … » – Exemples : « interface », « actor », « boundary » pour les classes. « destroy » dans les diagrammes de séquences

35 Les Stéréotypes Stéréotype Acteur Stéréotype Boundary Stéréotype Interface

36 Propriétés et Chaînes de propriétés En UML, une propriété est « une valeur nommée qui dénote une caractéristique dun élément ». – Une propriété a un impact sémantique – Peuvent être soit : Prédéfinies par UML : visibilité attr./opér. Définies par lutilisateur – Peuvent être présentées de nombreuses façons Lapproche textuelle consiste à employer la chaîne de propriétés UML { nom1 = valeur1, nom2 = valeur2 } Certaines propriétés nont pas de valeur (booléenne). Exemple : { abstract, visibility = public } Ou : { abstract = true, visibility = public }

37 Relations entre classes La généralisation Lassociation La composition et lagrégation La dépendance

38 La généralisation : Notation En UML, on représente la généralisation (lhéritage) par une ligne continue et une flèche formant un triangle blanc, allant de la sous-classe vers la super-classe.

39 Lassociation: Notation Lassociation est souvent utilisée très tôt dans la modélisation (modélisation du domaine) afin de montrer quil existe une connexion entre deux classes et quil est important de la mémoriser (même très brièvement). Par contre, lassociation pourra dans lapplication devenir : – Une clé étrangère dans une table, – Une référence vers un objet, – … Nous naborderons pas ici lassociation en temps quélément abstrait de connexion. Nous le ferons lorsque nous verrons la modélisation du domaine. Nous nous intéresserons uniquement à la notation.

40 Lassociation est représentée par une ligne continue. Les extrémités de lassociation sont appelés rôles Lassociation: Notation rôles

41 Lassociation: Notation Les rôles peuvent avoir les caractéristiques optionnelles suivantes : – Nom; – Multiplicité; – Navigabilité; – Chaîne de propriétés (contraintes).

42 Lassociation: Notation Attention au sens de lecture CMonitoring receive 0..* CPacket CPacket is ordered

43 Lassociation: Notation Attention au sens de lecture CPacket Is received by 1 CMonitoring

44 Lassociation: Notation Lassociation peut être également nommée. Si aucune flèche nest présente, la convention consiste à lire de gauche à droite ou de haut en bas : CMonitoring capture des paquets.

45 Associations multiples : Notation Il peut exister plusieurs relations (associations) entre deux classes.

46 Associations qualifiées : Définition Une association qualifiée possède un qualificateur qui sert à sélectionner un objet (ou plusieurs) dans un ensemble plus vaste dobjets apparentés. Du point de vue logique, cela se traduit par une recherche sur une clé, par exemple, la recherche dobjets dans une ArrayList.

47 Associations qualifiées : Notation Catalogue produit sans association qualifiée Catalogue produit avec association qualifiée (sur CodeArticle) Qualificateur Nouvelle multiplicité, reflétant la sélection dune seule instance

48 Associations qualifiées : Notation Normalement, le qualificateur est une propriété de la classe cible. Il est possible dutiliser une classe implémentant la logique de sélection.

49 Classes dassociation : Définition Une classe dassociation permet de traiter une association comme une classe, et de la modéliser avec des attributs, des opérations et dautres caractéristiques. En UML, cela est représenté par une ligne pointillée joignant lassociation et la classe dassociation.

50 Classes dassociation : Notation Une personne peut avoir un emploi dans plusieurs entreprises

51 Composition et Agrégation : Définition Lagrégation est un type dassociation flou qui suggère vaguement une relation tout-partie (à linstar de nombreuses associations ordinaires). Elle ne possède pas de sémantique distincte et significative par rapport à une simple association.

52 Composition et Agrégation : Définition La composition, également nommée agrégation composite, est une forme plus contraignante dagrégation tout-partie. Une relation de composition implique les contraintes suivantes : – Une instance de la partie (par exemple doigt) appartient à seulement une instance composite (par exemple main) à la fois. – La partie doit toujours appartenir à un tout composite (pas de doigts flottant librement dans lair). – Lélément composite est responsable de la création et de la destruction de ses composants, soit en réalisant lopération lui-même, soit en collaborant avec dautres objets. De plus, si lobjet composite est détruit, ses composants doivent lêtre aussi (toujours pas de doigts flottant).

53 Composition et Agrégation : Exemple CMonitoring crée une instance de CCapture afin dy stocker les paquets capturés. On a une relation dagrégation par valeur (composition). CCapture est la classe qui stocke et détruit les paquets. Détruire CCapture, cest détruire tous les paquets stockés. CMonitoring dépend de CPacket pour la création dun nouveau paquet. Une fois créé, le paquet est « délégué » à CCapture.

54 Composition et Agrégation : Contre Exemple Impossible !

55 Dépendance : Définition On peut utiliser des lignes de dépendances dans nimporte quel type de diagrammes, mais elles sont particulièrement courantes dans les diagrammes de classes et les diagrammes de package. UML comprend une relation de dépendance générale qui indique quun élément client (classe, package, cas dutilisation, …) a connaissance dun autre élément fournisseur, et que toute modification du fournisseur peut affecter le client. Définition très large ! La dépendance est représentée par une ligne pointillée et fléchée allant du client au fournisseur.

56 Dépendance : Définition Il existe un grand nombre de types de dépendance logiciel pour désigner la situation dans laquelle un élément est couplé à une autre ou en dépend. – Posséder un attribut du type du fournisseur; – Envoyer un message au fournisseur. La visibilité vers le fournisseur peut être : Un attribut, une variable paramètre, une variable locale, une variable globale; ou une visibilité de classe : invocation de méthodes statiques. – Recevoir un paramètre du type du fournisseur – Le fournisseur est une super-classe ou une interface.

57 Dépendance : Notation Pour ce qui est dune variable membre (attribut), on utilisera plutôt lassociation, même si lassociation est une forme de dépendance. Association

58 Dépendance : Notation Pour lhéritage, on utilisera plutôt la généralisation, même si la généralisation est une forme de dépendance.

59 Dépendance : Notation On utilisera plutôt la dépendance de classes dans les cas suivants : – Une variable locale dune méthode : Dépendance

60 Dépendance : Notation – Un paramètre/argument dune méthode :

61 Dépendance : Notation – Lappel dune méthode statique :

62 Dépendance : Notation – Lutilisation dune variable membre/constante statique :

63 Dépendance : Notation Il est possible dajouter une étiquette portant des mots-clés ou des stéréotypes. Généralement utilisé pour faciliter la lecture.

64 Dépendance : Notation Dune façon générale, la dépendance sera utilisée pour montrer le couplage entre deux éléments lorsquil nexiste pas un lien sémantiquement plus riche que la dépendance (ex : association, agrégation, généralisation, …). On essaye également déviter la redondance; par exemple, variable membre et variable locale seulement lassociation (sauf dans des cas très spécifiques).

65 Notions avancées Linterface Classes singleton Classes et interfaces template

66 Interface : Définition Une interface est un ensemble dopérations (de propriétés et d événement) définissant un contrat entre une classe qui utilise linterface et une classe qui implémente linterface. Nous avons donc : – la définition de linterface, – limplémentation de linterface par une classe, – lutilisation de linterface par une autre classe.

67 Interface : Notation Une interface est représentée en UML par un petit cercle. Symbole représentant linterface

68 Interface : Notation En UML, limplémentation dune interface se nomme officiellement réalisation dinterface. Elle se matérialise soit par un trait plein lorsque linterface est affichée comme un cercle. Réalisation dinterface (implémentation)

69 Interface : Notation Elle peut se matérialiser également par une ligne discontinue et une flèche formant un triangle blanc. Réalisation dinterface (implémentation)

70 Interface : Notation En UML, le fait quune classe « utilise » une interface, autrement dit requiert une interface (interface requise), est schématisé avec une relation de dépendance. CNetworkEngine utilise linterface sans se soucier de qui limplémente réellement

71 Interface : Notation La vision « utilisateur », « fournisseur » donne donc ceci : Utilisateur de linterface Fournisseur de linterface (implémentation) Interface

72 Interface : Notation En UML 2.0, une nouvelle notation a été introduite pour les interfaces. UML 1.0 UML 2.0 Notation « Prise de courant » (socket)

73 Classes singletons : Définition Singleton est un pattern que nous verrons plus tard. Une classe singleton est une classe pour laquelle il ne peut exister, à un moment donné, quune seule instance de la classe, jamais plus.

74 Classes singletons : Notation Avec la notation standard, on marque une classe singleton avec un 1 dans le coin supérieur droit de la classe. 1

75 Classes singletons : Notation Si loutil ne le permet pas, il est possible de rajouter un stéréotype.

76 Classes singletons : Remarque Par définition, une classe singleton ne peut avoir quune seule instance à un moment donné. Ne perdons pas de vue que la notion dinstance est liée à un processus et que deux processus différents pourraient chacun avoir une instance dune classe singleton.

77 Classes et interfaces templates : Définition Les langages de programmation orientée objet supportent des types templates, également appelée types paramétrés ou types génériques. Ils sont le plus communément employés pour les types « collections » : ArrayList, LinkedList, Collection, …

78 Classes et interfaces templates : Exemple

79 Classes et interfaces templates : Notation Interface template (montrée comme Décoration) Classe template

80 Exemple : Chaîne de montage avec capteurs : Introduction Une chaîne de montage avec des capteurs. Capteurs

81 Exemple : Chaîne de montage avec capteurs La chaîne de montage utilise différents capteurs : après analyse, on se rend compte que deux types de capteurs existent : – les capteur binaires, du style interrupteur, – et les capteurs linéaires qui renvoient une valeur numérique (niveau de lumière, poids, …) On décide de créer des interfaces pour traduire les fonctionnalités que doivent assumer ces différents capteurs.

82 Exemple : Chaîne de montage avec capteurs

83 Ensuite, on crée les classes qui vont implémenter ces différentes interfaces. Certaines classes supplémentaires apparaissent afin dencapsuler la complexité de certains types de capteurs.

84 Exemple : Chaîne de montage avec capteurs

85 Ensuite vient le cœur du système : la classe qui va gérer les capteurs et vérifier leurs états. Cette classe générera des événements lorsquune différence sera détectée sur un des capteurs : – par exemple, un changement On/Off pour un capteur de style binaire, – ou un changement de valeur pour un capteur linéaire.

86 Exemple : Chaîne de montage avec capteurs Pour ce faire, la classe cœur du système va avoir besoin de mémoriser létat courant de chaque capteur. Le changement ne peut se faire quen comparant la valeur courante et la nouvelle valeur que renvoie le capteur. Comment mémoriser ces différents états (un état par capteur) ?

87 Exemple : Chaîne de montage avec capteurs Le choix se porte sur une seule classe mémorisant létat du capteur (hiérarchie également possible). La classe mémorisant létat dun capteur devra être associée au capteur et offrir les méthodes de vérification de changement. De plus, cette classe aura la connaissance de la diversité des types de capteurs (binaires/linéaires).

88 Exemple : Chaîne de montage avec capteurs

89 CEtatCapteur a la connaissance des différents types de capteurs.

90 Exemple : Chaîne de montage avec capteurs Maintenant, on peut passer au cœur du système, autrement dit la classe qui va gérer les différents capteurs. Cette classe aura besoin dune liste de CEtatCapteur et aura la connaissance de la notion de capteur au plus haut niveau, cest-à- dire linterface CCapteur.

91 Exemple : Chaîne de montage avec capteurs Devient complexe !!! Utilisation de plusieurs schémas

92 Exemple : Chaîne de montage avec capteurs

93

94

95 Etc.. Etc...

96 Exemple : Script multi-routeurs : Introduction Script Conf t Interface e0 no source-routing End write Hosts … …

97 Exemple : Script multi-routeurs : 1 ère classe Première classe : CScript

98 Exemple : Script multi-routeurs : 1 ère classe

99 Exemple : Script multi-routeurs : 2 ème classe Une nouvelle classe va permettre de gérer un routeur (un host) particulier et dexécuter le script sur ce host. Cette classe sappellera CTask.

100 Exemple : Script multi-routeurs : 2 ème classe

101 Utilisation dun stéréotype pour le constructeur

102 Exemple : Script multi-routeurs : Relation entre classes Quelle est le type de relation entre les deux classes ? Généralisation, association, composition,... ? Composition : non, ce nest pas réellement une composition ! Association

103 Exemple : Script multi-routeurs : Relation entre classes

104

105 Exemple : Script multi-routeurs : Besoin du réseau CTask va devoir utiliser une classe afin daccéder au réseau. Plusieurs classes sont disponibles, telles que TcpClient, Socket, … Le choix se porte sur la classe de plus haut niveau, à savoir TcpClient.

106 Exemple : Script multi-routeurs : Besoin du réseau Première solution : TcpClient comme attributDeuxième solution : TcpClient comme classe

107 Exemple : Script multi-routeurs : Besoin du réseau Dépendance de CTask et TcpClient vis-à-vis de IPEndPoint

108 Exemple : Script multi-routeurs : Besoin du réseau

109 Exemple : Script multi-routeurs : … Etc… Etc...

110 Diagrammes de classes : Conclusion Dans notre exemple avec le script et les tâches, on reste sur notre fin : – Comment le script va-t-il lancer les différentes tâches ? – Y aura-t-il un pool ou plusieurs pools de threads ? – Comment les opérations vont-elles se déroulées ? Ces questions nont pas de réponses dans un diagramme de classes car celui-ci montre uniquement la partie statique de la solution.

111 Diagrammes de classes : Conclusion Le diagramme de classes montre la constitution des classes et les relations qui existent entre elles. Nous avons donc besoin dun autre type de diagramme pour montrer la dynamique, lenchaînement des opérations. Ce sont les diagrammes dinteraction.


Télécharger ppt "UML : Diagrammes de Classes Classes, attributs, opérations, méthodes, associations, généralisation, dépendance, interface, …"

Présentations similaires


Annonces Google