Vous êtes sur la page 1sur 35

Analyse et conception orientée objet:

Diagramme de classes
Jamal BAKKAS
Université Cadi Ayyad
Ecole supérieur de Technologie-Safi

Jamal BAKKAS
Diagramme de Classes (DC)
DC permet de modéliser les
classes du système et leurs
relations indépendamment des
langages de programmations
d’implémentation.
Jamal BAKKAS
Diagramme de Classes (DC)
 Classe
 Une classe décrit une abstraction d’objets ayant
 Des propriétés similaires
 Des comportements communs
 Des relations identiques avec les autres objets
 Une sémantique commune
 Par exemple : Personne, Etudiant, Véhicule, Fichier , paragraphe,…
 Sert de « patron » (template) à objets : elle définit la structure générale des
objets qu'elle crée en indiquant quelles sont les variables d'instance ;
 Une classe est composée:
 attributs : données dont les valeurs représentent l'état de l'objet
 méthodes : opérations applicables aux objets

 Objet
 un objet est une instanciation (occurrence) d'une classe
Jamal BAKKAS
Diagramme de Classes (DC)

Classe: représentation graphique


 Une classe est représentée par un
rectangle séparé en trois parties : Nom_de_la_classe

 la première partie contient le nom de la # Attribut1 : Type


- Attribut2 : Type

classe
+ méthode1 ()
 la seconde contient les attributs de la classe Méthode2 ()

 la dernière contient les méthodes de la classe

Jamal BAKKAS
Diagramme de Classes (DC)
Voiture FIAT-PUNTO-17
Classe & objets Numéro de série : Int
Poids : double
233434 : Numéro de série
1500 kg : Poids
Immatriculation : String 8864 YF 17 : Immatriculation
Kilométrage : double 33 000 : kilométrage

Démarrer ()
Arrêter()
Rouler()

Renault-Clio-17 Peugeot-207
5323454 : Numéro de série 3434 : Numéro de série
1500 kg : Poids 1700 kg : Poids
64 YFT 17 : Immatriculation 8634 YGG 75 : Immatriculation
23 000 : kilométrage 15 000 : kilométrage

Jamal BAKKAS
Diagramme de Classes (DC) : Attributs
 Les attributs d’une classe
 chaque instance d'une classe possède sa propre copie des attributs de la classe.
Les valeurs des attributs peuvent donc différer d'un objet à un autre/
 La syntaxe d’un attribut est : visibilité nom : type
Nom_de_la_classe
 La visibilité est:
# Attribut1 : Type
 '+' pour public
 '#' pour protected
- Attribut2 : Type

+ méthode1 () : type1
 '-' pour private Méthode2 () : void
 UML définit son propre ensemble de types …

 Integer, real, string, …


 Un attribut peut être dérivé, il est alors préfixé par le caractère ‘/’
 Un attribut peut être un attribut de classe, il est alors souligné.
Jamal BAKKAS
Diagramme de Classes (DC) : Attributs
 Les attributs d’une classe
 Un attribut dérivé est un attribut qui peut être calculé à partir
d’autres attributs Péréfixe par le caractère ‘/’

Jamal BAKKAS
Diagramme de Classes (DC) : Attributs
 Attribut de classe
 Les valeurs des attributs peuvent différer d'un objet à un autre.

 un attribut de classe (static en Java ou en C++) garde une valeur


unique et partagée par toutes les instances de la classe.

 Un attribut de classe n'est pas une propriété d'une instance, mais


une propriété de la classe et l'accès à cet attribut ne nécessite pas
l'existence d'une instance.

 Graphiquement, un attribut de classe est souligné.

Jamal BAKKAS
Diagramme de Classes (DC) : Méthodes
 Comportement d'un objet :
 les opérations, appelées aussi méthodes, décrivent les
éléments individuels d'un comportement que l'on peut
invoquer. Nom_de_la_classe
 Ce sont des fonctions qui peuvent prendre des valeurs en # Attribut1 : Type
entrée et modifier les attributs ou produire des résultats.
- Attribut2 : Type
 Méthode de classe …
+ méthode1 () : type1
Méthode2 () : void
 L'accès à une méthode de classe ne nécessite pas …
l'existence d'une instance de cette classe.
 Graphiquement, une méthode de classe est
soulignée.
Jamal BAKKAS
Méthodes et classes abstraites
 Une méthode est dite abstraite lorsqu'on connaît sa signature, mais pas la
manière dont elle peut être réalisée (i.e. on connaît sa déclaration, mais pas sa
définition).

 Une classe est dite abstraite lorsqu'elle définit au moins une méthode abstraite

 On ne peut instancier une classe abstraite : elle est vouée à se spécialiser. Une
