Vous êtes sur la page 1sur 60

2.

VUE STATIQUE

2.1 DIAGRAMMES DE CLASSES

Modélisation Objet avec UML


DIA G R A M M E D E C L A S S E S

 Le système est composé d'objets qui interagissent entre eux et avec les acteurs
pour réaliser ses cas d'utilisation.

 Le diagramme de classes exprime la structure statique du système en termes de


classes et de relations entre ces classes.

Intérêt : modéliser les entités du système d’information

Modélisation Objet avec UML 32


CLASSE

 Une classe est la description formelle d’un ensemble d’objets ayant une
sémantique et des caractéristiques communes.

o Classe Personne
o Classe Voiture

 Tout système orienté objet est organisé autour des classes.

 Un objet est la concrétisation d’une classe : une instance d’une classe.

o Samba et Mariama sont des instances de la classe Personne


o Citroen C4 est une instance de la classe Voiture

Modélisation Objet avec UML 33


CLASSE : REPRÉSENTATION GRAPHIQUE

 Responsabilités : ensemble des tâches devant être assurées par la classe, mais
pour lesquelles on ne dispose pas encore assez d'informations.

 Exceptions: les situations exceptionnelles devant être gérées par la classe.

Modélisation Objet avec UML 34


NOTION D’ATTRIBUT

Modélisation Objet avec UML 35


NOTION D’ATTRIBUT: VISIBILITÉ

Modélisation Objet avec UML 36


NOTION D’ATTRIBUT

Modélisation Objet avec UML 37


NOTION D’ATTRIBUT

Modélisation Objet avec UML 38


NOTION D’OPÉRATION

Modélisation Objet avec UML 39


NOTION D’OPÉRATION

Modélisation Objet avec UML 40


NOTION D’OPÉRATION

Modélisation Objet avec UML 41


NOTION D’ASSOCIATION

Modélisation Objet avec UML 42


ASSOCIATION VS LIEN

Modélisation Objet avec UML 43


MULTIPLICITÉ

Modélisation Objet avec UML 44


MULTIPLICITÉ

Modélisation Objet avec UML 45


ASSOCIATION BINAIRE

 Une association qui relie 2 classes est qualifiée de binaire.

 Une association binaire est matérialisée par un trait plein entre les classes associées.

 Elle peut être ornée d'un nom, avec éventuellement une précision du sens de lecture ( ou
).

 Le nom d’une association doit respecter la convention de nommage des classeurs:


commencer par une majuscule.

 Une association réflexive indique qu’une instance de la classe impliquée peut être reliée à elle-
même ou à d’autres instances de cette même classe. Amitié

Modélisation Objet avec UML 46


ASSOCIATION N-AIRE

 Une association n-aire lie plus de deux classes.

 Une association n-aire se représente par un grand losange avec un chemin partant vers
chaque classe participante. Le nom de l'association, le cas échéant, apparaît à proximité du
losange.

Modélisation Objet avec UML 47


NAVIGABILITÉ D’UNE ASSOCIATION

 La navigabilité permet de spécifier dans quel(s) sens il est possible de traverser


l'association à l'exécution.

 Représentation graphique

Par défaut, une association est navigable dans les deux sens.

Modélisation Objet avec UML 48


GÉNÉRALISATION ET HÉRITAGE

 La généralisation est une relation entre une classe générale (classe de base ou classe
parent) et une classe spécifique (sous-classe ou classe enfant).

 La classe spécifique hérite de la structure et du comportement de la classe générale


(attributs et opérations).

 La généralisation s'applique à d'autres éléments du langage comme les paquetages, les


acteurs ou les cas d'utilisation.

 Dans le langage UML, ainsi que dans la plupart des langages objet, cette relation de
généralisation se traduit par le concept d'héritage. On parle également de relation
d'héritage.

L’heritage permet la classification des objets.

Modélisation Objet avec UML 49


