1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

32
1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005 Départem entInform atique

Transcript of 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

Page 1: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

1

Introduction à UML

Françoise Schlienger

Remise à niveau

2004-2005

Département Informatique

Page 2: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

2

Les méthodes objet

OBJECTORY(1992)

FUSION(1994)

CLASSERELATION

(1991)

OOA(S&M)(1991)

OMT(1991)

G. BOOCH(1991)

OOM(1991)

OBJETSNATURELS

(1991)

MERISE 2(1993)

EUROMETHODE

UML

MERISE +

1990-1995

Actuellement

Page 3: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

3

UML : Unified Modeling Language

• octobre 94 : Grady Booch (Méthode Booch) et James Rumbaugh (OMT) commencent à unifier leurs 2 méthodes.

--> Unified Method 0.8

• fin 1995 : Ivar Jacobson introduit certains concepts de sa méthode (OOSE)

Langage de modélisation unifié avec pour objectifs de :

- ne plus faire évoluer les méthodes de manière indépendante les unes des autres,

- unifier la sémantique et les notations et amener ainsi une stabilité sur le marché "orienté-objet "

- rassembler leurs efforts pour résoudre des problèmes qu'aucune des trois méthodes ne peut bien résoudre.

Page 4: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

4

UML : Unified Modeling Language

• octobre 1996 : UML 0.9 (Unified Modeling Language)diffusion au sein de la "communauté informatique" et intégration des remarques.

• 16 janvier 1997 : le document UML a été soumis à l'OMG (Object Management Group). .

• 14 novembre 1997 : adoption d'UML 1.1 comme standard par l'OMG.

• Novembre 1998 : UML 1.3

• 2000 : UML 1.4

Sites officiels : www.omg.org

www.uml.org

Page 5: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

5

Bibliographie

• Modélisation objet avec UML

Pierre-Alain Muller, Eyrolles 1997, Eyrolles 2000

• Intégrer UML dans vos projets

N. Lopez, J. Migueis, E. Pichon, Eyrolles 1997

• UML pour l'analyse d'un système d'information

Chantal Morley, Jean Hugues, Bernard Leblanc , Dunod 2000

• Le guide de l'Utilisateur UML

Grady Booch, James Rumbaugh, Ivar Jacobson, Eyrolles 2000

• Le processus unifié de développement logiciel

Grady Booch, James Rumbaugh, Ivar Jacobson, Eyrolles 2000

Page 6: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

6

UML : généralités

UML propose :

• des éléments de modélisation qui représentent les abstractions du système en cours de modélisation

• des éléments de visualisation qui procurent des projections textuelles ou graphiques permettant la manipulation des éléments de modélisation

Page 7: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

7

Diagrammes de classes / Diagrammes d’objets

Françoise Schlienger

Remise à niveau

2002/2003

Page 8: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

8

Il existe plusieurs niveaux de notation :

a) niveau sans détail

PERSONNE

PERSONNE

NomPrénomAdresse

ModifierAdresse()

b) niveau détail d'analyse

On y précise : le type des variables (integer, string, date …) les valeurs par défaut les signatures des opérations éventuellement, le niveau de visibilité : + public (accessible par tout utilisateur) par défaut

- privé (accessible seulement par la classe elle-même) # protégé (accessible seulement par les descendants)

c) niveau de détail d'implémentation

Notation des classes

Page 9: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

9

• Attribut [ visibilité ] NomAttribut [: type] [= <valeur par défaut>]

•Opération[ visibilité ] NomOpération [(liste Paramètres)] [: typeRetour]

Paramètre[direction] Nom : type[ = valeur par défaut]

direction : in | out | inout (par défaut : in)

Notation des attributs et opérations

NOMDECLASSE

Opération()

Attributs

+EstSur(in p :POINT): boolean

-Longueur :integer =5

SEGMENT

Page 10: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

10

Opérations / méthodes

• Une opération définit un service qui peut être demandé à n’importe quel objet de la classe.

• Une méthode est une implémentation d’une opération.

• La méthode associée à une opération fournit un algorithme exécutable. Cet algorithme est donné dans un langage de programmation ou dans du texte structuré.

Page 11: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

11

Classe-1 Classe-2

Nom d’association

rôle-1 rôle-2

PERSONNE EstEnfantDe

Mère

Fils

PERSONNE APPARTEMENTLoue >

SonPropriétaire SesPropriétés

Propose >

SonLocataire SaLocation

Association entre classes

^

Page 12: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

12

Exactement 1 1Exactement n nPlusieurs (0 ou plus) *Au plus 1 0..11 ou plus 1..*Cardinalité spécifiée 1..2 4

Nombre de propriétaires Nombre d ’appartements proposés

Cardinalité d’une association

PERSONNE APPARTEMENTPropose >1 *

Page 13: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

13

Association : un exemple (1)

Un appartement n’a qu’un propriétaire et une personne peut proposer à la location plusieurs appartements (sous-entendu, elle peut aussi ne pas proposer d’appartement).

