Vous êtes sur la page 1sur 60

Diagrammes de Classes et Diagrammes dObjets

Mme D.BOULAHROUZ boukredera@hotmail.com

Introduction
le diagramme de classes est Considr comme le plus important de la modlisation oriente Objet Exprime la structure interne dun systme. permet de fournir une reprsentation abstraite des objets du systme qui vont interagir ensemble pour raliser les cas dutilisation.

nest pas adapt (sauf cas particulier) pour dtailler, dcomposer, ou illustrer la ralisation dun cas dutilisation particulier.
Il sagit dune vue statique Lintrt : modliser les entits du systme dinformation. Il permet de reprsenter lensemble des informations finalises qui sont gres par le domaine. permet de modliser les classes du systme et leurs relations indpendamment dun particulier dun langage de programmation particulier (Chaque langage de Programmation Orient Objets
donne un moyen spcifique dimplmenter le paradigme objet (pointeurs ou pas, hritage multiple ou pas, etc.)

Concepts de base
UML est bas sur diffrents concepts de base :
Objet, Classe
Lien, Association , Hritage Contrainte

UML propose des notations et des diagrammes


Diagramme de classes (description au niveau modlisation, cas gnral) Diagramme dobjets (description niveau instance, exemples)

Rappel
Encapsulation

Paquetages Visibilit

Encapsulation et Paquetages
Lencapsulation est un mcanisme consistant rassembler les donnes et les mthodes au sein dune structure en cachant limplmentation de lobjet, cestdire en empchant laccs aux donnes par un autre moyen que les services proposs. Lencapsulation permet de dfinir des niveaux de visibilit des lments dun conteneur (classe)

Paquetages: Lors de la modlisation dapplications complexes, les classes sont regroupes dans des paquetages ddis des domaines ou activits particulires.

Exemple de paquetages

Client

Facturation

Interaction entre packages = dpendance entre packages : toute modification dun package entrane des modifications du package point

Comptabilit

Visibilit
le motcl public ou le caractre + : Proprit ou classe visible partout. Aucun caractre, ni motcl: Proprit ou classe visible uniquement dans le paquetage o la classe est dfinie. Le motcl protected ou le caractre #: Proprit ou classe visible dans la classe et par tous ses descendants. Le motcl private ou le caractre : Proprit ou classe visible uniquement dans la classe. Recommandation Dans la pratique, lorsque des attributs doivent tre accessibles lextrieur il est prfrable que cet accs ne soit pas direct mais se fasse par lintermdiaire doprations.

Visibilit des proprits dune classe

Elments de Base

Les Classes

Les Attributs
Les Oprations

Reprsentation Graphique

Nom dune Classe


Le nom de la classe doit tre significatif et complet. Il commence par une majuscule. Sil est compos de plusieurs mots, la premire lettre de chaque mot doit tre une majuscule et les espaces blancs sont limins.

Syntaxe : [ strotype ]

[<Nom_du_paquetage_1>::...::<Nom_du_paquetage_N>:: ]

<Nom_de_la_classe> [ { [abstract], [<auteur>], tat], [<date>], ... } ]

Quelques exemples de noms de classe :

Les attributs
Syntaxe :
<nom attribut> : visibilit> [/] <nom_<type> [ '['<multiplicit>']' [{<contrainte>}] ] [ = <valeur_par_dfaut> ]

Liste des attributs de la classe avec les modifications daccs ventuels. Certains attributs napparaissent pas directement, ils seront dduits partir des relations entre classes.

Attribut de classe (static en Java ou en C++) qui garde une valeur unique et partage par toutes les instances de la classe. Un attribut de classe nest donc pas une proprit dune instance mais une proprit de la classe et laccs cet attribut ne ncessite pas lexistence dune instance.

Attribut drivs (symbole \) peuvent tre calculs partir dautres attributs et de formules de calcul

Exemple

Les mthodes

Les mthodes (Remarques)


La direction peut prendre lune des valeurs suivante : in : Paramtre dentre pass par valeur. Les modifications du paramtre ne sont pas disponibles pour lappelant. Cest le comportement par dfaut.