GÉNÉRALISATION ET HÉRITAGE (2)

 Propriétés principales de l'héritage :


o la classe enfant possède toutes les caractéristiques de ses classes parents, mais elle ne
peut accéder aux caractéristiques privées de cette dernière;
o toutes les associations de la classe parent s'appliquent aux classes dérivées;
o une classe enfant peut redéfinir (même signature) une ou plusieurs méthodes de la
classe parent. Sauf indication contraire, un objet utilise les opérations les plus
spécialisées dans la hiérarchie des classes, même quand l’objet est perçu comme un
objet de classe parent : c’est le principe du polymorphisme d’h’éritage ;
o une instance d'une classe peut être utilisée partout où une instance de sa classe
parent est attendue;
o une classe peut avoir plusieurs parents, on parle alors d'héritage multiple.

Modélisation Objet avec UML 50


HÉRITAGE : CONTRAINTE D’EXCLUSION

Modélisation Objet avec UML 51


HÉRITAGE : CONTRAINTE DE TOTALITÉ

Modélisation Objet avec UML 52


HÉRITAGE : CONTRAINTE DE PARTITION

Modélisation Objet avec UML 53


HÉ R IT A G E C O M P L E T

Modélisation Objet avec UML 54


AGRÉGATION

 Une agrégation est une forme particulière d'association.

 Elle représente la relation d'inclusion d'un élément dans un ensemble : relation tout/partie.

 L'ensemble est l'agrégat et la partie l'agrégé.

 Seule une association binaire peut être une agrégation.

Modélisation Objet avec UML 55


COMPOSITION

 La relation de composition ou agrégation composite décrit une contenance structurelle


entre instances.

 La destruction et la copie de l'objet composite (l'ensemble) impliquent respectivement la


destruction ou la copie de ses composants (les parties).

 Une instance de la partie appartient toujours à au plus une instance de l'élément


composite:
la multiplicité du côté composite ne doit pas être supérieure à 1 (i.e. 1 ou 0..1).

 Seule une association binaire peut être une composition.

Modélisation Objet avec UML 56


AGRÉGATION OU COMPOSITION?

Modélisation Objet avec UML 57


HÉRITAGE OU COMPOSITION?

Modélisation Objet avec UML 58


CLASSE-ASSOCIATION

 Une association peut être rafinée et avoir ses propres attributs, qui ne sont disponibles dans
aucune des classes qu'elle lie.

 Comme dans le modèle objet seules les classes peuvent avoir des attributs, cette association
devient alors une classe appelée classe-association.

 Une classe-association possède les caractéristiques des associations et des classes : elle se
connecte à deux ou plusieurs classes et possède également des attributs et des opérations.

 Une classe-association est une classe comme les autres et peut à ce titre participer à d’autres
associations.

 Le classeur d’une classe-association peut être relié au losange par une ligne discontinue pour
représenter une association n-aire dotée d’attributs, d’opérations ou d’associations.
Modélisation Objet avec UML 59
ASSOCIATION RÉFLEXIVE SUR CLASSE-ASSOCIATION

Modélisation Objet avec UML 60


HÉRITAGE : SPÉCIALISATION D’UNE CLASSE-ASSOCIATION

Modélisation Objet avec UML 61


AS S O C IA T I O N Q U A L IF IÉ E

Modélisation Objet avec UML 62


ASSOCIATION QUALIFIÉE

Modélisation Objet avec UML 63


ASSOCIATION QUALIFIÉE

Modélisation Objet avec UML 64


LIENS MULTIPLES

Modélisation Objet avec UML 65


CONTRAINTES DYNAMIQUES

Modélisation Objet avec UML 66


PR O P R I É T É S E T C O N T R A IN T E S S U R L E S A S S O C IA T IO N S

Modélisation Objet avec UML 67


CONTRAINTE D’ASSOCIATION

Modélisation Objet avec UML 68


CONTRAINTE D’ASSOCIATION

Modélisation Objet avec UML 69


