1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.
-
Upload
veillantif-cano -
Category
Documents
-
view
104 -
download
1
Transcript of 1 Introduction à UML Françoise Schlienger Remise à niveau 2004-2005.
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’