Vous êtes sur la page 1sur 47

Diagramme de Classes

Définitions
 Diagramme de Classe : Représentation abstraite des objets
du système qui vont interagir ensemble pour la réalisation des
cas d’utilisation.
 Vue statique : facteur temps pas pris en compte dans le
comportement du système.
 Modélisation des concepts du domaine d’application ainsi que
des concepts internes.
 => modélisation des classes du système et leurs relations
indépendamment d’un langage de programmation particulier.
 Les principaux éléments les classes et leurs relations :
association, généralisation et plusieurs types de dépendances,
telles que la réalisation et l’utilisation.

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 2


Diagramme de classe : exemple
Commande Client Classe
Multiplicité : obligatoire
dateDeRéception Association nom
1 Attributs
estPrépayée * adresse
nombre : Chaîne
prix : Monnaie solvabilité() : Chaîne Opérations
expédier() Généralisation
fermer() {siCommande.client.solvabilté est "douteuse",
alors Commande.estPrépayée doit être vrai}
1 Client Professionnel Client Particulier
Contrainte nomDuContact numéroCarteDeCrédit
solvabilité
Nom du rôle Multiplicité : multi-valuée
créditAutorisé
ligne * Rappeler()
factureMensuelle(Entier)
Ligne de Commande
quantité : Entier * Multiplicité : optionnelle
* 1 Produit
prix : Monnaie
disponible : Booléen 0..1 commercial
Employé

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 3


La classe

 Une classe est un concept abstrait qui représente


divers éléments du système :
 éléments concrets comme des étudiants,
 éléments abstraits comme des inscriptions,
 partie d’une application comme des boîtes de dialogue,
 structures informatiques comme des tables de hachage,
 éléments comportementaux comme des traitements.
 Une classe est associée à d’autres classes

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 4


Instance d’une classe
 Une instance est une concrétisation d’un concept abstrait.
Par exemple :
 le Maroc est une instance du concept abstrait Pays ;
 la FSR est une instance du concept abstrait Etablissement Supérieur
 L’étudiant Ali est une instance du concept abstrait Etudiant
 L’inscription de Ali à la FSR est une instance du concept abstrait Inscription

 Un objet est une instance d’une classe.


 C’est une entité discrète dotée d’une identité, d’un état et d’un
comportement.
 Les objets sont des éléments individuels d’un système en cours d’exécution
 Les objets sont reliés entre eux (par des associations).

 Exemple :
 Si : Etudiant est un concept abstrait, on peut dire que l’étudiant Ali est une
instance de Etudiant.
 Si Etudiant était une classe, Ali en serait une instance : un objet.

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 5


Etat et comportement d’un objet
 État d’un objet :
 Ce sont les attributs et les terminaisons d’associations qui décrivent
l’état d’un objet.
 Les propriétés décrites par les attributs prennent des valeurs lorsque
la classe est instanciée.
 L’instance d’une association est appelée un lien.

 Comportement d’un objet :


 Les opérations décrivent les éléments individuels d’un comportement
que l’on peut invoquer.
 Ce sont des fonctions qui peuvent prendre des valeurs en entrée et
modifier les attributs ou produire des résultats.
 Une opération est la spécification (i.e. déclaration) d’une méthode..

 Les attributs, les terminaisons d’association et les opérations


constituent donc les propriétés d’une classe (et de ses
instances).
S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 6
Représentation graphique
« class » « class »
Class_name Class_name
Bonnes pratiques : -attribut1:Integer
• Privé (-) pour les attributs
Encapsulation
• Public (+) pour les opérations -attribut2: String
+operation1() : void
Visibilités : +operation2() : void
public ou + : tout élément qui peut voir l’objet peut également voir
l’élément indiqué.
protected ou # : seul un élément situé dans l’objet ou un de ses
descendants peut voir l’élément indiqué.
private ou - : seul un élément situé dans l’objet peut voir l’élément.
package ou ~ ou rien : seul un élément déclaré dans le même paquetage
peut voir l’élément.

UML 2.0 : spécification de la visibilité par un langage de programmation est


possible.