ASSOCIATION N-AIRE : CONTRAINTE D’UNICITÉ

Modélisation Objet avec UML 70


ASSOCIATION N-AIRE: CONTRAINTE D’UNICITÉ

Modélisation Objet avec UML 71


CL A S S E -A S S O C IA T I O N , A S S O C IA T I O N N -A I R E O U Q U A L I F I É E ?

Modélisation Objet avec UML 72


CLASSE-ASSOCIATION, ASSOCIATION N-AIRE OU QUALIFIÉE?

Modélisation Objet avec UML 73


ELABORATION D’UN DIAGRAMME DE CLASSES

1. Trouver les classes du domaine étudié


o Souvent des concepts ou des substantifs du domaine

2. Trouver les associations entre classes


o Souvent des verbes mettant en relation plusieurs classes

3. Trouver les attributs des classes


o Souvent des substantifs (noms) correspondant à un niveau de granularité plus fin que
les classes.
o Les adjectifs et les valeurs correspondent souvent à des valeurs d'attributs.

4. Organiser et simplifier le modèle


o Eliminer les classes redondantes
o Utiliser l'héritage

5. Itérer et raffiner le modèle


o La modélisation objet est un processus non pas linéaire, mais itératif.

Modélisation Objet avec UML 74


IMPLÉMENTATION EN JAVA

public class A {
public String a1;
package String a2;
protected String a3;
public class A { private String a4;
public A() { ... } protected public void op1() { ... }
void finalize() throws Throwable { public void op2() { ... }
super.finalize(); }
...
}
}

public interface A {
...
}

public interface Ia {
public abstract class A { ...
... }
}
public class A implements Ia {
...
}

Modélisation Objet avec UML 75


ASSOCIATION UNIDIRECTIONNELLE 1 VERS 1

public class A {

private B rb;

public void addB( B b ) {


if( b != null ) {
this.rb=b;
}
}
}

public class B {
... // La classe B ne connaît pas l'existence de la classe A
}

Modélisation Objet avec UML 76


ASSOCIATION BIDIRECTIONNELLE 1 VERS 1
public class A {
private B rb;
public void addB( B b ) {
if( b != null ){
// si b est déjà connecté à un autre A
if ( b.getA() != null ) {
// cet autre A doit se déconnecter
b.getA().setB(null);
}
this.setB( b );
b.setA( this );
}
}
public B getB() { return( rb ); }
public class B {
private A ra; public void setB( B b ) { this.rb=b; }
public void addA( A a ) { }
// si a est déjà connecté à un autre B
if( a != null ) {
if (a.getB() != null) {
// cet autre B doit se
déconnecter
a.getB().setA( null );
}
this.setA( a );
a.setB( this );
}
}
public void setA(A a){ this.ra=a; }

public A getA(){ return(ra); } }

Modélisation Objet avec UML 77


ASSOCIATION UNIDIRECTIONNELLE 1 VERS PLUSIEURS

public class A {
private ArrayList <B> rb;

public A() { rb = new ArrayList<B>(); }

public void addB(B b){


if( !rb.contains( b ) ) {
rb.add(b);
}
}
}