Remarque : on précisera toujours les noms des rôles. Le nom de l ’association est facultatif.

PERSONNE APPARTEMENT

Propose >1 0..*

SonPropriétaire SesPropriétés

Page 14: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

14

Association : un exemple (2)

PERSONNE APPARTEMENT

Propose >1 0..*

SonPropriétaire SesPropriétés

-Code-Adresse-Surface-MontantLoyer

APPARTEMENT a un attribut implicite SonPropriétaire : PERSONNE

Un constructeur « complet » d’appartement doit avoir en paramètres le Code, l ’Adresse, la Surface, le MontantLoyer d ’un nouvel appartement mais aussi une instance de la classe PERSONNE.

Page 15: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

15

Un attribut dérivé est un attribut calculé. Cela signifie qu’il peut être calculé à partir d ’autres informations du système à n’importe quel moment.

(et non pas qu’il a été calculé à un moment donné).

Exemple : pour une personne, l’attribut Age est un attribut calculé à condition que sa DateDeNaissance ait été enregistrée.Un attribut calculé est noté /Attribut

Par contre : si on met à jour une QuantitéEnStock par ajout ou suppression, sans conservertout l’historique des mouvements, alors QuantitéEnStock n’est pas une rubrique calculée.

L’attribut QuantitéEnStock est dit « modifiable » (par défaut tout attribut est « modifiable »)

« gelé » (« frozen ») est réservé aux attributs qui, une fois initialisés, ne peuvent être modifiés.

Attribut dérivé

Page 16: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

16

Une association dérivée est une association déduite d’une autre.

Une association dérivée ne se justifie que pour faciliter des traitements.

Association dérivée

ENTREPRISE SERVICE EMPLOYESesServices SesEmployés

SesEmployés

SonService

/Emploi

Le nom de l’association est précédé d’un /

Page 17: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

17

Contrairement à Merise, UML autorise :

• Une classe avec une seule instance

• Des attributs multivalués.

• Les attributs calculés (attributs dérivés) précédés par un / On précise alors, dans une note, la règle de calcul.

• Les associations dérivées (stéréotype « derive ») qui faciliteront un traitement.

Les identificateurs explicites (identifiants) ne sont pas indispensables. Ils ne sont pas soulignés (seuls les attributs de classe sont soulignés).

On peut les préciser à l’aide d’une note.

On peut représenter des « paramètres » (Merise) par le biais de variables de classe.

Remarques sur les classes

{identifier}

Page 18: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

18

Contrairement à Merise ...

Exemple

+AjouterPersonne(in P : PERSONNE)

Emploie>

ENTREPRISE

-Nom-Adresse

+ModifierAdresse()+AjouterPersonne()

1

PERSONNE

-Nom-Prénoms-Adresse-DateDeNaissance/-Age

+CréerPersonne()+GetCoordonnées()+CalculerAge 

0..*

SesEmployés SonEntreprise

. {Age=DateCourante - DateNaissance}

Page 19: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

19

C ’est un type particulier d ’association "composé-composant" ou "partie de"

Agrégation : 0..1

EQUIPE SPORT JOUEUR

Composition :

DOSSIER DOCUMENT

Agrégation - Composition

Le document n’existe qu’en tant que partie du dossier.La destruction du composite entraîne la destruction des composants.Un objet ne fait partie que d ’un seul composite à la fois.

SonEquipeSesEquipes

1 *

SonDossier SesDocuments

SesParticipants

**

Page 20: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

20

Elles permettent de regrouper des opérations et des attributs communsà une ou plusieurs classes données et de préciser que les classes les plus spécifiqueshéritent des classes les plus générales.

COMPTE-BANCAIRE-Crédit : integer-Débit : integer….

+Déposer(S:integer)+Retirer(S:integer)+GetSolde()

COMPTE-EPARGNE-Taux : float

+CalculerIntérêts()

Généralisation Spécialisation

Relations de généralisation-spécialisation

Page 21: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

21

Qualité d’une association qui permet le passage d’une classe vers une autre.En général, on peut naviguer dans les 2 sens. On peut cependant limiter la navigabilité :

Exemple :CLASSE-1 CLASSE-2

Nom d’association

Il doit être facile de passer directement d’un produit à son fabriquant.La commande d’un produit fait référence à l ’adresse de « SonRéalisateur »

Il y a demande de service (GetAdresse) de PRODUIT à FABRIQUANT.

Navigabilité d’une association

1..* 1SonRéalisateu

rSesProduits

FABRIQUANT

-Adresse

+GetAdresse()

PRODUIT

-QttéRéappro

+Commander()

Page 22: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

22

Un attribut de classe décrit une valeur commune à une classe d'objets dans son ensemble.

Une opération de classe est une opération sur la classe elle- même. La plus commune est celle destinée à créer des nouvelles instances de classe.

Attributs et opérations de classe sont soulignés. (Attention : ne pas les confondre avec les identifiants de Merise.)

ARTICLE

-Référence-PrixHT-NbInstances