Interface : services accessibles aux utilisateurs de l’objet (vue externe).


S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 7
Attribut d’une classe
 Un attributs définit des caractéristiques qu’une classe ou d’un
objet. Il est définit par :
 Un nom, un type de données, une visibilité et peut être initialisé.
 Le nom de l’attribut doit être unique dans la classe.

 La syntaxe de la déclaration d’un attribut est la suivante :

<visibilité> [/] <nom_attribut>:


<Type> [ ’[’ <multiplicité> ’]’ [ ’{’ <contrainte> ’}’ ] ]
[ = <valeur_par_défaut> ]

 <Type> : nom de classe, nom d’interface ou type de donné


 <multiplicité> : nombre de valeurs que l’attribut peut contenir. (si > 1
possibilité d’ajout d’une contrainte
 <contrainte> : précision sur les valeurs ({ordered}, {list} …).

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 8


Attribut dérivé
 Attributs dérivés d'autres attributs

Personne
dateNaiss
/âge
/âge=dateCourante_dateNaiss

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 9


Opération d’une classe (1)

 Une opération est un traitement que l'on peut faire sur un objet
instance de la classe.

 Elle a un nom et peut avoir des paramètres et un résultat.

 Dans une même classe deux opérations ne peuvent pas avoir le


même nom et les mêmes types de paramètres (unicité de
l'interface).

 On ne déclare que l'interface de l'opération.

 Appel : o.op()

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 10


Opération d’une classe (2)
 Syntaxe :
<visibilité> <nom_méthode> ( [ <paramètre> [, <paramètre> [, <paramètre> ...] ] ] ) :
[<valeur_renvoyé>] [ { <propriétés> } ]

– La syntaxe de définition d’un paramètre (<paramètre>) :


[<direction>] <nom_paramètre>:<Type> [’[’<multiplicité>’]’] [=<valeur_par_défaut>]
– La direction :
in : valeur. (par défaut)
out : sortie
inout : entrée/sortie
– <Type> classe, interface ou type de donné
– <propriétés>  contraintes ou informations (exceptions, les préconditions, les
postconditions ou indication qu’une méthode est abstraite (mot-clef abstract),
…)

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 11


Opération d’une classe (3)
 Cas particulers d'opération :
– Les constructeurs :
• Opérations qui permettent de créer un objet instance
de la classe
• Plusieurs constructeurs peuvent exister pour la
même classe.
• Exemple pour la classe Etudiant :

creer() : Etudiant ;
creer (CIN, CNE, Nom, Prénom) : Etudiant ;

Surcharge du 1er

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 12


Opération d’une classe (4)
 Cas particulers d'opération :
– Les accesseurs :
• Opérations qui permettent d'accéder aux attributs
des objets soit en lecture (get) soit en écriture (set)

• Exemple pour la classe Etudiant :

getNom () : String
Accès à la valeur d'un attribut
getCNE() : String

setAdresse(adr : String) : void


Mise à jour de la valeur d'un attribut

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 13


Exemple de classe

Attributs
privés

Constructeurs

Accesseurs

Autre
opération

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 14


Attribut de classe

 Un attribut qui s'applique à une classe et non a une


instance de cette classe
 Dans un DC les attributs de classe sont soulignés

Client
nb_clients
nom
adresse
solvabilité() : Chaîne

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 15


Méthode de classe

 Un méthode qui s'applique à une classe et non a


une instance de cette classe
 Dans un DC les méthodes de classe sont soulignés

Client
nb_clients
nom
adresse
Nb_cli_ville(ville) : Integer

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 16


Exemple de classe

Attribut
de classe

Opération
de classe

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 17


Association entre classes (1)
 Relation entre classes décrivant les liens structurels entre leurs
instances.

1..* Inscrit dans 1


Personne + étudiant + Filière
Formation

 Les terminaisons d’associations comme les attributs sont des


propriétés structurelles de la classe.

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 18


Association entre classes (2)

 Propriété structurelle est paramètrée par :


 nom : appelé nom du rôle, il est situé à proximité de la
terminaison et est facultatif.
=> autant de noms de rôle que de terminaisons
 visibilité : mentionnée à proximité de la terminaison,
(éventuellement devant le nom de rôle)
 multiplicité : mentionnée à proximité de la terminaison et
facultative. Par défaut une terminaison d’association est
non spécifiée.
 navigabilité : peut être précisée (plus loin)

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 19


Association entre classes (3) Sens de la lecture

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 20


Association entre classes (4)
// Methods
Code en Java de la classe Personne
/** // Accessor methods
* Class Personne /**
*/ * Set the value of CIN
* @param newVar the new value of CIN
public class Personne {
*/
private void setCIN (String newVar) {
// CIN = newVar;
// Fields }
//
/**
* Get the value of CIN
private String CIN;
* @return the value of CIN
private String Nom; */
private String Prénom; private String getCIN () {
private date Date_Naiss; return CIN;
}
public Formation m_filière; …………….
/**
* Get the value of m_filière
// * @return the value of m_filière
// Constructors */
// public Formation getFilière () {
public Personne () { }; return m_filière;
}
}
S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 21
Association entre classes (5)
// Methods
Code en Java de la classe Formation
/** // Accessor methods
* Class Formation /**
*/ * Set the value of Ref
* @param newVar the new value of Ref
public class Formation {
*/
private void setRef (String newVar) {
// Ref = newVar;
// Fields }
//
/**
private String Ref; * Get the value of Ref
private String Nom; * @return the value of Ref
private String Spécialité; */
private String getRef () {
private String Niveau;
return Ref;
}
public Vector etudiantVector = new Vector(); …………….
/**
// * Get the List of Etudiant objects held by etudiantVector
// Constructors * @return List of Etudiant objects held by etudiantVector
// */
public Formation () { }; public List getEtudiantList () {
return (List) etudiantVector;
}
}
S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 22
Association entre classes (6)

Cours
*

Etudiant * 0..1 Enseignant


tuteur
inscription

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 23


Association entre classes (7)
import java.util.*;

/**
* Class Personne
*/
public class Personne {
// Fields
//

private String CIN;


private String Nom;
private String Prénom;
private date Date_Naiss;
private Personne Mère;

public Formation m_filière;


……
}
S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 24
Association entre classes (7)
La navigabilité

 Sens de l’association. Par défaut, une association


est navigable dans les deux sens.

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 25


Association entre classes (7)
La navigabilité
import java.util.*;
/** import java.util.*;
* Class Formation
*/
public class Formation { /**
* Class Module
// Fields
*/
//
public class Module {
private String Ref;
private String Nom; //
private String Spécialité; // Fields
private String Niveau; //

private String Ref;


public Vector etudiantVector = new Vector();
private String Nom;
public Vector moduleVector = new Vector(); private Integer Semestre;
… …
}
}

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 26


Agrégation et composition
 Agrégation : concept de "est une partie de".
 Difficulté : différence entre agrégation et association.
• Dans l'UML : idée pas complètement définie : sans
sémantique ("placebo")
 Définition d'une variété d'agrégation : la composition
 L'objet "partie" ne peut appartenir qu'à un seul "tout"
 Les parties sont créées et meurent avec le tout : la destruction du tout se
propage en cascade aux parties.
 Impliquée par tout extrémité d'association ayant une multiplicité 1..1
(destruction d'un Client implique celle de toutes ses commandes et donc
celle des lignes de commande)

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 27


Diagrammes de classe : concepts avancés
 Agrégation et composition :exemple
Contrainte
{ordered} Composition

Aggregation

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 28


Généralisation et héritage (1)
 Dans le langage UML, la relation de généralisation se traduit
par le concept d’héritage.
 Nommée également relation d’héritage.

 Elle permet la classification des objets.

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 29


Généralisation et héritage (2)
Généralisation

Vocabulaire :

La classe Utilisateur est une
généralisation des classes Enseignant et
Etudiant.

Les classes Enseignant et Etudiant sont
des spécialisation de la classe
Utilisateur

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 30


Généralisation et héritage (3)

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 31


Généralisation et héritage (4)
public class Utilisateur {

// Fields //
// private String CIN; // Other methods
private String Nom; //
private String Prénom;
private Date Date_Naiss; /**
private String e_mail; * @param cin
* @param nom
// Constructors * @param prénom
// * @param ddn
public Utilisateur () { }; */
// Methods public static void Créer(String cin, String nom, String
// Accessor methods prénom, Date ddn)
{
……. }

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 32


Généralisation et héritage (5)

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 33


Généralisation et héritage (6)
* Class Enseignant
*/
public class Enseignant extends Utilisateur //
{ // Other methods
//
//
// Fields /**
// * @param cin
* @param nom
private Date Date_emb; * @param prénom
private String Grade; * @param ddn
private String Département; * @param demb
* @param grade
// * @param dept
// Constructors */
// public static void Créer(String cin, String nom, String
public Enseignant () { }; prénom, Date ddn, Date demb, String grade, String dept)
// Methods {
// Accessor methods }
}
……. Licence SMI-FSR Mod. 31 UML - Class Diagram
S. Mouline 34
Généralisation et héritage (7)

Surcharge

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 35


S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 36
Opération abstraite

Méthode abstraite dont on connaît l’entête mais pas la


manière dont elle peut être réalisée

Méthode abstraite

Réalisées dans les


classes filles

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 37


Classe abstraite

 Classe abstraite
 Contient au moins une opération abstraite
 Une classe mère contient une opération abstraite non
encore réalisée.
 Définie par le concepteur pour qu'elle soit non instanciable.

 Peut contenir des méthodes concrètes.


 Interface
 Classe abstraite pure qui ne comporte que des méthodes
abstraites.

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 38


Classe active

 classe qui initie et contrôle le flux d’activités.


 Par défaut une classe est passive
 Représentation graphique :

« class »
Class_name

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 39


Associations qualifiées

 Equivalent UML de : tableau associatif, "map" ou


dictionnaire
Ligne de commande
0..1
Commande Produit montant:Nombre
ligne

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 40


Relation entre classes

 La généralisation et héritage
 L’association
 Multiplicité ou cardinalité
 Navigabilité
 Qualification
 Classe-association
 Agrégation et composition
 Dépendance

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 41


Classe-association

 Une personne ne peut travailler que dans une entreprise

employeur
Personne * Entreprise
0..1

Emploi Classe-association
période:IntervalleDate

Emploi
1 0..1 * 1
Personne période:IntervalleDate Entreprise

/employeur

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 42


Classe-association

 Avantage : il ne peut y a voir qu'une seule instance pour un


lien entre deux objets quelconques
 Une personne peut travailler dans plusieurs entreprises en même
temps mais elle ne peut pas avoir plus d'un emploi dans la même
entreprise
* employeur
Personne Entreprise
*

Emploi
période:IntervalleDate

Emploi
1 * * 1
Personne période:IntervalleDate Entreprise

/employeur

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 43


Relation entre classes

 La généralisation et héritage
 L’association
 Multiplicité ou cardinalité
 Navigabilité
 Qualification
 Classe-association
 Agrégation et composition
 Dépendance

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 44


Dépendante
 Relation unidirectionnelle qui exprime une dépendance
sémantique entre les éléments du modèle.
  modification de la cible => une modification de la source

 Représentée par un trait discontinu orienté

Emploi du temps Cours

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 45


Interfaces

 Une des propriétés importantes du modèle objet : faire


varier les implémentations des classes indépendamment
des interfaces

InputStream "interface"
DataInput

DataInputStream LectureCde

Réalisation Dépendance

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 46


Diagrammes d ’objets

EstAcceptéPar>
: Distributeur
: CarteBleue
signataire

titulaires
cl1 : Client c4 : Compte : Banque : Consortium

: CarteBleue
signataire

cl2 : Client c1 : Compte : Banque


titulaires

titulaires
cl3 : Client c2 : Compte : Consortium
titula
ires

titulaires
cl4 : Client c3 : Compte : Banque

signataire
: CarteBleue
EstAcceptéPar>
cl5 : Client : Distributeur
EstAcceptéPar>

S. Mouline Licence SMI-FSR Mod. 31 UML - Class Diagram 47