classe abstraite peut très bien contenir des méthodes concrètes.

 Une classe abstraite pure ne comporte que des méthodes abstraites. En


programmation orientée objet, une telle classe est appelée une interface.

 Pour indiquer qu'une classe est abstraite, il faut ajouter le mot-clef abstract
derrière son nom.
Jamal BAKKAS
Interfaces
 L’interface permet de regrouper un ensemble de
propriétés et d'opérations assurant un service
cohérent
 Une interface est représentée comme une classe
abstrait excepté l'absence du mot-clef abstract et
l'ajout du stéréotype << interface >>
 par définition toutes les méthodes d’une interface
sont abstraites
«realize» «realize»
 Une interface doit être réalisée par au moins une
classe et peut l'être par plusieurs.
 Graphiquement, cela est représenté par un trait
discontinu terminé par une flèche triangulaire et le
stéréotype « realize ».
 Une interface exprime un contrat à respecter par les
classes qui « réalisent » cette interface
Jamal BAKKAS
Héritage
 permet de définir les relations sous-
Classe/Super-Classe.
 Relation de classification entre
 Élément général
 Élément spécifique
 Cohérent avec élément général
 Contient + d’informations

 L'héritage peut être multiple.


Jamal BAKKAS
Associations
 Une association est une relation entre deux classes (association binaire) ou
plus (association n-aire), qui décrit les connexions structurelles entre leurs
instances.
 Une association indique donc qu'il peut y avoir des liens entre des instances
des classes associées.
 Une association binaire est matérialisée par un trait plein entre les classes
associées
 Par défaut une association est navigable dans les deux sens
 Exemple:
 Chaque instance de voiture a un lien vers
le propriétaire
 Chaque instance de Personne a un
ensemble de lien vers les voitures
Jamal BAKKAS
Diagramme de Classes (DC) : Associations
• Une association réflexive est une association qui
associe une classe avec elle-même.
• L'explicitation des associations est souvent utile dans
le cas des associations réflexives non symétrique (ou
chaque objet ne joue pas le même rôle)

Jamal BAKKAS
Association n-aire
 Une association n-aire lie plus de deux
classes.

 On représente une association n-aire 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.

Jamal BAKKAS
La dépendance
 Une dépendance est une relation unidirectionnelle exprimant
une dépendance sémantique entre des éléments du modèle.
 Elle est représentée par un trait discontinu orienté.
 Elle indique que la modification de la cible peut impliquer une
modification de la source.
 La dépendance est souvent stéréotypée pour mieux expliciter
le lien sémantique entre les éléments du modèle.

Jamal BAKKAS
Navigabilité
 La navigabilité indique s'il est possible de traverser une association.
 Par défaut, une association est navigable dans les deux sens.
 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
■ Lorsque la navigabilité est uniquement sur l'une
des extrémités d'une association, les trois
associations représentées ont la même
signification : l'association ne peut être traversée
que dans un sens. Jamal BAKKAS
Multiplicité ou cardinalité
 Dans une association binaire, la multiplicité sur la terminaison cible
contraint le nombre d'objets de la classe cible pouvant être associés à un
seul objet donné de la classe source (la classe de l'autre terminaison de
l'association).
 Voici quelques exemples de multiplicité :
 Exactement un : 1 ou 1..1 ;
 Plusieurs : * ou 0..* ;
 Au moins un : 1..* ;
 De un à six : 1..6.
 Il faut noter que, par rapport au modèle entité/relation, les multiplicités
sont en UML « à l'envers » (par référence à Merise) pour les associations
binaires et « à l'endroit » pour les n-aires avec n>2.

Jamal BAKKAS
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 caractérisée par un trait discontinu entre la
classe et l'association qu'elle représente.
 Exemple:
 l'association Emploie entre une société et une personne possède comme
propriétés le salaire et la date d'embauche.

Jamal BAKKAS
Classe-association
 la contrainte {bag} qui, placée sur les terminaisons d'association de la classe-
association, indique qu'il peut y avoir des liens multiples impliquant les mêmes
paires d'objets

Exemple :
il doit y avoir plusieurs instances de la classe-
association Actions liant une même personne à
une même société :
une même personne peut acheter à des
moments différents des actions d'une même
société.

Jamal BAKKAS
L’Agrégation
 Une association simple entre deux classes représente une relation structurelle entre
pairs, c'est-à-dire entre deux classes de même niveau conceptuel :
 aucune des deux n'est plus importante que l'autre.
 Lorsque l'on souhaite modéliser une relation tout/partie où une classe constitue un élément plus
grand (tout) composé d'éléments plus petits (partie), il faut utiliser une agrégation.
 L'agrégation est une association non symétrique, qui exprime un couplage fort et une
relation de subordination.
 Elle représente une relation de type "ensemble / élément"
 Graphiquement, on ajoute un losange vide du côté de l'agrégat.
 Contrairement à une association simple, l'agrégation est transitive.
 La signification de cette forme simple d'agrégation est uniquement conceptuelle.
 Elle ne contraint pas la navigabilité ou les multiplicités de l'association.
 Pas de contrainte sur la durée de vie des parties par rapport au tout.
Jamal BAKKAS
La Composition
 La composition, également appelée agrégation composite, décrit une
contenance structurelle entre instances.
 La destruction de l'objet composite implique la destruction de ses composants.
 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).
 Graphiquement, on ajoute un losange plein (✦) du côté de l'agrégat

