1 introduction à uml françoise schlienger remise à niveau 2004-2005

Post on 03-Apr-2015

104 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Introduction à UML

Françoise Schlienger

Remise à niveau

2004-2005

Département Informatique

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

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.

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

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

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

7

Diagrammes de classes / Diagrammes d’objets

Françoise Schlienger

Remise à niveau

2002/2003

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

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

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é.

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

^

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 *

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

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.

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é

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 /

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}

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}

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

**

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

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()

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

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()

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

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 :

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

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..*

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.

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.

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

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

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’

top related