Académique Documents
Professionnel Documents
Culture Documents
I. Objet
D’après Rumbaugh, un objet est une entité du monde réel dotée d’un identifiant unique ayant
une frontière bien circonscrite qui dispose d’un état et d’un comportement. L’état d’un objet
représente l’ensemble de ses données propres correspondant aux valeurs de ses attributs. Le
comportement d’un objet est une collection des moyens communément appelés opérations
qu’il utilise pour effectuer les tâches qui lui sont affectées. Les opérations sont généralement à
l’origine de la modification de l’état d’un objet.
Exemple 1 : Etats et comportements
Téléphone
Etat Comportement
Numéro de série Allumer()
Marque Eteindre()
allumé PrendrePhoto()
Produit
Etat Comportement
Numéro Enregistrer()
Quantité en stock augmenterStock(nbre)
Désignation afficherPrixTotalStock()
Prix unitaire afficherAlerte()
Exemple 2 : Objets ayant une existence propre
Le capteur que Khadidja tient en main
La station de base qui est située au quartier Aronn
Le devis proposé par l’entreprise ITSoftExpert au mois de Juin
1
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
Awa : Employé
Est
Identifiant : 25692
Nom : Awa
dateNaissance : 02/02/1992
typeSamrtP022 : TypeTéléphone
Identifiant : 5465
libellé : Smartphone
2
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
c) Diagramme d’objets
Le diagramme d’objet est le concept UML utilisé pour représenter les objets et les relations
qui existent entre eux. Il est généralement employé pour mettre en évidence un exemple des
situations complexes entre concepts du domaine à l’étude. Ce diagramme est souvent
considéré comme facultatif car le diagramme de classe est souvent suffisant pour décrit le
système étudié.
Exemple :
samsungS5 Awa92cm : Téléphone
NuméroSérie : 2560NND7
Marque : Samsung
Allumé : 0 Possède
Awa : Employé
Est
Identifiant : 25692
Nom : Awa
dateNaissance : 02/02/1992
serviceIT033 : Service
Identifiant : 336
Nom : Télécommunications
II. Classe
Selon Rumbaugh, une classe est un modèle abstrait regroupant les objets possédant les mêmes
caractéristiques à savoir les mêmes attributs, opérations et relations. A cet effet, la classe
décrit la structure d’un objet (aspect statique), son comportement (aspect dynamique) et ses
relations. Plus simplement, une classe est le type d’un objet.
Exemple : Awa, Aziza, khadidja sont des instances de la classe Employé
Exercice d’application : comment classifier les animaux suivants ? Poisson, chat, requin,
loup et mouton.
Réponse : Animal, AnimalTerrestre/AmimalMarin, AnimalDomestique/AminialSauvage,
AnimalComestible/AnimalNonComestible, Mamifère/Poison…).
3
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
a) Classe et objets
Comme signalé précédemment, un objet est une instance d’une classe. UML emploie dont la
relation de dépendance stéréotypée par le mot clef « instantiate » pour illustrer la relation
entre une classe et ses objets.
Exemple :
Service
Identifiant
« instantiate » Nom : « instantiate »
Télécommunications
4
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
Dans ce formalisme, la multiplicité décrit le nombre de valeurs dans une collection qui peut
être un tableau ou une liste. Quand elle est définie, la valeur initiale indique, la valeur que
prend une instance d’une classe à sa création.
Exemple: email: string [0..1], , point :float[2], droite: point[2..*], pays: String = Cameroun
Notons qu’il peut arriver qu’un attribut appartienne à une classe et non à une instance
singulière de la classe. Dans ce cas, il est dit statique et est souligné lors de sa représentation.
e) Opération dans une classe
Comme précisé précédemment, une opération est un service contenu dans une classe. La
syntaxe formelle des opérations est :
[-,#,+,~] nomOpération (direction nomParamètre1 :Type=valeur,…) : typeRetour.
Les noms des opérations obéissent également la convention lowerCamelCase. Il est conseillé
d’utiliser une expression verbale pour les nommer. La direction indique si le paramètre sur la
signature de l’opération est une variable d’entrée (in param), d’entrée/sortie (inout param),
de sortie (out param) et de retour (return param).
Exemple: chercherServiceParNom(nom:string):void, calculePrixTotalProduitStock():float.
Notons également qu’à l’instar des attributs statiques, les opérations statiques sont notées en
souligné.
f) Notation UML d’une classe
La notation plus généralisée d’une classe en UML est :
« nom stéréotype » « entity »
nomClasse Service
Visibilité Attribut1 : type1 - identifiant : int
Visibilité Attribut2 : type2 - nom : string
… …
Visibilité nomOpération1() : type1 +chercherServiceParNom(nom:string):void
Visibilité nomOpération2() : type2 - ajouterUnService(nom:string) : void
… +nombreService():int
tags (métadonnées) tags
auteur auteur=khadidja
date,… date=23/09/2016
Ou
5
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
nomClasse Service
Attribut1 identifiant
Attribut2 … nom
…
nomOpération1() chercherServiceParNom()
nomOpération2() ajouterUnService()
nombreService()
…
III. Association
Une association illustre une relation sémantiquement durable entre deux classes. L’instance d’une
association est un lien qui met en relation les objets des classes qui interviennent dans ladite
association.
Exemple 1: un employé travaille dans un service. Ici, l’association travailler met en relation
les objets de la classe service et ceux de la classe employé.
Exemple 2 : Représentation graphique associations
Le nom d’une association (voir exemple 2 section III) doit être une phrase verbale explicite
permettant de lire l’association dans les deux sens quoique privilégiant implicitement un seul
sens de lecture.
6
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
a) Multiplicité
La multiplicité détermine le nombre d’objets (min..max) qui peuvent participer à une relation
avec un autre objet dans le cadre d’une association. Les multiplicités permettent de
contraindre le nombre d’objets intervenant dans les instanciations des associations. Les
multiplicités couramment utilisés sont :
0..1 = optionnel (mais pas multiple)
1 = exactement 1, 7=exactement 7
0..* = * = quelconque
1..* = au moins 1
2..8= 2 à 8, 4..*=au mois 4
Exemples :
7
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
b) Rôle
En UML, chaque extrémité d’une association peut être nommée c'est à dire enrichie d’un rôle.
Le rôle décrit la façon dont les instances d’une classe voient les instances d’une autre classe
au travers d’une association.
Un rôle a la même nature qu'un attribut dont le type serait la classe situé à l'autre extrémité.
Par conséquent, le rôle peut être public, privée, protégé etc.
Un rôle est généralement désigné par une forme nominale ou verbale. Le rôle est placé à une
extrémité du lien d’association, il se distingue ainsi du nom de l’association situé au centre du
lien.
Sur l’exemple exemple 2 de la section III, les objets de la classe société perçoit ceux de la
classe personne comme des employés. Un autre exemple est le suivant :
8
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
c) Navigabilité
La direction (voir exemple 2 section III) indique que chaque objet employé contient une liste
de modules qu’il enseigne mais, les objets de la classe module ne peuvent stocker la liste des
employés.
Par défaut, les associations ont une navigation bidirectionnelle. Cependant, une navigation
bidirectionnelle est complexe à réaliser par les développeurs. Il convient de les éviter dans la
mesure du possible. Un autre exemple d’une association unidirectionnelle entre la commande
et le produit est donné par :
Sur cet exemple, la terminaison du côté de la classe Commande n’est pas navigable : cela
signifie que les instances de la classe Produit ne stockent pas de liste d’objets du type
Commande. Inversement, la terminaison du côté de la classe Produit est navigable : chaque
objet commande contient une liste de produits.
d) Associations et attributs
Une technique utilisée pour représenter les associations sont les attributs. Elle est plus visible
pendant la phase de développement où les associations sont générées en tant qu’attributs. Par
exemple, les associations à multiplicité multiple sont souvent représenter par les tableaux ou
les collections (liste,…).
Exemple :
e) Classes d’association
Pour faire porter des informations par une association, on UML emploie une classe-
association. Une classe d’association comporte au même titre que les classes ordinaires les
attributs et les opérations. Graphiquement, on la relie à l’association avec des pointillés.
9
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
Exemples
f) Héritage
L’héritage lie une classe générale (Super-classe) et les classes plus spécifiques (sous-classes)
par une relation de généralisation. Les sous-classes « héritent » des propriétés de leur super-
classe et peuvent comporter des propriétés spécifiques supplémentaires.
L’héritage est un concept qui est à l’origine du polymorphisme. Une opération polymorphique
est une opération qui possède plusieurs implémentations. Un exemple est donné est :
10
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
Pour identifier si une relation est une composition, elle doit remplir les deux critères suivants :
la multiplicité ne doit pas être supérieure à un du côté du composite.
le cycle de vie des parties doit dépendre de celui du composite.
11
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
h) Association dérivée
Une association dérivée est conditionnée ou peut être déduite à partir d’une autre association.
Souvent un ensemble de contraintes, exprimées en OCL, est ajouté à une association dérivée
pour définir les conditions de dérivation. Graphiquement, une association dérivée est
symbolisée par l’ajout d’un slash avant le nom de l’association. Dans l’exemple de la figure
ci-dessous, l’association dérivée /emploi indique que la personne qui travaille pour une
entreprise est la même que celle qui est associée à l’un de ses départements.
i) Qualification
En cas de cardinalité non finie à une extrémité d'une association, si les instances situées à
cette extrémité sont qualifiable, il est possible d'utiliser cette qualification pour passer de la
cardinalité maximale non finie à une cardinalité maximale finie.
La qualification d'une instance est une valeur ou ensemble de valeurs qui permettent de
retrouver cette instance. Une qualification est souvent un index, par exemple pour retrouver
un élément dans un tableau, ou une clef, par exemple pour retrouver une ligne dans une base
de données relationnelle.
12
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
diverses (visibilités, etc.). Ces contraintes sont utiles mais se révèlent insuffisantes. Il y a
donc nécessité de les compléter par un outil plus évolué permettant de prendre en compte les
spécificités des éléments du modèle.
OCL est un langage formel proposé par IBM à UML 1.1 pour l’expression des contraintes. Il
se situe entre le langage naturel et le langage mathématique et se veut être simple et non
ambigu.
13
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
V. Les packages
Un package (paquetage) ou namespace en anglais est un mécanisme d’organisation
permettant de regrouper les éléments UML tels que classes, interfaces, acteurs, cas
d’utilisation, etc. et éventuellement d’autres paquets en établissant des frontières
sémantiques du modèle où les noms des éléments au sein d’un même package sont uniques.
La relation de dépendance entre packages rend visibles les éléments publics de l’un package
au sein d’un autre. Elle met en évidence le fait qu’un élément d’un package utilise un élément
d’un autre package. Lorsque les éléments des packages différents portent le même, UML
propose la notation nomPackage::nomÉlément pour les distinguer. C’est d’ailleurs
cette technique qu’utilise le langage java pour lever l’ambiguïté sur les namespace.
Package::SousPackage::NomClasse. Exemple : java.lang.String.
14
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
15
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
16
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
public class A {
private ArrayList <B> rb;
public A() {rb = new ArrayList<B>();}
public ArrayList <B> getArray()
{return(rb);}
public void addB(B b){ }
}
public class B {
private A ra;
public B() {}
public A getA() { return (ra); }
public void setA(A a){ this.ra=a; }
public void addA(A a){ }
}
public class A {
private ArrayList <B> rb;
public A(){ rb = new ArrayList<B>();}
}
public class B {
...//B ne connaît pas l'existence de A
}
class A {
private B b;
}
class A {
private B b;
private X x;
(getter et setter publics)
}
class A {
private List<C> c;
}
class C {
private B b;
private X x;
}
Transformé en :
17
IUT de Ngaoundéré : Année académique 2017-2018
Cours UML, Chapitre 2, Analyse statique
18
IUT de Ngaoundéré : Année académique 2017-2018