Jamal BAKKAS
Association, agrégation, composition
(Exemple)

Jamal BAKKAS
Association, agrégation, composition
 Exemple:
 Une personne possède un immeuble
 Dans un immeuble, on trouve un ascenseur
 Un immeuble est composé d’étages
 Une personne possède un compte et une adresse
 Questions:
 Relation entre personne et immeuble
 Relation entre immeuble et ascenseur
 Relation entre immeuble et étage

Jamal BAKKAS
Association, agrégation, composition
 Une personne possède un immeuble
 Lien conceptuel les objets ont des CV (cycles de vie) indépendants
 Ce lien exprime une relation temporaire
  association
 Dans un immeuble on trouve un ascenseur:
 Un lien: ensemble/élément, les CV des objets non disjoints
 La suppression de l’immeuble n’entraîne pas obligatoirement celle de l’ascenseur
 Un ascenseur ne peut être utilisé (au même temps) par plus qu’un immeuble. Mais
dans le temps, le même ascenseur peut être utilisé par différents immeubles
  agrégation
 Un immeuble est composé d’étages:
 Un lien: composé/composants : les CV des objets coïncident
 Créations d’un immeuble  création de ses étages
 Suppression de l’immeuble  suppression de ses étages
 Un étage ne peut pas être partagé par différents immeubles
 composition
Jamal BAKKAS
Implémentations

Jamal BAKKAS
Implémentations
public class Personne {

public String Nom;


public String prenom;
public java.util.Collection voiture =
new java.util.TreeSet();
}

public class Voiture {

public String immatriculation;


public Personne Propriétaire;
public void demarer() { }
}

public class ServiceContraventions {

public java.util.Collection Voiture = new java.util.TreeSet();


}

Jamal BAKKAS
Implémentations

 Le concept de classe d’association n’existe pas dans les langages de


programmation orientés objets.
 Il faut donc le traduire en la transformant en une classe normale.

class Emploi{
private String titre;
private double salaire
Personne employe;
Sociéte employeur;
} Jamal BAKKAS
Implémentations

public class Enseignant extends Personne {


public String telephone;
public java.util.Collection equipeRecherche = new java.util.TreeSet();
public Departement departement;
}

public class Département {


private int nomDépartement;
private int codetheme;
public java.util.Collection enseignant = new java.util.TreeSet();
} Jamal BAKKAS
Implémentations

public class EquipeRecherche {


public String[] nomEquipe;
public String thématique;
public java.util.Collection enseignant = new java.util.TreeSet();
public Laboratoire laboratoire;
}
public class Laboratoire {
public java.util.Collection equipeRecherche = new java.util.TreeSet();
}
Jamal BAKKAS
Exercices d’application : Relations structurelles entre classes
 Exercice 1) Considérons les phrases suivantes :
1) Un répertoire contient des fichiers.
2) Une pièce contient des murs.
3) Les modems et les claviers sont des périphériques d’entrée/sortie.
4) Une transaction boursière est un achat ou une vente.
5) Un compte bancaire peut appartenir à une personne physique ou morale.
6) Deux personnes peuvent être mariées.
 Déterminez la relation statique appropriée (généralisation, composition, agrégation ou association) dans
chaque phrase de l’énoncé précédent. Dessinez le diagramme de classes correspondant.

 Exercice 2 ) Considérons la phrase suivante: « un pays a une capitale. »


 Proposez plusieurs solutions (DC) pour modéliser cette situation. Pour chaque solution indiquez les
avantages et inconvénients

Jamal BAKKAS
Exercices d’application : Solutions

Un répertoire Une pièce contient Les modems et les claviers sont Une transaction boursière
contient des fichiers. des murs. des périphériques d’entrée/sortie. est un achat ou une vente.

Jamal BAKKAS
Exercices d’application : Solutions

Un compte bancaire peut appartenir à


une personne physique ou morale. Un compte bancaire peut appartenir à
une personne physique ou morale.

Jamal BAKKAS
Exercices d’application : Solutions

Deux personnes peuvent être mariées.

Jamal BAKKAS
Exercices d’application : Solutions

Jamal BAKKAS

Vous aimerez peut-être aussi