out : Paramtre de sortie uniquement. Il ny a pas de valeur dentre et la valeur finale est disponible pour lappelant. inout : Paramtre dentre/sortie. La valeur finale est disponible pour lappelant. Le type du paramtre (<Type>) peut tre un nom de classe, un nom dinterface ou un type de donn prdfini. Les proprits (<proprits>) correspondent des contraintes ou des informations complmentaires comme les exceptions, les prconditions, les postconditions ou encore lindication quune mthode est abstraite (mot-clef abstract), etc.

Exemple

Classes versus Objets

Classe et Mthode Abstraites


Une mthode est dite abstraite lorsquon connat son entte mais pas la manire dont elle peut tre ralise

Relations entre classes


Association Agrgation Composition Dpendance Hritage

Notion dassociation
Association = Relation entre deux classes (association binaire) ou plus (association naire), Indique quil peut y avoir des liens entre des instances des classes associes.
Deux faons de modliser une association

Notion dassociation
Association = Relation entre deux classes (association binaire) ou plus (association naire), Indique quil peut y avoir des liens entre des instances des classes associes.
Deux faons de modliser une association

Multiplicit ou cardinalit
La multiplicit associe une terminaison dassociation, dagrgation ou de composition dclare le nombre dobjets susceptibles doccuper la position dfinie par la terminaison dassociation
Exemple : Un objet de la classe Voiture est compos dau moins trois roues et dau plus dix roues.

Les principales multiplicits normaliss sont : plusieurs : * ou 0..* exactement n : n au minimum n : n..* entre n et m : n..m Remarque

Il faut noter que, pour les habitus du modle entit/relation, les multiplicits sont en UML lenvers (par rfrence Merise) pour les associations binaires et lendroit pour les n-aires avec n > 2.

Exemple

Travail faire : Faites une description de ce diagramme de classe en explicitant en une phrase chacune des multiplicits.

Exemple

Un box peut tre lou par au maximum un seul contrat ou peut rester non lou. Un contrat concerne la location d'un seul box la fois. Un box peut tre vide ou contenir au maximum 2 vhicule. Un vhicule est autoris aller dans un box (au minimum) ou plus. Un contrat ne concerne qu'un seul locataire. Un locataire peut souscrire plusieurs contrat mais doit en avoir souscrit au moins un.

Association binaire
Lassociation et ses diffrents ornements.

Exemple : Rle, multiplicit et nom de lassociation sans restriction de navigabilit.

Association oriente : Navigabilit


La navigabilit indique sil est possible de traverser une association.

Deux modlisations quivalentes.


Avec une classe Point, il est maladroit de reprsenter une classe Polygone avec des attributs de type Point: il faut matrialiser cette proprit par une ou plusieurs associations avec la classe Point.

Association oriente : Navigabilit


La navigabilit indique sil est possible de traverser une association.

Association rflexive

Lassociation rflexive entre classes a pour principale fonction de structurer les objets dune mme classe. asymtrique (parent de) Il est conseill dajouter les rles des extrmits elle permet de crer une hirarchie entre les objets sinon elle partitionne les instances de la mme classe. symtrique et non transitive (amie de) la fois symtrique et transitive (a le mme ge) les objets sont regroups en classes dquivalence.

Association avec contraintes


Les contraintes sont des expressions qui prcisent le rle ou la porte d'un lment de modlisation (elles permettent d'tendre ou prciser sa smantique).

Sur une association, elles apportent plus dinformations; elles peuvent par exemple restreindre le nombre d'instances vises (ce sont alors des "expressions de navigation").
Les contraintes peuvent s'exprimer en langage naturel.

Graphiquement, il s'agit d'un texte encadr d'accolades.

Exemple

Association drive
Les associations drives sont des associations redondantes, qu'on peut dduire d'une autre association ou d'un ensemble d'autres associations. Elles permettent d'indiquer des chemins de navigation "calculs", sur un diagramme de classes. Elles servent beaucoup la comprhension de la navigation (comment joindre telles instances d'une classe partir d'une autre). Souvent un ensemble de contraintes, exprimes en OCL, est ajout une association drive pour dfinir les conditions de drivation.