+CalculerPrixTTC()+Créer()+CompterInstances()

Attributs et opérations de classes

Page 23: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

23

Classe et Opération abstraites / Polymorphisme

• Classe qui ne peut avoir aucune instance directe ; on écrit son nom en italique.

• Une opération abstraite ne fournit d’implémentation qu’au travers d’une instance d’une classe fille de celle qui la contient.

• Remarque : les noms des éléments abstraits sont écrits en italique ou préfixés par Abs.

FORME

-Nom : string

+CalcSurface()+GetNom()

Page 24: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

24

RECTANGLE

- Long : float- Larg : float

+CalcSurface() + Type()

CERCLE

- Rayon : float

+CalcSurface()+ Type()

Opérationspolymorphes

Classe et Opération abstraites / Polymorphisme

FORME

-Couleur : string

+CalcSurface()+Type()

return ’rectangle’ return ’cercle’return Long * Larg

return PI * Rayon * Rayon

Page 25: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

25

Attributs et opérations implicites (1)

ETUDIANT

Nom : string

Pour chaque attribut on ajouteimplicitement :

Ces opérations ne sont pas obligatoirement publiques. SetNom peut ne pas exister.

ETUDIANT

Nom : string

<constructeur>Etudiant ()<destructeur>~Etudiant()

<sélecteur ou accesseur>GetNom () : string<modificateur>SetNom (N:string) : bool

Pour la classe on ajoute implicitement :

Page 26: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

26

Attributs et opérations implicites (2)

ETUDIANT

Nom : string

ETUDIANT

Nom : stringSonGroupe : GROUPE

<sélecteur ou accesseur>GetSonGroupe () :GROUPE<modificateur>SetSonGroupe(G:GROUPE)RetirerSonGroupe() … si le minimum est à 0

GROUPE

Numéro : int

SonGroupe

0..1

Pour chaque association navigable

de cardinalité 0..1, 1..1 on ajoute :

un attribut

… et les opérations correspondantes

Page 27: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

27

Remarque concernant la navigation

ETUDIANT

Nom : string

GROUPE

Numéro : integer

SonGroupe

0..1

Pour un étudiant on peut obtenir son groupe, mais il n’est pas prévud’obtenir la liste des étudiants à partir du groupe.

SesEtudiants

0..*

Page 28: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

28

Attributs et opérations implicites (3)

ETUDIANT

Nom : string

ETUDIANT

Nom : stringSesOptions : ensemble(OPTION)

<modificateur>AjouterOption(O:OPTION):boolRetirerOption(O:OPTION):boolGetSesOptions() : ensemble(OPTION)

OPTION

Libellé : string

SesOptions

0..*

Pour chaque association navigable

de cardinalité 0..*, 1..* on ajoute : un attribut de type ensemble,

… et les opérations

pour gérer ce type ensemble.

Page 29: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

29

Remarque concernant la navigation

ETUDIANT

Nom : string

OPTION

Libellé : string

SesEtudiants SesOptions

0..* 0..*

Nouvelle hypothèse :

Pour un étudiant on peut obtenir ses options et on veut pouvoir obtenir la liste des étudiants à partir d’une option.

En ajoutant une flèche vers SesEtudiants, on ajoute implicitement SesEtudiants : ensemble (ETUDIANT) dans OPTION et les opérations correspondantes.

Page 30: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

30

Diagrammes d’objets

• Ils modélisent les instances d’éléments qui apparaissent sur les diagrammes de classe.

• Ils montrent un ensemble d ’objets et leurs relations à un moment donné.

– Instances nommées

– Instances anonymes

– Instances avec valeurs d ’attributs

Bouton2:RECTANGLE

Longueur : float = 13.5Nom : string = “bouton-poussoir”

Largeur : float = 3.2

:CERCLE

Bouton1:RECTANGLENomInstance:NOMCLASSE

:NOMCLASSE

Page 31: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

31

MATIERE

libellé : string

Diagramme d’objets (exemple)

E1:ENSEIGNANT

nom = ‘Dupont’

E2:ENSEIGNANT

nom = ‘Martin’

E3:ENSEIGNANT

nom = ‘Duval’

M3:MATIERE

libellé = ‘Système’

M1:MATIERE

libellé = ‘Génie logiciel’

M2:MATIERE

libellé = ‘Réseau’

enseigne >* 1..*

ENSEIGNANT

nom : string

Page 32: 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.

32

MATIERE

libellé : string

Diagramme d’objets (nécessité de préciser l’association)

enseigne

enseigne

enseigne

enseigne >* 1..*

ENSEIGNANT

nom : string0..1 *

estResponsable >

estResponsable >

estResponsable >

E1:ENSEIGNANT

nom = ‘Dupont’

E2:ENSEIGNANT

nom = ‘Martin’

E3:ENSEIGNANT

nom = ‘Duval’

M3:MATIERE

libellé = ‘Système’

M1:MATIERE

libellé = ‘Génie logiciel’

M2:MATIERE

libellé = ‘Réseau’