public class B { ... // B ne connaît pas


l'existence de A }

Modélisation Objet avec UML 78


ASSOCIATION BIDIRECTIONNELLE 1 VERS PLUSIEURS
public class A {
private ArrayList <B> rb;
public A() { rb = new ArrayList<B>(); }
public ArrayList <B> getArray() {return(rb);}
public void remove(B b){rb.remove(b);}
public void addB(B b){
if( !rb.contains(b) ){
if (b.getA()!=null)
b.getA().remove(b);
b.setA(this);
rb.add(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){
if( a != null ) {
if( !a.getArray().contains(this)) {
if (ra != null)
ra.remove(this);
this.setA(a);
ra.getArray().add(this);
}
}
}
}

Modélisation Objet avec UML 79


AUTRES

Association 1 vers N
 Dans ce cas, il faut utiliser un tableau plutôt qu'un vecteur. La dimension du tableau étant
donnée par la cardinalité de la terminaison d'association.
 En principe, les respect des cardinalités est implémenté par de l’algorithmique

Agrégations
 Les agrégations s'implémentent comme les associations.

Composition
 Une composition peut s'implémenter comme une association unidirectionnelle.

Modélisation Objet avec UML 80


IMPLÉMENTATION EN SQL

 Il est possible de traduire un diagramme de classe en modèle relationnel.

 A moins d'avoir respecté une méthodologie adaptée, la correspondance entre le modèle


objet et le modèle relationnel n'est pas une tâche facile.

 L'expressivité d'un diagramme de classes est bien plus grande que celle d'un schéma
relationnel.

 De nombreux AGLs (Ateliers de Génie Logiciel) comportent maintenant des fonctionnalités


de traduction automatique de diagramme de classes en code SQL.

Modélisation Objet avec UML 81


CLASSE AVEC ATTRIBUTS

 Chaque classe devient une relation.

 Les attributs de la classe deviennent des attributs de la relation.

 Si la classe possède un identifiant, il devient la clé primaire de la relation; sinon, il faut


ajouter une clé primaire arbitraire.

create table relation_A (


num_relation_A integer primary key,
att1 text,
att2 integer
);

Modélisation Objet avec UML 82


ASSOCIATION 1 VERS 1

 Pour représenter une association 1 vers 1 entre deux relations, la clé primaire de l'une des
relations doit figurer comme clé étrangère dans l'autre relation.

create table relation_A (


id_A integer primary key,
attA1 text, attA2 integer
);

create table relation_B (


id_B integer primary key,
num_A integer references relation_A,
attB1 text,
attB2 integer
);
Modélisation Objet avec UML 83
ASSOCIATION 1 VERS PLUSIEURS

 Pour représenter une association 1 vers plusieurs, on procède comme pour une association
1 vers 1, excepté que c'est forcément la relation du côté plusieurs qui reçoit comme clé
étrangère la clé primaire de la relation du côté 1.

create table relation_A (


id_A integer primary key,
num_B integer references relation_B,
attA1 text, attA2 integer
);

create table relation_B (


id_B integer primary key,
attB1 text, attB2 integer
);

Modélisation Objet avec UML 84


ASSOCIATION PLUSIEURS VERS PLUSIEURS

 Pour représenter une association du type plusieurs vers plusieurs, il faut introduire une
nouvelle relation dont les attributs sont les clés primaires des relations en association et
dont la clé primaire est la concaténation de ces deux attributs.

create table relation_A (


id_A integer primary key,
attA1 text, attA2 integer
);

create table relation_B (


id_B integer primary key,
attB1 text, attB2 integer
);

create table relation_A_B (


num_A integer references relation_A,
num_B integer references relation_B,
primary key (num_A, num_B)
);

Modélisation Objet avec UML 85


CLASSE-ASSOCIATION PLUSIEURS VERS PLUSIEURS

 Le cas est proche de celui d'une association plusieurs vers plusieurs, les attributs de la
classe-association étant ajoutés à la troisième relation qui représente, cette fois-ci, la
classe-association elle-même.

create table relation_A (


id_A integer primary key,
attA1 text,
attA2 integer
);

create table relation_B (


id_B integer primary key,
attB1 text, attB2 integer
);

create table relation_C (


num_A integer references relation_A,
num_B integer references relation_B,
attC1 text,
attC2 integer,
primary key (num_A, num_B)
);

Modélisation Objet avec UML 86


ASSOCIATION RÉFLEXIVE

Modélisation Objet avec UML 87


HÉRITAGE

Modélisation Objet avec UML 88


HÉRITAGE

Modélisation Objet avec UML 89


HÉRITAGE

Modélisation Objet avec UML 90

Vous aimerez peut-être aussi