Association drive: exemple

ClasseAssociation
Une association peut tre raffine et avoir ses propres proprits, qui ne sont disponibles dans aucune des classes quelle lie. Une classe association est une classe comme une autre qui peut entretenir des relations avec dautres classes

ClasseAssociation: exemple

Ici, NumCommande + RfProduit Quantit

Association qualifie
Restreindre la porte de lassociation quelques lments cibls (comme un ou plusieurs attributs) de la classe. Ces lments cibls sont appels un qualificatif. Qualificateurs (qualifiers) Un qualificateur est un attribut ou un groupe dattributs qui servent filtrer une population instanciable. Un qualificateur caractrise lassociation. Il est reprsent par un petit rectangle sur la terminaison de lassociation.
Un compte dans une banque appartient au plus deux personnes. Autrement dit, une instance du couple {Banque , compte} est en association avec zro deux instances de la classe Personne. Mais une personne peut possder plusieurs comptes dans plusieurs banques. Cest--dire quune instance de la classe Personne peut tre associe plusieurs (zro compris) instances du couple{Banque , compte}.

Association qualifie

-Une instance du triplet {Echiquier, range, colonne} est en association avec une instance unique de la classe Case. Inversement, une instance de la classe Case est en association avec une instance unique du triplet {Echiquier, range, colonne}.

Association qualifie: exemple

Association NAire
La gestion de ce type dassociation est trs dlicate (multiplicit). Sont trs peu utilises. utiliser des associations binaires combines avec des contraintes du langage OCL. Exemple: un tudiant suit entre cinq et dix modules. Pour un groupe dtudiants donn (entre 4 et 25), un module est assur enseignant par un seul enseignant.

Association NAire: exemple

Relation dagrgation
Une agrgation est une forme particulire dassociation. La signification de cette forme simple dagrgation est uniquement conceptuelle. Elle ne contraint pas la navigabilit ou les multiplicits de lassociation. Elle nentrane pas non plus de contrainte sur la dure de vie des parties
Une agrgation peut notamment (mais pas ncessairement) exprimer :

qu'une classe (un "lment") fait partie d'une autre ("l'agrgat"),


qu'un changement d'tat d'une classe, entrane un changement d'tat d'une autre, qu'une action sur une classe, entrane une action sur une autre.

