UML : Diagrammes de Classes - LOMAG
Transcription
UML : Diagrammes de Classes - LOMAG
Concepts de base UML : Diagrammes de Classes • UML est basé sur différents concepts de base : – Objet, Classe – Lien, Association – Contrainte Objet, Classe, Attribut, Méthode Lien, Association, Cardinalité Généralisation, Composition, Aggrégation, Classe associative, Association qualifiée… • UML propose des notations et des diagrammes – Diagramme de classes (description au niveau modèlisation, cas général) – Diagramme d’objets (description au niveau instance, exemples) Jean -Marie.Favre@imag .fr [email protected] r Diagrammes de Classes Notations simplifiées pour les classes Notation pour les classes Compte numéro : entier solde : réel découvertMax : entier Nom de la classe Compte Attributs numéro solde ... nom type consulterSolde() : entier créditer( somme : entier) débiter( somme : entier) 2 Compte Compte créditer() débiter() ... Méthodes nom paramètre type du résultat Compte Compte numéro solde : réel découvertMax : entier numéro solde ... créditer() débiter() ... consulterSolde() : entier créditer( somme : entier) débiter( somme ) Conventions : { solde > découvertMax } [email protected] r • les noms de classes commencent par une majuscule • les noms d ’attributs et de méthodes commencent par une minuscule Contraintes Diagrammes de Classes 3 [email protected] r Diagrammes de Classes Notations pour les objets 4 Liens (entre objets) Un lien indique une connexion entre deux objets leCompteDePaul : Compte APourCompte> paul : Client leCompteDePaul : Compte numéro = 6688 solde = 5000 découvertMax = -100 APourCompte> pierre : Client c2 : Compte APou leCompteDePaul : Compte marie : Client rCom pte > c3 : Compte Conventions : Convention : • les noms d ’objets commencent par une minuscule et sont soulignés [email protected] r c1 : Compte Diagrammes de Classes 5 • les noms des liens sont des formes verbales et commencent par une majuscule • > indique le sens de la lecture (ex: « paul APourCompte c1 » ) [email protected] r Diagrammes de Classes 6 1 Rôles Associations (entre classes) Chacun des deux objets joue un rôle diffèrent dans le lien Une association décrit un ensemble de liens de même sémantique APourCompte> pierre : Client titulaire APourCompte> Client c1 : Compte compte pierre assume le rôle de titulaire pour le compte c1 c1 assume le rôle de compte pour pierre Diagramme de classes (modèlisation) Compte APourCompte> paul : Client Conventions : c1 : Compte Diagramme d ’objets (instances) APourCompte> pierre : Client • choisir un groupe nominal pour désigner un rôle • si un nom de rôle est omis, le nom de la classe fait office de nom [email protected] r Diagrammes de Classes c2 : Compte AP ou rC om pte > marie : Client 7 c3 : Compte [email protected] r Diagrammes de Classes Liens vs. Associations 8 Cardinalités d’une association • Un lien lie deux objets • Une association lie deux classes • Précise combien d’objets peuvent être liés à un seul objet source • Cardinalité minimale et cardinalité maximale ( C min..C max) • Un lien est une instance d’association • Une association décrit un ensemble de liens 1 Client • Des liens peuvent être ajoutés ou créés pendant l’exécution, (ce n ’est pas le cas des associations) APourCompte> titulaire 0..* comptes « Un client a 0 ou plusieurs comptes» « Un compte a toujours 1 et 1 seul titulaire » Compte APourCompte> paul : Client c1 : Compte APourCompte> pierre : Client c2 : Compte APourC marie : Client [email protected] r Diagrammes de Classes 9 [email protected] r ompte> c3 : Compte Diagrammes de Classes 10 Utiliser les rôles pour «naviguer» Contraintes entre associations Les cardinalités ne permettent pas d’exprimer toutes les contraintes... 1 Client APourCompte> titulaire 0..* Compte comptes 1 Client paul.comptes = {c1} pierre.comptes = {c2,c3} marie.comptes = {} c1.titulaire = paul c2.titulaire = pierre c3.titulaire = pierre [email protected] r titulairePrincipal 0..* Compte 0..* co-titulaires 0..* 1..* titulaires 0..* numéro solde ... APourCompte> paul : Client c1 : Compte APourCompte> pierre : Client c2 : Compte AP ou marie : Client rC om pte > c3 : Compte Diagrammes de Classes 11 … décrire les contraintes en langue naturelle (ou en OCL le langage de contrainte d’UML) [email protected] r (1) Un client ne peut pas être à la fois titulaire principal et co-titulaire d ’un même compte. (2) Les titulaires d ’un compte sont le titulaire principal et les co-titulaires le cas échéant Diagrammes de Classes 12 2 Diagramme de classes Client 1..4 0..* titulaires 1 signataire Compte numéro solde ... 1 0..* CarteBleue Code retraitMax Banque 1..* Diagrammes d’objets 1..* EstAcceptéPar> : Distributeur : CarteBleue numéro nom signataire 0..* 0..* titulaires fred : Client Consortium c4 : Compte : Banque c1 : Compte : Banque : Consortium : CarteBleue signataire 0..1 virementPossible 1 paul : Client titulaires EstAcceptéPar> 0..* Distributeur titulaires pierre : Client 1..* c2 : Compte tit ula : Consortium ire s titulaires (1) Le signataire de la carte bleue associée à un compte est l ’un des titulaires de ce compte. (2) Une carte bleue est acceptée au moins dans tous les distributeurs appartenant aux consortiums de la banque correspondant au compte associé à la carte bleue. (3) Un virement est possible entre deux comptes distincts si les banques correspondantes appartiennent à un même consortium. [email protected] r Diagrammes de Classes 13 marie : Client c3 : Compte signataire : Banque : CarteBleue EstAcceptéPar> sophie : Client : Distributeur EstAcceptéPar> [email protected] r Diagrammes de Classes 14 Diagrammes de classes vs. d’objets Diagrammes de classes vs. d’objets Compte • Un diagramme de classes Client 1..4 0..* – défini l’ensemble de tous les états possibles – les contraintes doivent toujours être vérifiées Banque 1..* numéro solde ... titulaires 1..* numéro nom 0..* signataire 1 1 0..* Consortium CarteBleue 0..* • Un diagramme d’objets virementPossible 0..1 Code retraitMax – décrit un état possible à un instant t, un cas particulier – doit être conforme au modèle de classes EstAcceptéPar > 1 0..* Distributeur 1..* • Les diagrammes d’objets peuvent être utilisés pour – expliquer un diagramme de classe (donner un exemple) – valider un diagramme de classe (le "tester") > : Cli ent : Cli ent : Cli ent [email protected] r Diagrammes de Classes 15 s : i g n a t a i r e : : : > : : : : t i t u tl ia ti r u le s a i r e s > : : : Cli ent t i tt iu tl a u li r a ie rs e s : Co mp t :e Co mp : te Co mp > > te t1 : B a n q :u Be a :n Diqs trib u uet e ur : Co ns orti um : Co : ns Bo r t i aum :n Diqs trib u uet e ur : Cli ent : Cli ent : Cli ent : Cli ent t i t u tl ia ti r u le s a i r e s : Co mp t :e Co mp : te Co mp > > te : [email protected] r t2 : B a n q :u Be a n: Di s q trib u ete u ur : Co ns orti um : Co ns orti um : Cli ent : Cli ent : Cli ent : Cli ent Personne "Super classe" t i t u tl ia ti ur le as i r e s Femme "Sous classes" : B a n q : u B e a :n Diqs trib u uet e ur : Co ns orti um : ... : Co ns orti um t 3 Diagrammes de Classes 16 Les sous-classes « héritent » des propriétés des super-classes (attributs, méthodes, associations, contraintes) Compte Compte solde Compte Epargne * Banque CompteEpargne {solde > -5000} tauxIntérêt Diagrammes de Classes 17 [email protected] r solde tauxIntérêt * Banque créditer() débiter() calculIntérêts () CompteEpargne ajouterIntérêts () [email protected] r : : Co mp t :e Co mp : te Co mp > >t e Héritage créditer() débiter() Homme : : Généralisation / Spécialisation Une classe peut être la généralisation d’une ou plusieurs autres classes. Ces classes sont alors des spécialisations de cette classe. : : : {tauxIntérêt < 100} {solde > -5000 et tauxIntérêt < 100} Diagrammes de Classes 18 3 Vision ensembliste Vision ensembliste : tout objet d’une sous-classe appartient également à la super-classe => inclusion des ensembles d’objets Compte Synthèse des concepts de base • Classe • Association – attribut – méthode • Généralisation – rôle – cardinalité c3 c2 o1 ce2 ce3 Compte Epargne Compte o3 o2 o5 Objets CompteEpargne Diagrammes de Classes 19 o1 o2 o2 c1 [email protected] r o3 o1 o4 c2 ce1 Liens Inclusion ensembliste [email protected] r Diagrammes de Classes 20 Exemple Exemple subordonnés parents * Personne directeur 1..* employés 0..2 paul mère 0..1 0..1 Société parents père 0..1 0..1 Personne enfants [email protected] r Diagrammes de Classes 21 Diagrammes de classes: concepts additionels Concepts à utiliser à bon escient, lorsque nécessaire et uniquement lorsque nécessaire... mari e joe enfants enfants parents * 0..1 (1) Le directeur de tout employé est employé dans la même société. (2) Dans toute société il y a au moins une personne qui n ’est dirigée par personne (le directeur de la société). (3) Une personne ne peut pas être directeur d ’elle même ... épouse mère épouse 0..1 sexe époux pére époux [email protected] r Diagrammes de Classes 22 Rappels • • • • • UML est un ensemble de notations De nombreuses utilisations possibles Notation simple vs. complexe Notation plus ou moins formelle Notation extensible [email protected] r Diagrammes de Classes 24 4 Savoir s'adapter S'adapter • au niveau d'abstraction • au domaine d'application • à ses collègues • aux outils utilisés + # - Visibilité des éléments • Restreindre l'accés aux éléments d'un modèle • Contrôler et éviter les dépendances entre paquetages – pour écrire des diagrammes UML, – pour générer du code, des schémas de bases de données, etc. ... Savoir lire vs. savoir écrire Ingénierie vs. Retro-ingénierie [email protected] r Diagrammes de Classes 25 + # - public visible protégé visible dans la classe et ses sous-classes privé visible dans la classe uniquement • N'a pas de sens dans un modèle abstrait • Utile lors de la conception. • N'utiliser que lorsque nécessaire. [email protected] r Diagrammes de Classes 26 Déclaration d'attributs [ visibilité ] nom [card] [ : type ] [ = valeur-initiale ] [ { props... } ] exemples: • age • - age : Integer = 0 • # age [0..1] : Integer • # numsecu : Integer {frozen} • # motsClés [*] : String {addOnly} Déclaration d'opérations [ visibilité ] nom [ ( params ) ] [ : type ] [ { props... } ] params := [ in | out| inout ] nom [ : type] [ =defaut ] [{ props... } ] exemples: • getAge() • + getAge() : Integer • - updateAge( in date : Date ) : Boolean • + getAge() : Integer {isQuery} • Adapter le niveau de détail au niveau d'abstraction [email protected] r Diagrammes de Classes 27 • Adapter le niveau de détail au niveau d'abstraction [email protected] r Diagrammes de Classes 28 Navigation Composition Notion intuitive de "composants" et de "composites" Association unidirectionnelle On ne peut naviguer que dans un sens 1 Voiture titulaire Client 1 * [email protected] r Diagrammes de Classes 29 Roue Pneu 1 Jante Compte Ce détail n’est a priori utile que lors de la conception En cas de doute, ne pas mettre de flêche !!! 4 composition = cas particulier d’association + contraintes décrivant la notion de "composant"... [email protected] r Diagrammes de Classes 30 5 Composition Contraintes liées à la composition : 1. Un objet composant ne peut être que dans un seul objet composite 2. Un objet composant n’existe pas sans son objet composite 3. Si un objet composite est détruit, ses composants aussi 1 4 Voiture Roue Composition Contraintes: 1. Un objet composant ne peut être que dans un seul objet composite 2. Un objet composant n’existe pas sans son objet composite 3. Si un objet composite est détruit, ses composants aussi 1..* Pneu Document 1..* Section Chapitre 1 0..* Jante Figure 0..1 [email protected] r Diagrammes de Classes 31 [email protected] r Diagrammes de Classes 32 Composition 1 1..* Document 1..* Chapitre 0..* Composition Section Point 3..* Polygone 1 x y Figure 1..* Cercle rayon : section : chapitre : section : figure : document : chapitre Les composants forment un arbre : section : figure [email protected] r Diagrammes de Classes 33 Autres notations pour la Composition 1 Voiture 1 Voiture Roue sièges Siège Voiture [email protected] r Volant 0..1 4 Roue * 1 Voiture Volant volant : Volant roue [4] : Roue sièges [*] : Siège Diagrammes de Classes 34 Associations intra vs. inter composites Volant 4 * [email protected] r * Voiture Constructeur 1 0..1 Roue 4 1 * Constructeur 1 Roue 4 * sièges : Siège Diagrammes de Classes 35 Volant [email protected] r Diagrammes de Classes 36 6 Exemple Aggregation aggregation = cas particulier d’association + contraintes décrivant la notion d'appartenance... ? Polygone succ 1 1 initial 1 3..* pointsLiés * Point * x y deplacer() supprimer() * Partage possible Pas de concensus sur la signification exacte de l'aggrégation Utiliser avec précautions (ou ne pas utiliser...) deplacer() supprimer() [email protected] r * Figure Point Diagrammes de Classes 37 [email protected] r Diagrammes de Classes 38 Classes associatives Classes associatives employé Pour associer des attributs et/ou des méthodes aux associations => classes associatives Personne société 0..2 * Société Emploi salaire employé Personne société 0..2 * augmenter() Société e1 salaire = 10000 Emploi s1 salaire e2 employé augmenter() salaire = 2000 employé pierre s1 e3 Le nom de la classe correspond au nom de l’association [email protected] r Diagrammes de Classes 39 Le salaire est une information correspondant • ni à une personne, • ni à une société, mais à un emploi (un couple personne -société). salaire = 16000 marie employé [email protected] r Diagrammes de Classes 40 Classes associatives Classes associatives employé Pour une association donnée, deux objets ne peuvent être connectés que par un seul lien correspondant à cette association. Personne société Emploi Emploi> e1 salaire Emploi> p1 Société 0..2 * p1 Ci-dessus, une personne peut avoir deux emplois, mais pas dans la m ême société Cette contrainte reste vraie dans le cas où l’association est décrite à partir d ’une classe associative. e1 p1 salaire = 10000 employé Personne s1 1 : Emploi 0..2 Emploi salaire * société Société 1 Ci-dessus, une personne peut avoir deux emplois dans la même société salaire = 2000 [email protected] r s1 e2 : Emploi p1 s1 s1 Diagrammes de Classes 41 [email protected] r Diagrammes de Classes 42 7 Classes associatives Virement Ou ? montant Virement employé * compteDébité 1 * Les classes associatives sont des associations mais aussi des classes. Elles ont donc les mêmes propriétés et peuvent par exemple être liées par des associations. montant * compteDébité Classes associatives Personne société Société * * 1 compteCrédité Emploi compte compte * responsable salaire augmenter() compteCrédité subordonnés [email protected] r Diagrammes de Classes 43 * [email protected] r Diagrammes de Classes 44 Contraintes sur les associations Contraintes prédéfinies sur les associations. Par exemple : • { frozen } : fixé lors de la création de l ’objet, ne peut pas changer • { ordered } : les éléments de la collection sont ordonnés • { addOnly } : impossible de supprimer un élément 0..1 Synthèse sur les associations sens de lecture Nom de rôle roleA ClasseA Nom d’association <AssociationX Cardinalités 0..* ClasseB {frozen} AssociationX lignes RelevéDe Compte * {ordered,addOnly} Composition (ou aggregation Ligne Opération attributZ ) Navigation Contrainte Il est possible de définir de nouvelles contraintes [email protected] r Diagrammes de Classes 45 Diagrammes de Classes 46 Exemple Graphe 1 Noeud 1 * succs Arc Repertoire * * {ordered,frozen} Associations qualifiées Un qualifieur est un attribut ou un ensemble d'attributs dont la valeur sert à déterminer l'ensemble des instances associées à une instance via une association. * {frozen} Polygone Classe associative [email protected] r preds nom 0..1 Fichier 2..* {ordered} Poignées Points 0..1 * Les attributs du qualifieur sont des attributs de l'association. [email protected] r Diagrammes de Classes 47 [email protected] r Diagrammes de Classes 48 8 Associations vs. Associations qualifiées Banque ncpt * Personne 0..1 clients Banque * Cardinalité des Associations Qualifiées Banque nc 0..1 Compte Personne * ncpt Client Echiquier ncpt Banque nl : NumLigne nc : NumCol 1 Case 1 Personne * * Client Banque * Banque Personne ncpt * * titre * [email protected] r Diagrammes de Classes 49 [email protected] r Association1901 membres titre:Titre Employe Diagrammes de Classes 50 Exemple * * * * Personne * 1 Héritage et redéfinition Une sous classe peut redéfinir une propriété, à condition toutefois de rester compatible avec la définition originale Figure Titre = enum {President, Tresorier, Secretaire } surface() déplacer() membres fred membres a1 sylvia #Tresorier #President ahmed #Secretaire joe [email protected] r Diagrammes de Classes 51 Polygone Cercle surface() [email protected] r Une classe peut hériter de plusieurs super-classes Héritage simple vs. héritage multiple Une classe peut elle hériter de plusieurs classes ? Classification simple vs. classification multiple Un objet peut-il être simultanément instance de plusieurs classes? Classification statique vs. classification dynamique Un objet peut-il changer de classe pendant l’exécution ? Appareil Électrique Chauffage Électrique Diagrammes de Classes 52 Les modèles orientés-objets ne font pas tous les mêmes hypothèses Appareil PoelA Mazout Carre surface() Points liés à l’héritage et à la classification Héritage multiple Chauffage surface() FourA MicroOndes Certains langages de programmation interdisent l’héritage multiple [email protected] r Diagrammes de Classes 53 [email protected] r Diagrammes de Classes 54 9 Points liés à l’héritage et à la classification Exemple Sauf si le contraire est indiqué explicitement, en UML les hypothèses par défaut sont : parents 0..2 Héritage multiple une classe peut hériter de plusieurs classes Classification simple un objet est instance d’une seule classe Classification statique un objet est créé à partir d’une classe donnée et n’en change pas [email protected] r Diagrammes de Classes 55 * Personne * * mère 0..1 Femme [email protected] r enfants 0..1 épouse 0..1 époux 0..1 père Homme Diagrammes de Classes 56 Exemple 1 Compte créditer() débiter() Opération date montant {addOnly,ordered} * solde destinataire 1 {montant<0} Débit CompteEpargne Retrait Virement Crédit {montant>0} Retrait Espèce tauxIntérêt ajouterIntérêts () Retrait Guichet [email protected] r Retrait * Distributeur 1 Distributeur Diagrammes de Classes 57 10