A un mme moment, une instance d'lment agrg peut tre lie plusieurs instances d'autres classes (l'lment agrg peut tre partag).

Relation dagrgation: exemple

Relation de composition
La composition, appel galement agrgation composite , est une agrgation particulire. La relation de composition dcrit une contenance structurelle entre instances. llment composite est responsable de la cration, de la copie et de la destruction de ses composants. la multiplicit du ct composite ne doit pas tre suprieure 1

Les cycles de vies des lments (les "composants") et de l'agrgat sont lis : si l'agrgat est dtruit (ou copi), ses composants le sont aussi.
A un mme moment, une instance de composant ne peut tre lie qu' un seul agrgat. Les "objets composites" sont des instances de classes composes.

Relation de composition: exemple

Relation de dpendance
Une dpendance est une relation unidirectionnelle exprimant une dpendance smantique entre des lments du modle. La dpendance est souvent strotype pour mieux expliciter le lien smantique entre les lments du modle. Cest une Relation d'utilisation unidirectionnelle (une modification de l'lment dont on dpend, peut ncessiter une mise jour de l'lment dpendant). Les strotypes normaliss sont: friend (on accorde une visibilit spciale la classe source dans la cible), drive la source est calcule partir de la cible), appel (appel dune opration par une autre), instantiate (une opration de la source cre une instance de la cible),

send (une opration envoie un signal vers lment cible),


trace (la cible est une version prcdente de la source), refine , copie et create .

Relation de dpendance: exemple

La relation de dpendance lie deux ou plusieurs classes ensemble. Une flche en pointill lie la classe client (queue de la flche) son fournisseur (pointe de la flche). Une modification du fournisseur affecte en principe tous les clients

Relation dHritage
Les concepts abstraits permet de simplifier la reprsentation. Le principe dabstraction est assur par le concept de lhritage.

Relation dHritage: exemple

Le principe de substitution permet de dterminer si une relation d'hritage est bien employe pour la classification : "Il doit tre possible de substituer n'importe quel instance d'une superclasse, par n'importe quel instance d'une de ses sous-classes, sans que la smantique d'un programme crit dans les termes de la super-classe n'en soit affecte." Si Y hrite de X, cela signifie que "Y est une sorte de X" (analogies entre classification et thorie des ensembles).

Relation dHritage : Proprit


Une relation dhritage Possde les caractristiques de classes parents (sauf visibilit =) Redfinir les mthodes de la classe parent (mme signature) Toutes les associations de la classe parent sappliquent, par dfaut, aux classes drives. Polymorphisme hritage multiple Ce mcanisme est largement considr comme une source derreurs, en raison de la complexit des relations entre attributs quil introduit. Remarque: Lors de la redfinition dun caractristique dune classe dans une sousclasse, il est fortement conseill de le faire uniquement en restreignant son domaine de dfinition.

Interface
les classes permettent de dfinir en mme temps un objet et son interface (un autre type de classeur). Il peut sagir de linterface complte dun objet, ou simplement dune partie dinterface qui sera commune plusieurs objets. Le rle de ce classeur, strotyp interface , est de regrouper un ensemble de proprits et doprations assurant un service cohrent (dune classe, paquetage ou composant). Une interface est reprsente comme une classe except labsence du mot-clef abstract (car linterface et toutes ses mthodes sont, par dfinition, abstraites) et lajout du strotype interface . Une interface doit tre ralise par au moins une classe.
Graphiquement, cela est reprsent par un trait discontinu termin par une flche triangulaire et le strotype realize . Une classe (classe cliente de linterface) peut dpendre dune interface (interface requise). On reprsente cela par une relation de dpendance et le strotype use .

Une classe peut supporter plusieurs interfaces (disjointes ou chevauches)

Interface (suite)

Interface (suite)

Interface (suite)

Exemple

Exemple

Elaboration dun diagramme de classes


Il y a au moins trois points de vue qui guident la modlisation : Le point de vue spcification met laccent sur les interfaces des classes plutt que sur leurs contenus. Le point de vue conceptuel capture les concepts du domaine et les liens qui les lient. Il sintresse peu la manire ventuelle dimplmenter ces concepts et relations et aux langages dimplmentation. Le point de vue implmentation, le plus courant, dtaille le contenu et limplmentation de chaque classe.

Trouver les classes du domaine tudi

Cette tape empirique (base sue lexprience) se fait gnralement en collaboration avec un expert du domaine. Les classes correspondent gnralement des concepts du domaine.

Trouver les associations entre les classes


Les associations correspondent souvent des verbes, ou des constructions verbales, mettant en relation plusieurs classes, comme est compos de , pilote , travaille pour .

Attention, mfiez vous de certains attributs qui sont en ralit des relations entre classes.

Trouver les attributs des classes


Trouver les attributs des classes. Les attributs correspondent souvent des substantifs, ou des groupes nominaux, tels que la masse dune voiture ou le montant dune transaction . Les adjectifs et les valeurs correspondent souvent des valeurs dattributs. Vous pouvez ajouter des attributs toutes les tapes du cycle de vie dun projet (implmentation comprise). Nesprez pas trouver tous les attributs ds la construction du diagramme de classes.

Suite
Organiser et simplifier le modle en liminant les classes redondantes et en utilisant lhritage.

Vrifier les chemins daccs aux classes


Itrer et raffiner le modle. Un modle est rarement correct ds sa premire construction. La modlisation objet est un processus non pas linaire mais itratif.

Les Diagrammes dObjets

Vous aimerez peut-être aussi