UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations...

180
UML : concept objet et diagramme de classes Achref El Mouelhi Docteur de l’universit ´ e d’Aix-Marseille Chercheur en programmation par contrainte (IA) Ing ´ enieur en g ´ enie logiciel [email protected] H & H: Research and Training 1 / 125

Transcript of UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations...

Page 1: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

UML : concept objet et diagramme de classes

Achref El Mouelhi

Docteur de l’universite d’Aix-MarseilleChercheur en programmation par contrainte (IA)

Ingenieur en genie logiciel

[email protected]

H & H: Research and Training 1 / 125

Page 2: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Plan

1 Introduction

2 L’evolution des langages

3 Le concept objet

4 La notion de classe

5 L’encapsulation

6 Les relations entre classesLa navigabiliteLes rolesLes classes liees par plusieurs associationsL’auto-associationLes associations n-aires

H & H: Research and Training 2 / 125

Page 3: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Plan

7 Les associations particulieresL’heritageL’agregationLa compositionLa dependance

8 La multiplicite

9 La classe d’association

10 Le polymorphisme

11 Les classes abstraite et finale

12 Les interfaces

13 Les contraintes avec UML

14 Comment construire un diagramme de classe?

H & H: Research and Training 3 / 125

Page 4: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Introduction

Introduction

Diagramme de Classe

Le diagramme de structure le plus important dans la realisationd’un projet

Utilisant le concept objet

Pouvant etre transforme, en respectant certaines regles, en MCD(le modele conceptuel de donnees de Merise)

H & H: Research and Training 4 / 125

Page 5: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Introduction

Introduction

Les elements de base dans un diagramme de classe

Classe

Attribut

Methode

Association

Multiplicite

H & H: Research and Training 5 / 125

Page 6: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

Introduction

Histoire de la programmation

Langage

machine

1ere generation

1940Assembleur

2eme generation

Programmation

structuree

3eme generation

Programmation

orientee objet

4eme generation

H & H: Research and Training 6 / 125

Page 7: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmation

Langage machine

Le langage natif d’un processeur (langage de bas niveau)

Les traitements (les instructions) et les donnees (les variables)sont tous codes en binaire (suite des 0 et 1)

Remarque

La lisibilite est extremement difficile

La reutilisation est quasi-impossible

La notion de module n’existe pas

H & H: Research and Training 7 / 125

Page 8: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmation

Langage machine

Le langage natif d’un processeur (langage de bas niveau)

Les traitements (les instructions) et les donnees (les variables)sont tous codes en binaire (suite des 0 et 1)

Remarque

La lisibilite est extremement difficile

La reutilisation est quasi-impossible

La notion de module n’existe pas

H & H: Research and Training 7 / 125

Page 9: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmation

L’assembleur

Une reecriture plus lisible du langage machine

Une instruction est formee de nom de l’operation (mov, add...) etd’une ou plusieurs operandes (variables)

Un programme assembleur est traduit en langage machine

Remarque

La lisibilite est legerement meilleure mais reste difficile

La reutilisation est toujours quasi-impossible

La notion de module n’existe toujours pas

H & H: Research and Training 8 / 125

Page 10: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmation

L’assembleur

Une reecriture plus lisible du langage machine

Une instruction est formee de nom de l’operation (mov, add...) etd’une ou plusieurs operandes (variables)

Un programme assembleur est traduit en langage machine

Remarque

La lisibilite est legerement meilleure mais reste difficile

La reutilisation est toujours quasi-impossible

La notion de module n’existe toujours pas

H & H: Research and Training 8 / 125

Page 11: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmation

La programmation structuree (ou procedurale)

Un programme est compose d’un ensemble d’appel a desprocedures realisant chacune une tache bien definie

Une procedure peut appeler plusieurs procedures (y compriselle-meme, on parle dans ce cas de recursivite)

Remarque

La lisibilite est considerablement amelioree

Une procedure peut etre appelee plusieurs fois par plusieursprocedures differentes (la reutilisation est nettement amelioree)

Apparition de notion de module

H & H: Research and Training 9 / 125

Page 12: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmation

La programmation structuree (ou procedurale)

Un programme est compose d’un ensemble d’appel a desprocedures realisant chacune une tache bien definie

Une procedure peut appeler plusieurs procedures (y compriselle-meme, on parle dans ce cas de recursivite)

Remarque

La lisibilite est considerablement amelioree

Une procedure peut etre appelee plusieurs fois par plusieursprocedures differentes (la reutilisation est nettement amelioree)

Apparition de notion de module

H & H: Research and Training 9 / 125

Page 13: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmationLa programmation orientee objet

Tout concept, idee, operation... est considere comme un objet

Un objet peut contenir certains autres objets et avoir des relationsavec certains autres

Chaque objet possede une structure interne et peut avoirplusieurs etats differents

Remarque

Tout passe par des objets. Un programme correspond a unensemble d’instanciation d’objets : facile a lire

Un objet peut etre instancie et utilise par plusieurs autres objets(ce qui facilite la reutilisation des objets)

Amelioration de la notion de module (Package)

H & H: Research and Training 10 / 125

Page 14: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmationLa programmation orientee objet

Tout concept, idee, operation... est considere comme un objet

Un objet peut contenir certains autres objets et avoir des relationsavec certains autres

Chaque objet possede une structure interne et peut avoirplusieurs etats differents

Remarque

Tout passe par des objets. Un programme correspond a unensemble d’instanciation d’objets : facile a lire

Un objet peut etre instancie et utilise par plusieurs autres objets(ce qui facilite la reutilisation des objets)

Amelioration de la notion de module (Package)H & H: Research and Training 10 / 125

Page 15: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmation

Remarque

Certains compilateurs traduisent les codes soit en langagemachine, soit en assembleur, soit en langage de programmationd’un niveau inferieur

Certains compilateurs sont implementes avec d’autres langagesde programmation (par example la machine virtuelle de Java quiest implementee en C++...)

H & H: Research and Training 11 / 125

Page 16: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmation

Pourquoi autant de generation?

(Plus) de probleme de memoire

Des processeurs plus rapides

Besoins differents

COBOL : pour les systemes de gestion

Java : pour les problemes complexes

LISP : pour les programmes d’intelligence artificielle

PROLOG : pour les problemes de logique

H & H: Research and Training 12 / 125

Page 17: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmation Orientee objetEvolution de LOO

Simula (1967)

Smalltalk (1971 puis 1980)

C++ (1983)

Python (1989)

Java (1995)

C# (2002)

PHP (depuis la version 5 sortie en 2004)

...

La plupart des langages de programmation ont propose une nouvelleversion orientee objet

H & H: Research and Training 13 / 125

Page 18: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

L’historique de la programmation Orientee objetEvolution de LOO

Simula (1967)

Smalltalk (1971 puis 1980)

C++ (1983)

Python (1989)

Java (1995)

C# (2002)

PHP (depuis la version 5 sortie en 2004)

...

La plupart des langages de programmation ont propose une nouvelleversion orientee objet

H & H: Research and Training 13 / 125

Page 19: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

La programmation orientee objet

Deux categories de LOO

Les langages a classes : Java, C++, Python...

Les langages a prototypes : JavaScript

H & H: Research and Training 14 / 125

Page 20: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’evolution des langages

La programmation orientee objet

Pourquoi un LOO ?

Supporte par tous les systemes d’exploitation

Adopte par Microsoft

Adopte par les universitaires (en enseignement et en recherche)

Adopte par la communaute OPEN SOURCE

Adopte par les grandes entreprises

...

H & H: Research and Training 15 / 125

Page 21: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Qu’est ce qu’un objet?

Une representation miniature d’un objet reel

Tout concept du monde reel est modelise par un objet

Un outil sur lequel se baser pour creer des choses qui n’existentpas encore

Nous pouvons le considerer comme une boite noire : inaccessibledirectement qu’a travers une interface

H & H: Research and Training 16 / 125

Page 22: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Un objet est une entite autonome

veritable petit programme

possede une duree de vie

possede un etat : un ensemble de valeurs

accessible au monde exterieur via une interface

Un programme est compose de plusieurs objets autonomes qui vontinteragir entre eux

H & H: Research and Training 17 / 125

Page 23: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Un objet est une entite autonome

veritable petit programme

possede une duree de vie

possede un etat : un ensemble de valeurs

accessible au monde exterieur via une interface

Un programme est compose de plusieurs objets autonomes qui vontinteragir entre eux

H & H: Research and Training 17 / 125

Page 24: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

De quoi est compose un objet?

un ensemble d’attributs (chaque attribut a un nom et une valeur)≡ donnees (qui definissent l’aspect statique de l’objet)

un ensemble de methodes (des fonctions, comme enprogrammation procedurale, dediees a un type d’objet) ≡traitements (qui definissent l’aspect dynamique de l’objet)

H & H: Research and Training 18 / 125

Page 25: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Les attributs

un attribut, selon le contexte, peut etre aussi appele champ ouvariable d’instance

un attribut peut avoir un type (ce n’est pas une obligation, toutdepend du langage de programmation)

chaıne de caractere

entier

booleen

date

...

H & H: Research and Training 19 / 125

Page 26: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Remarque

Un objet peut avoir comme attribut un autre objet

Comme les fonctions en programmation procedurale, unemethode peut appeler plusieurs autres

Contrairement a la programmation procedurale, les donnees et lestraitements ne sont pas separes

H & H: Research and Training 20 / 125

Page 27: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Exemple : maVoiture

Une voiture peut avoir comme attributnumero d’immatriculation (chaıne ou entier)marque (chaıne)modele (chaıne ou entier)puissance (entier)couleur (chaıne)...

elle peut avoir comme methodeavancerreculerfreinerklaxonner...

H & H: Research and Training 21 / 125

Page 28: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Exemple : voiture

numero d’immatriculation : LY 069 ON

marque : Peugeot

modele : 3008

puissance : 8

couleur : blanche

L’ensemble de valeurs d’un objet definit son etatSi je repeins la voiture precedente en noir (couleur = noir) alorsnous disons que l’objet a change d’etatLa voiture peut donc changer d’etat mais il s’agit toujours dumeme objet

H & H: Research and Training 22 / 125

Page 29: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Exemple : voiture

numero d’immatriculation : LY 069 ON

marque : Peugeot

modele : 3008

puissance : 8

couleur : blanche

L’ensemble de valeurs d’un objet definit son etat

Si je repeins la voiture precedente en noir (couleur = noir) alorsnous disons que l’objet a change d’etatLa voiture peut donc changer d’etat mais il s’agit toujours dumeme objet

H & H: Research and Training 22 / 125

Page 30: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Exemple : voiture

numero d’immatriculation : LY 069 ON

marque : Peugeot

modele : 3008

puissance : 8

couleur : blanche

L’ensemble de valeurs d’un objet definit son etatSi je repeins la voiture precedente en noir (couleur = noir) alorsnous disons que l’objet a change d’etat

La voiture peut donc changer d’etat mais il s’agit toujours dumeme objet

H & H: Research and Training 22 / 125

Page 31: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Exemple : voiture

numero d’immatriculation : LY 069 ON

marque : Peugeot

modele : 3008

puissance : 8

couleur : blanche

L’ensemble de valeurs d’un objet definit son etatSi je repeins la voiture precedente en noir (couleur = noir) alorsnous disons que l’objet a change d’etatLa voiture peut donc changer d’etat mais il s’agit toujours dumeme objet

H & H: Research and Training 22 / 125

Page 32: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Attention

Ne pas confondre objets identiques et objets egaux

Deux objets sont egaux si, au moment de comparaison, leursattributs respectifs ont les memes valeurs

Deux objets sont identiques s’ils ont le meme OID (ObjectIDentifier)

Si deux objets sont identiques alors ils sont aussi egaux

La reciproque est bien evidemment fausse

H & H: Research and Training 23 / 125

Page 33: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Attention

Ne pas confondre objets identiques et objets egaux

Deux objets sont egaux si, au moment de comparaison, leursattributs respectifs ont les memes valeurs

Deux objets sont identiques s’ils ont le meme OID (ObjectIDentifier)

Si deux objets sont identiques alors ils sont aussi egaux

La reciproque est bien evidemment fausse

H & H: Research and Training 23 / 125

Page 34: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Attention

Ne pas confondre objets identiques et objets egaux

Deux objets sont egaux si, au moment de comparaison, leursattributs respectifs ont les memes valeurs

Deux objets sont identiques s’ils ont le meme OID (ObjectIDentifier)

Si deux objets sont identiques alors ils sont aussi egaux

La reciproque est bien evidemment fausse

H & H: Research and Training 23 / 125

Page 35: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Attention

Ne pas confondre objets identiques et objets egaux

Deux objets sont egaux si, au moment de comparaison, leursattributs respectifs ont les memes valeurs

Deux objets sont identiques s’ils ont le meme OID (ObjectIDentifier)

Si deux objets sont identiques alors ils sont aussi egaux

La reciproque est bien evidemment fausse

H & H: Research and Training 23 / 125

Page 36: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Attention

Ne pas confondre objets identiques et objets egaux

Deux objets sont egaux si, au moment de comparaison, leursattributs respectifs ont les memes valeurs

Deux objets sont identiques s’ils ont le meme OID (ObjectIDentifier)

Si deux objets sont identiques alors ils sont aussi egaux

La reciproque est bien evidemment fausse

H & H: Research and Training 23 / 125

Page 37: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Exercice d’application

Definissons un objet monLivre de type Livre

Determinons ses principaux attributs ainsi que leurs valeurs

Definissons ses methodes de base

H & H: Research and Training 24 / 125

Page 38: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Exercice d’application

Definissons un objet monLivre de type Livre

Determinons ses principaux attributs ainsi que leurs valeurs

Definissons ses methodes de base

H & H: Research and Training 24 / 125

Page 39: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Exercice d’application

Definissons un objet monLivre de type Livre

Determinons ses principaux attributs ainsi que leurs valeurs

Definissons ses methodes de base

H & H: Research and Training 24 / 125

Page 40: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Cycle de vie

Creation : se realise via une methode specifique diteconstructeur

L’objet sera par la suite utilise pour effectuer des taches bienprecises

Destruction : selon le LOO soit d’une facon implicite quand on nefait plus reference a l’objet (comme en Java, C#...), soit d’unefacon explicite en appelant une methode bien specifiquedestructeur (comme en PHP, C++...)

H & H: Research and Training 25 / 125

Page 41: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Cycle de vie

Creation : se realise via une methode specifique diteconstructeur

L’objet sera par la suite utilise pour effectuer des taches bienprecises

Destruction : selon le LOO soit d’une facon implicite quand on nefait plus reference a l’objet (comme en Java, C#...), soit d’unefacon explicite en appelant une methode bien specifiquedestructeur (comme en PHP, C++...)

H & H: Research and Training 25 / 125

Page 42: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Cycle de vie

Creation : se realise via une methode specifique diteconstructeur

L’objet sera par la suite utilise pour effectuer des taches bienprecises

Destruction : selon le LOO soit d’une facon implicite quand on nefait plus reference a l’objet (comme en Java, C#...), soit d’unefacon explicite en appelant une methode bien specifiquedestructeur (comme en PHP, C++...)

H & H: Research and Training 25 / 125

Page 43: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le concept objet

Le concept objet

Le garbage collector (ramasse miettes)

C’est le destructeur d’objets en Java, C# et Smalltalk

Il detruit automatiquement les objets qui ne sont plus utilises

Un objet n’est plus utilise s’il n’est plus reference

Lorsque le garbage collector se declenche, il detruit les objetsnon-utilises

H & H: Research and Training 26 / 125

Page 44: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La notion de classe

La notion de classe

Qu’est ce qu’une classe en POO?

Ca correspond a un plan, un moule, une usine...

C’est une description abstraite d’un type d’objets

Elle regroupe un ensemble d’objets ayant les memes proprietesstatiques (attributs) et dynamiques (methodes)

Qu’est ce que c’est la notion d’instance?

Une instance correspond a un objet cree a partir d’une classe (viale constructeur)

L’instanciation : creation d’un objet d’une classe

instance ≡ objet

H & H: Research and Training 27 / 125

Page 45: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La notion de classe

La notion de classe

Qu’est ce qu’une classe en POO?

Ca correspond a un plan, un moule, une usine...

C’est une description abstraite d’un type d’objets

Elle regroupe un ensemble d’objets ayant les memes proprietesstatiques (attributs) et dynamiques (methodes)

Qu’est ce que c’est la notion d’instance?

Une instance correspond a un objet cree a partir d’une classe (viale constructeur)

L’instanciation : creation d’un objet d’une classe

instance ≡ objet

H & H: Research and Training 27 / 125

Page 46: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La notion de classe

La notion de classe

Qu’est ce qu’une classe en POO?

Ca correspond a un plan, un moule, une usine...

C’est une description abstraite d’un type d’objets

Elle regroupe un ensemble d’objets ayant les memes proprietesstatiques (attributs) et dynamiques (methodes)

Qu’est ce que c’est la notion d’instance?

Une instance correspond a un objet cree a partir d’une classe (viale constructeur)

L’instanciation : creation d’un objet d’une classe

instance ≡ objet

H & H: Research and Training 27 / 125

Page 47: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La notion de classe

La notion de classe

Dans un digramme de classes UML

Une classe est representee par un classeur contenant trois parties :

premiere partie dediee au nom de la classe

seconde partie dediee aux attributs

derniere partie dediee aux methodes

NomClasse

les attributs

les methodes

H & H: Research and Training 28 / 125

Page 48: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La notion de classe

La notion de classe

De quoi est compose une classe?

Attribut : visibilite + nom + type

LOO faiblement type, comme PHP, Pyhon..., n’exigent pas un typepour les attributs

LOO fortement type, comme Java, C++..., exigent un type pourchaque attribut

Methode : nom + arguments + valeur de retour ≡ signature :exactement comme les fonctions en procedurale

H & H: Research and Training 29 / 125

Page 49: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La notion de classe

La notion de classe

Remarque

Un attribut ou une methode peut etre de classe (static) oud’instance

Un attribut (ou une methode) est dit static si sa valeur estpartagee par tous les objets de la classe

H & H: Research and Training 30 / 125

Page 50: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Une classe

peut cacher son implementation

ne montre aux autres objets que ce qu’elle autorise : interface

Proprietes

Les objets interagissent les uns avec les autres via les interfaces

Ce qui n’est pas dans l’interface n’est ni visible ni accessible auxautres objets

La dissociation de l’interface et de l’implementation : encapsulation

H & H: Research and Training 31 / 125

Page 51: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Une classe

peut cacher son implementation

ne montre aux autres objets que ce qu’elle autorise : interface

Proprietes

Les objets interagissent les uns avec les autres via les interfaces

Ce qui n’est pas dans l’interface n’est ni visible ni accessible auxautres objets

La dissociation de l’interface et de l’implementation : encapsulation

H & H: Research and Training 31 / 125

Page 52: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Une classe

peut cacher son implementation

ne montre aux autres objets que ce qu’elle autorise : interface

Proprietes

Les objets interagissent les uns avec les autres via les interfaces

Ce qui n’est pas dans l’interface n’est ni visible ni accessible auxautres objets

La dissociation de l’interface et de l’implementation : encapsulation

H & H: Research and Training 31 / 125

Page 53: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

L’encapsulation, pourquoi?

Protection des donneesdonnees inaccessibles de l’exterieur

acces uniquement via l’interface

possibilite de tracer tous les acces aux donnees

focalisation sur les services rendus par les objets plutot que surleur structure

H & H: Research and Training 32 / 125

Page 54: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

L’encapsulation, comment?

En definissant des niveaux de visibilite

Les methodes comme les attributs sont concernes

(Trois) niveaux de visibilites

public : visible par tous les autres objets

protected : visible par certains objets (a voir plus tard)

private : visible seulement depuis l’interieur de l’objet

H & H: Research and Training 33 / 125

Page 55: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Dans un diagramme de classes

On peut utiliser

+ : pour indiquer que la propriete a une visibilite public

- : pour indiquer que la propriete a une visibilite private

# : pour indiquer que la propriete a une visibilite protected

H & H: Research and Training 34 / 125

Page 56: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Livre

- titre+ nbrPages# datePublication

?

Dans cet exemple

titre a une visibilite private

nbrPages a une visibilite public

datePublication a une visibilite protected

H & H: Research and Training 35 / 125

Page 57: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Certains langages, comme Smalltalk exige que :

les attributs soient private

les methodes soient public

En Java, PHP

C’est juste une convention (une bonne pratique)

H & H: Research and Training 36 / 125

Page 58: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Certains langages, comme Smalltalk exige que :

les attributs soient private

les methodes soient public

En Java, PHP

C’est juste une convention (une bonne pratique)

H & H: Research and Training 36 / 125

Page 59: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Personne

- nom- prenom- dateNaissance

+ getNom()+ getPrenom()+ calculerAge()

Encapsulation

Seules les trois methodes getNom(), getPrenom() etcalculerAge() sont visibles par les autres objets

Les autres objets ignorent l’existence de l’attributdateNaissance

H & H: Research and Training 37 / 125

Page 60: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Personne

- nom- prenom- dateNaissance

+ getNom()+ getPrenom()+ calculerAge()

Encapsulation

Seules les trois methodes getNom(), getPrenom() etcalculerAge() sont visibles par les autres objets

Les autres objets ignorent l’existence de l’attributdateNaissance

H & H: Research and Training 37 / 125

Page 61: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Les methodes publiques

constituent l’interface de la classe

sont accessibles de l’exterieur

Les methodes privees

sont declenchees par le biais d’autres methodes privees oupubliques

ne sont pas accessibles depuis l’exterieur

ne sont accessible qu’au developpeur de la classe

H & H: Research and Training 38 / 125

Page 62: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Question

Si les attributs sont toujours prives, comment modifier leurs valeurs?

Reponse

Les getters (accesseurs) pour recuperer la valeur(getNomAttribut())

Les setters (mutateurs) pour modifier la valeur(setNomAttribut())

H & H: Research and Training 39 / 125

Page 63: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Question

Si les attributs sont toujours prives, comment modifier leurs valeurs?

Reponse

Les getters (accesseurs) pour recuperer la valeur(getNomAttribut())

Les setters (mutateurs) pour modifier la valeur(setNomAttribut())

H & H: Research and Training 39 / 125

Page 64: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Exercice

Definir les getters/setters de la classe Livre

Livre

- titre- nbrPages- datePublication

?

H & H: Research and Training 40 / 125

Page 65: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Comment creer un objet d’une classe?

en utilisant le constructeur de la classe

en invoquant l’operateur new

Qu’est ce qu’un constructeur?

une methode particuliere et specifique a chaque classe

elle porte le nom de la classe et n’a pas de valeur de retour

H & H: Research and Training 41 / 125

Page 66: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Comment creer un objet d’une classe?

en utilisant le constructeur de la classe

en invoquant l’operateur new

Qu’est ce qu’un constructeur?

une methode particuliere et specifique a chaque classe

elle porte le nom de la classe et n’a pas de valeur de retour

H & H: Research and Training 41 / 125

Page 67: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Exemple

En Java, C++, PHP, C#, TypeScript : new Personne();

En Smalltalk : Personne new

H & H: Research and Training 42 / 125

Page 68: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

L’encapsulation

La notion de classe

Recapitulons

Une classe a :

des attributs

des methodes dont

le constructeur

les getters

les setters

H & H: Research and Training 43 / 125

Page 69: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes

Relations entre classes

Considerons la classe Adresse :

Adresse

rue

villecodePostal

Hypothese

Supposant que chaque personne possede une adresse (objet cree apartir de la classe Adresse)

H & H: Research and Training 44 / 125

Page 70: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes

Relations entre classes

Considerons la classe Adresse :

Adresse

rue

villecodePostal

Hypothese

Supposant que chaque personne possede une adresse (objet cree apartir de la classe Adresse)

H & H: Research and Training 44 / 125

Page 71: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes

Relations entre classes

Comment schematiser cela en UML?

En ajoutant dans la classe Personne un attribut adresse de typeAdresse?

Personne

nomprenom

dateNaissanceadresse

Adresse

rue

villecodePostal

H & H: Research and Training 45 / 125

Page 72: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes

Relations entre classes

Comment schematiser cela en UML?

En ajoutant dans la classe Personne un attribut adresse de typeAdresse?

Personne

nomprenom

dateNaissanceadresse

Adresse

rue

villecodePostal

H & H: Research and Training 45 / 125

Page 73: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes

Relations entre classes

En reliant les deux classes (sommets d’un graphe) par une arete

Personne

nomprenom

dateNaissance

Adresse

rue

villecodePostal

Relation entre classes = association

H & H: Research and Training 46 / 125

Page 74: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes

Relations entre classes

En reliant les deux classes (sommets d’un graphe) par une arete

Personne

nomprenom

dateNaissance

Adresse

rue

villecodePostal

Relation entre classes = association

H & H: Research and Training 46 / 125

Page 75: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes

Relations entre classes

L’association peut etre nommee

Personne

nomprenom

dateNaissance

Adresse

rue

villecodePostal

possede

H & H: Research and Training 47 / 125

Page 76: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes

Relations entre classes

On peut aussi indiquer le sens de la lecture

Personne

nomprenom

dateNaissance

Adresse

rue

villecodePostal

possede >

H & H: Research and Training 48 / 125

Page 77: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes

Relations entre classes

On peut aussi ajouter deux noms a l’association : un pour chaquesens de lecture

Personne

nomprenom

dateNaissance

Adresse

rue

villecodePostal

possede >< appartient

H & H: Research and Training 49 / 125

Page 78: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes La navigabilite

Relations entre classes

Comment faire pour rendre la relation bidirectionnelle?

Pour une personne, on peut connaıtre son adresse

Et pour une adresse, on peut connaıtre son proprietaire

H & H: Research and Training 50 / 125

Page 79: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes La navigabilite

Relations entre classes

L’association est maintenant bidirectionnelle

Personne

nomprenom

dateNaissance

Adresse

rue

villecodePostal

possede

H & H: Research and Training 51 / 125

Page 80: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes La navigabilite

Les trois associations suivantes sont unidirectionnelles et equivalentes

Personne

nomprenom

dateNaissance

Adresse

rue

villecodePostal

Personne

nomprenom

dateNaissance

Adresse

rue

villecodePostal

Personne

nomprenom

dateNaissance

Adresse

rue

villecodePostal

H & H: Research and Training 52 / 125

Page 81: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes Les roles

Relations entre classes

On peut definir des roles

Personne

nomprenom

dateNaissance

Universite

nom

villeenseigne >

employeurenseignant

Explication

Le role d’une Personne dans une Universite estenseignant

Le role d’une Universite pour une Personne est employeur

H & H: Research and Training 53 / 125

Page 82: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes Les roles

Relations entre classes

On peut definir des roles

Personne

nomprenom

dateNaissance

Universite

nom

villeenseigne >

employeurenseignant

Explication

Le role d’une Personne dans une Universite estenseignant

Le role d’une Universite pour une Personne est employeur

H & H: Research and Training 53 / 125

Page 83: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes Les classes liees par plusieurs associations

Relations entre classes

On peut definir une ou plusieurs associations entre deux classes

Employe

nomprenom

dateNaissance

Entreprise

nom

ville

travaille >

peut diriger >

Deux associations possibles entre Employe et Entreprise

Un Employe travaille dans une Entreprise

Un Employe peut diriger une Entreprise

H & H: Research and Training 54 / 125

Page 84: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes Les classes liees par plusieurs associations

Relations entre classes

On peut definir une ou plusieurs associations entre deux classes

Employe

nomprenom

dateNaissance

Entreprise

nom

ville

travaille >

peut diriger >

Deux associations possibles entre Employe et Entreprise

Un Employe travaille dans une Entreprise

Un Employe peut diriger une Entreprise

H & H: Research and Training 54 / 125

Page 85: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes L’auto-association

Relations entre classes

Remarque

Une association peut concerner une seule classe

H & H: Research and Training 55 / 125

Page 86: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes L’auto-association

Relations entre classesExemple d’auto-association

Personne

nomprenom

dateNaissanceest l’enfant >

est le parent >

Comment lire ca?

Une personne est l’enfant d’une autre personne

Une personne est le parent d’une autre personne

H & H: Research and Training 56 / 125

Page 87: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes L’auto-association

Relations entre classesExemple d’auto-association

Personne

nomprenom

dateNaissanceest l’enfant >

est le parent >

Comment lire ca?

Une personne est l’enfant d’une autre personne

Une personne est le parent d’une autre personne

H & H: Research and Training 56 / 125

Page 88: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes Les associations n-aires

Relations entre classes

Remarque

Toutes les associations, qu’on a vu, sont binaires

C’est-a-dire, elles relient au plus deux classes

On peut aussi utiliser des associations ternaires voire n-aires

H & H: Research and Training 57 / 125

Page 89: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes Les associations n-aires

Relations entre classesExemple d’association ternaire

Cours

Salle Etudiant

Toute association non-binaire peut etre transformee en un ensembled’associations binaires.

H & H: Research and Training 58 / 125

Page 90: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les relations entre classes Les associations n-aires

Relations entre classesExemple d’association ternaire

Cours

Salle Etudiant

Toute association non-binaire peut etre transformee en un ensembled’associations binaires.

H & H: Research and Training 58 / 125

Page 91: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres

Relations entre classes

Quatre associations particulieres

heritage

agregation

composition

dependance

H & H: Research and Training 59 / 125

Page 92: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

L’heritage, quand ?

Lorsque deux ou plusieurs classes partagent plusieurs attributs(et methodes)

Lorsqu’une Classe1 est une sorte de Classe2

H & H: Research and Training 60 / 125

Page 93: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classesExemple

Un enseignant a un nom, un prenom, une date de naissance, unsalaire et une date de recrutement

Un etudiant a aussi un nom, un prenom, une date de naissance etun niveau

Semantiquement, enseignant et etudiant sont une sorte depersonne

En plus, les deux partagent plusieurs attributs tels que nom,prenom et date de naissance

Donc, on peut mettre en commun les attributs nom, prenom, datede naissance dans une classe Personne

Les classes Etudiant et Enseignant heriteront de la classePersonne

H & H: Research and Training 61 / 125

Page 94: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classesExemple

Un enseignant a un nom, un prenom, une date de naissance, unsalaire et une date de recrutement

Un etudiant a aussi un nom, un prenom, une date de naissance etun niveau

Semantiquement, enseignant et etudiant sont une sorte depersonne

En plus, les deux partagent plusieurs attributs tels que nom,prenom et date de naissance

Donc, on peut mettre en commun les attributs nom, prenom, datede naissance dans une classe Personne

Les classes Etudiant et Enseignant heriteront de la classePersonne

H & H: Research and Training 61 / 125

Page 95: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classesExemple

Un enseignant a un nom, un prenom, une date de naissance, unsalaire et une date de recrutement

Un etudiant a aussi un nom, un prenom, une date de naissance etun niveau

Semantiquement, enseignant et etudiant sont une sorte depersonne

En plus, les deux partagent plusieurs attributs tels que nom,prenom et date de naissance

Donc, on peut mettre en commun les attributs nom, prenom, datede naissance dans une classe Personne

Les classes Etudiant et Enseignant heriteront de la classePersonne

H & H: Research and Training 61 / 125

Page 96: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classesExemple

Un enseignant a un nom, un prenom, une date de naissance, unsalaire et une date de recrutement

Un etudiant a aussi un nom, un prenom, une date de naissance etun niveau

Semantiquement, enseignant et etudiant sont une sorte depersonne

En plus, les deux partagent plusieurs attributs tels que nom,prenom et date de naissance

Donc, on peut mettre en commun les attributs nom, prenom, datede naissance dans une classe Personne

Les classes Etudiant et Enseignant heriteront de la classePersonne

H & H: Research and Training 61 / 125

Page 97: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classesExemple

Un enseignant a un nom, un prenom, une date de naissance, unsalaire et une date de recrutement

Un etudiant a aussi un nom, un prenom, une date de naissance etun niveau

Semantiquement, enseignant et etudiant sont une sorte depersonne

En plus, les deux partagent plusieurs attributs tels que nom,prenom et date de naissance

Donc, on peut mettre en commun les attributs nom, prenom, datede naissance dans une classe Personne

Les classes Etudiant et Enseignant heriteront de la classePersonne

H & H: Research and Training 61 / 125

Page 98: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classesExemple

Un enseignant a un nom, un prenom, une date de naissance, unsalaire et une date de recrutement

Un etudiant a aussi un nom, un prenom, une date de naissance etun niveau

Semantiquement, enseignant et etudiant sont une sorte depersonne

En plus, les deux partagent plusieurs attributs tels que nom,prenom et date de naissance

Donc, on peut mettre en commun les attributs nom, prenom, datede naissance dans une classe Personne

Les classes Etudiant et Enseignant heriteront de la classePersonne

H & H: Research and Training 61 / 125

Page 99: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

L’heritage, pourquoi ?

Pour :

reutiliser le code

eviter la duplication de constituants (attributs, methodes)

Comment faire l’heritage en UML?

H & H: Research and Training 62 / 125

Page 100: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

L’heritage, pourquoi ?

Pour :

reutiliser le code

eviter la duplication de constituants (attributs, methodes)

Comment faire l’heritage en UML?

H & H: Research and Training 62 / 125

Page 101: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classesEtape 1 : Mettre les proprietes en commun (nom, prenom et dateNaissance)dans une nouvelle classe Personne

Personne

nomprenom

dateNaissance

Enseignant

salaire

dateRecrutement

Etudiant

niveau

H & H: Research and Training 63 / 125

Page 102: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classesEtape 2 : Relier par une fleche les deux classes Etudiant et Enseignant a laclasse Personne

Personne

nomprenom

dateNaissance

Enseignant

salaire

dateRecrutement

Etudiant

niveau

H & H: Research and Training 64 / 125

Page 103: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

Terminologie

La classe Personne est appelee : classe mere, super classe,classe parente, classe racine...

Les classes Etudiant et Enseignant sont appelees : classesfilles, sous-classes, classes derivees...

On dit aussi que les classes Etudiant et Enseignant heritentde la classe Personne

H & H: Research and Training 65 / 125

Page 104: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

L’heritage, pourquoi ?

Representer l’ordre naturel des classes (hierarchie)

Organiser semantiquement et symboliquement les classes

Specifier ou generaliser une classe

Qu’est ce que la generalisation?ajouter une classe au dessus d’une autre

Qu’est ce que la specialisation?ajouter une classe au dessous d’une autre

H & H: Research and Training 66 / 125

Page 105: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

L’heritage, pourquoi ?

Representer l’ordre naturel des classes (hierarchie)

Organiser semantiquement et symboliquement les classes

Specifier ou generaliser une classe

Qu’est ce que la generalisation?ajouter une classe au dessus d’une autre

Qu’est ce que la specialisation?ajouter une classe au dessous d’une autre

H & H: Research and Training 66 / 125

Page 106: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

L’heritage, pourquoi ?

Representer l’ordre naturel des classes (hierarchie)

Organiser semantiquement et symboliquement les classes

Specifier ou generaliser une classe

Qu’est ce que la generalisation?ajouter une classe au dessus d’une autre

Qu’est ce que la specialisation?ajouter une classe au dessous d’une autre

H & H: Research and Training 66 / 125

Page 107: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

L’heritage : proprietes

Transitivite : si A herite de B et B herite de C, alors A herite de C

Non-reflexif : une classe n’herite pas d’elle meme

Non-symetrique : si A herite de B, alors B n’herite pas de A

Non-cyclique : si A herite de B et B herite de C, alors C ne peutheriter de A

H & H: Research and Training 67 / 125

Page 108: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

Qu’est ce que l’heritage multiple?

le fait d’heriter de plusieurs classes au meme temps

L’heritage multiple, est-il possible?

autorise par certains LOO comme : OCaml, Eiffel...

interdit par certains autres : PHP, Java...

H & H: Research and Training 68 / 125

Page 109: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

Qu’est ce que l’heritage multiple?

le fait d’heriter de plusieurs classes au meme temps

L’heritage multiple, est-il possible?

autorise par certains LOO comme : OCaml, Eiffel...

interdit par certains autres : PHP, Java...

H & H: Research and Training 68 / 125

Page 110: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

Quel probleme peut poser l’heritage multiple?

Un probleme de confusion (nommage) : si une classe A herite de deuxclasses B et C qui ont un attribut ou une methode en commun

Les LOO qui interdisent l’heritage multiple proposent soit

les interfaces (PHP, Java, C#, TypeScript...)

les traits (PHP)

l’heritage virtuel (C++)

H & H: Research and Training 69 / 125

Page 111: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

Quel probleme peut poser l’heritage multiple?

Un probleme de confusion (nommage) : si une classe A herite de deuxclasses B et C qui ont un attribut ou une methode en commun

Les LOO qui interdisent l’heritage multiple proposent soit

les interfaces (PHP, Java, C#, TypeScript...)

les traits (PHP)

l’heritage virtuel (C++)

H & H: Research and Training 69 / 125

Page 112: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

En Java

Une classe mere peut-elle acceder aux attributs de sa classefille?

Une classe mere peut-elle avoir plusieurs classes filles?

Deux classes heritant la meme classe peuvent-elles avoir unattribut qui n’est pas dans la classe mere?

Une classe fille peut-elle avoir comme uniques attributs etmethodes ceux de la classe mere?

H & H: Research and Training 70 / 125

Page 113: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

Remarque

Dans certains LOO comme Java, C#..., toutes les classes heritentd’une classe racine appelee Object

Object offre plusieurs services tels que la conversion d’un objeten chaıne de caracteres, le clonage...

Object : cette classe racine n’existe pas en PHP...

H & H: Research and Training 71 / 125

Page 114: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’heritage

Relations entre classes

Questions

Existera t-il une methode (autre que le constructeur) dans un objet de type Poche?

La classe Broche n’a pas d’attribut propre, pourrait-elle etre implementee?

Pourrait-on ajouter une relation d’heritage entre Poche et Article?

Un livre peut-il etre Broche et de Poche?

H & H: Research and Training 72 / 125

Page 115: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’agregation

Relations entre classes

L’agregation

C’est une association non-symetrique

Modelisee par un losange vide cote agregat

Elle represente une relation de type ensemble/element

H & H: Research and Training 73 / 125

Page 116: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres L’agregation

Relations entre classes

Exemple d’agregation

Voiture

marque

modelecouleur

Pneu

dimension

poids

H & H: Research and Training 74 / 125

Page 117: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres La composition

Relations entre classes

La composition

C’est une agregation forte modelisee par un losange noir coteagregat

L’element n’existe pas sans l’agregat (l’element est detruit lorsquel’agregat n’existe plus)

L’element ne peut etre en relation qu’avec un seul agregat

H & H: Research and Training 75 / 125

Page 118: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres La composition

Relations entre classes

Exemple de composition

Batiment

numeroanneenbrEtages

Appartement

numero

type

H & H: Research and Training 76 / 125

Page 119: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres La composition

Relations entre classes

Questions

Si une piece est detruite, les chaises associees devraient-elles egalement etre detruites?

Si une piece est detruite, les portes associees devraient-elles egalement etre detruites?

Si un batiment est detruit, les portes associees a ses pieces devraient-elles egalementetre detruites ?

Si un batiment est detruit, les chaises associees a ses pieces devraient-elles egalementetre detruites ?

H & H: Research and Training 77 / 125

Page 120: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres La dependance

Relations entre classes

La dependance

Une premiere classe utilise une deuxieme sans que cette dernieresoit un membre de la premiere

Moyenne

note1

note2

calcul(Coefficient c)

Coefficient

coef1

coef2

H & H: Research and Training 78 / 125

Page 121: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres La dependance

Relations entre classes

La dependance

Une premiere classe utilise une deuxieme sans que cette dernieresoit un membre de la premiere

Moyenne

note1

note2

calcul(Coefficient c)

Coefficient

coef1

coef2

H & H: Research and Training 78 / 125

Page 122: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres La dependance

Relations entre classes

Exercice d’application 1

Les classes suivantes sont liees par une agregation ou unecomposition ?

but et gardien de but

voiture et moteur

foret et arbre

paragraphe et ligne

cinema et salle

salle et chaise

enseignant et cours

H & H: Research and Training 79 / 125

Page 123: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres La dependance

Relations entre classesExercice d’application 2

Identifier le type de relation (association, heritage, instanciation,composition, agregation) qui relie chacun des couples suivants :

Corps et Cœur

Ford et ConstructeurAutomobile

Tracteur et Vehicule

Rectangle et Carre

Homme et homme

Entier et Nombre

ChaıneDeCaracteres et Caractere

Homme et Humain

H & H: Research and Training 80 / 125

Page 124: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les associations particulieres La dependance

Association

Agregation

Composition

Pour recapituler

Une association est une relation entre deux classes de meme niveau conceptuel (aucunedes deux n’est plus importante que l’autre) (uses a)

Une agregation est une relation ensemble/element (has a)

Une composition est une relation ensemble/element tel que l’element n’existe plus sil’ensemble est detruit (owns a)

L’heritage est une relation entre deux classes dont une pouvant recuperer toutes lesproprietes de la deuxieme (is a)

Une dependance est une relation entre deux classes dont une propriete de la premiere faitreference la deuxieme (references a)

H & H: Research and Training 81 / 125

Page 125: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La multiplicite

Multiplicite

Definition

permet de definir le nombre minimum et maximum de relation quechaque objet de classe peut avoir avec un (ou plusieurs) objet d’une(ou plusieurs) autre classe

Equivalent en MCD : cardinalite

H & H: Research and Training 82 / 125

Page 126: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La multiplicite

Multiplicite

Definition

permet de definir le nombre minimum et maximum de relation quechaque objet de classe peut avoir avec un (ou plusieurs) objet d’une(ou plusieurs) autre classe

Equivalent en MCD : cardinalite

H & H: Research and Training 82 / 125

Page 127: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La multiplicite

Multiplicite

Six multiplicites possibles avec UML

0..1 : aucune ou au plus un objet

1 : exactement un seul objet [par defaut]

0..* ou * : 0 ou plusieurs objets

1..* : au moins un ou plusieurs objets

x..x ou x : exactement x objets

m..n : Au moins m et au plus n objets

H & H: Research and Training 83 / 125

Page 128: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La multiplicite

Multiplicite

Exemple

Une personne peut avoir zero ou plusieurs adresses

Une adresse appartient a une ou plusieurs personnes

Personne

nomprenom

dateNaissance

Adresse

rue

villecodePostalpossede

0..*1..*

H & H: Research and Training 84 / 125

Page 129: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La multiplicite

Multiplicite

Exercice 1 : definir les multiplicites entre les deux classes suivantes

Une voiture comporte plusieurs pneus

Un pneu appartient a une seule voiture

Voiture Pneu

comporte

H & H: Research and Training 85 / 125

Page 130: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La multiplicite

Multiplicite

Exercice 2 : definir les multiplicites entre les deux classes suivantes

Une voiture a un et un seul moteur

Un moteur appartient a une seule voiture

Voiture Moteur

possede

H & H: Research and Training 86 / 125

Page 131: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La multiplicite

Multiplicite

Exercice 3 : definir les multiplicites entre les deux classes suivantes

Un etudiant est inscrit dans une et une seule universite

Une universite a plusieurs etudiants

Etudiant Universite

etudie

H & H: Research and Training 87 / 125

Page 132: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La multiplicite

Multiplicite

Exercice 4 : definir les multiplicites entre les deux classes suivantes

Un livre est ecrit par un ou plusieurs auteurs

Un auteur a ecrit un ou plusieurs livres

Livre Auteur

est ecrit

H & H: Research and Training 88 / 125

Page 133: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La multiplicite

Multiplicite

Exercice 5 : determiner les multiplicites des associations suivantes

Mari Epouse

est marie

Homme Femme

est marie

Homme Femme

est ou a ete marie

H & H: Research and Training 89 / 125

Page 134: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La multiplicite

Multiplicite

Exercice 6 : determiner les multiplicites des associations suivantes

Personne

nomprenom

dateNaissanceest l’enfant >

est le parent >

H & H: Research and Training 90 / 125

Page 135: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La classe d’association

La classe d’association

Etant donne l’exemple suivant

Article

codeArticleprixUnitairequantiteEnStock

Commande

numeroCommandedateCommande

0..*1..*

QuestionOu peut-on placer la quantiteCommandee?

H & H: Research and Training 91 / 125

Page 136: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La classe d’association

La classe d’association

Etant donne l’exemple suivant

Article

codeArticleprixUnitairequantiteEnStock

Commande

numeroCommandedateCommande

0..*1..*

QuestionOu peut-on placer la quantiteCommandee?

H & H: Research and Training 91 / 125

Page 137: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La classe d’association

La classe d’association

Dans Article?

Article

codeArticleprixUnitairequantiteEnStockquantiteCommandee

Commande

numeroCommandedateCommande

0..*1..*

ImpossibleAinsi, une seule quantiteCommandee pour tous ceux quicommandent le meme article

H & H: Research and Training 92 / 125

Page 138: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La classe d’association

La classe d’association

Dans Article?

Article

codeArticleprixUnitairequantiteEnStockquantiteCommandee

Commande

numeroCommandedateCommande

0..*1..*

ImpossibleAinsi, une seule quantiteCommandee pour tous ceux quicommandent le meme article

H & H: Research and Training 92 / 125

Page 139: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La classe d’association

La classe d’association

Dans Commande?

Article

codeArticleprixUnitairequantiteEnStock

Commande

numeroCommandedateCommandequantiteCommandee

0..*1..*

Impossible aussiAinsi, une seule quantiteCommandee pour tous les articles d’unememe commande

H & H: Research and Training 93 / 125

Page 140: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La classe d’association

La classe d’association

Dans Commande?

Article

codeArticleprixUnitairequantiteEnStock

Commande

numeroCommandedateCommandequantiteCommandee

0..*1..*

Impossible aussiAinsi, une seule quantiteCommandee pour tous les articles d’unememe commande

H & H: Research and Training 93 / 125

Page 141: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La classe d’association

La classe d’association

ConclusionLa quantiteCommandee ne peut etre ni dans Article ni dansCommande

Solution : creer une classe d’association

Article

codeArticleprixUnitairequantiteEnStock

Commande

numeroCommandedateCommande

0..*1..*

ArticleCommande

quantiteCommandee

H & H: Research and Training 94 / 125

Page 142: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

La classe d’association

La classe d’association

ConclusionLa quantiteCommandee ne peut etre ni dans Article ni dansCommande

Solution : creer une classe d’association

Article

codeArticleprixUnitairequantiteEnStock

Commande

numeroCommandedateCommande

0..*1..*

ArticleCommande

quantiteCommandee

H & H: Research and Training 94 / 125

Page 143: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le polymorphisme

Polymorphisme

Definition

En grec : prendre plusieurs formes

En POO : possibilite de definir plusieurs methodes avec le memenom

meme si la meme methode existe dans la classe mere avec lameme signature

meme si une methode avec le nom existe dans la classe mais avecune signature differente

H & H: Research and Training 95 / 125

Page 144: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le polymorphisme

Polymorphisme

Surcharge (overload)

Definir dans une classe plusieurs methodes portant le meme nomet avec des signatures differentes

Autorisee en Java mais pas par tous les LOO (comme PHP...)

Redefinition

Redefinir une methode, heritee, dans la classe fille

Autorisee par tous les LOO (un des objectifs de l’heritage)

La signature de la methode redefinie doit etre identique a celle dela methode heritee dans la classe mere

H & H: Research and Training 96 / 125

Page 145: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Le polymorphisme

Polymorphisme

Remarque

Lorsqu’une methode est appelee, le compilateur commence parregarder dans la classe de l’objet ou la methode a ete appelee

S’il la retrouve, il l’execute

Sinon il la repasse au niveau superieure (classe mere directe)

H & H: Research and Training 97 / 125

Page 146: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les classes abstraite et finale

Classes abstraite

Classe abstraite

C’est une classe qu’on ne peut instancierPar exemple, on sait qu’un etre humain est soit homme soitfemme. Donc, la classe Humain peut etre declaree abstraite.

H & H: Research and Training 98 / 125

Page 147: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les classes abstraite et finale

Classes abstraite

En UML, on ecrit le nom d’une classe abstraite en italique

Humain

Homme Femme

H & H: Research and Training 99 / 125

Page 148: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les classes abstraite et finale

Classes abstraite

Methode abstraite

C’est une methode indefinie (elle n’est pas implementee)

Si une classe contient une methode abstraite, elle doit etre aussideclaree abstraite

Si une classe herite d’une classe abstraite, alors elle doitimplementer les methodes abstraites de cette derniere

Remarque

Certains LOO, comme le C++, permettent de proposer uneimplementation par defaut pour les methodes abstraites

H & H: Research and Training 100 / 125

Page 149: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les classes abstraite et finale

Classes finale

Classe finale

C’est une classe qu’on ne peut heriter

Methode finale

C’est une methode que les classes filles ne peuvent redefinir

H & H: Research and Training 101 / 125

Page 150: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les classes abstraite et finale

Classes abstraite et finale

Exercice

Une classe abstraite doit-elle avoir une ou plusieurs methodesabstraites ?

Une classe finale peut-elle avoir une methode abstraite?

Une classe abstraite peut-elle avoir une methode finale?

Une classe finale doit-elle avoir une methode finale?

Une classe finale peut-elle heriter d’une classe abstraite?

Une classe peut-elle etre finale et abstraite a la fois?

H & H: Research and Training 102 / 125

Page 151: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les interfaces

Les interfaces

Une interface (un contrat)

Une classe abstraite definie par le mot cle interface et dont toutesles methodes sont abstraites.

En UML, une interface est schematisee ainsi

<< interface >>ISalutation

direBonjour()sayHello()

H & H: Research and Training 103 / 125

Page 152: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les interfaces

Les interfaces

Une interface (un contrat)

Une classe abstraite definie par le mot cle interface et dont toutesles methodes sont abstraites.

En UML, une interface est schematisee ainsi

<< interface >>ISalutation

direBonjour()sayHello()

H & H: Research and Training 103 / 125

Page 153: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les interfaces

Les interfaces

En UML, voici comment dire qu’une classe herite d’une interface

<< interface >>ISalutation

direBonjour()sayHello()

Personne

nomprenom

dateNaissance

H & H: Research and Training 104 / 125

Page 154: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les interfaces

Les interfaces

Remarques

Une classe qui herite d’une interface doit implementer toutes sesmethodes

Une classe peut heriter de plusieurs interfaces

Une interface peut heriter d’autres interfaces

H & H: Research and Training 105 / 125

Page 155: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UMLEtant donne l’exemple suivant

Personne

nomprenom

dateNaissance

Universite

nom

ville

enseignant

etudiant

Comment lire ca?

Une personne peut avoir le role d’enseignant dans une universite

Une personne peut avoir le role d’etudiant dans une universite

Mais, elle peut aussi avoir les deux roles

H & H: Research and Training 106 / 125

Page 156: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UMLEtant donne l’exemple suivant

Personne

nomprenom

dateNaissance

Universite

nom

ville

enseignant

etudiant

Comment lire ca?

Une personne peut avoir le role d’enseignant dans une universite

Une personne peut avoir le role d’etudiant dans une universite

Mais, elle peut aussi avoir les deux roles

H & H: Research and Training 106 / 125

Page 157: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UML

Pour indiquer qu’une personne ne peut avoir les deux roles a lafois, on rajoute une contrainte

Personne

nomprenom

dateNaissance

Universite

nom

ville

enseignant

etudiant

{xor}

xor : eXclusive OR (OU exclusif)

H & H: Research and Training 107 / 125

Page 158: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Etant donne l’exemple suivant

Personne

nomprenom

dateNaissance

Entreprise

nom

ville

employe

dirigeant

Comment lire ca?

Une personne peut avoir le role d’employe dans une entreprise

Une personne peut avoir le role de dirigeant dans une entreprise

Mais est-ce qu’une personne qui n’est pas employe dans cetteentreprise peut la diriger?

D’apres ce diagramme de classes : oui

H & H: Research and Training 108 / 125

Page 159: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Etant donne l’exemple suivant

Personne

nomprenom

dateNaissance

Entreprise

nom

ville

employe

dirigeant

Comment lire ca?

Une personne peut avoir le role d’employe dans une entreprise

Une personne peut avoir le role de dirigeant dans une entreprise

Mais est-ce qu’une personne qui n’est pas employe dans cetteentreprise peut la diriger?

D’apres ce diagramme de classes : oui

H & H: Research and Training 108 / 125

Page 160: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UML

Pour indiquer qu’une personne qui dirige une entreprise estforcement un de ses employes, on rajoute la contrainte suivante

Personne

nomprenom

dateNaissance

Entreprise

nom

ville

employe

dirigeant

{sous-ensemble}

H & H: Research and Training 109 / 125

Page 161: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Etant donne l’exemple suivant

Client

nomprenom

dateNaissance

Compte

numerosoldevalMaxDecouvert

crediter(int x)

dediter(int x)

1..*1..2

Comment lire ca?

Un client peut avoir 1 ou plusieurs comptes bancaires

Un compte appartient a une ou deux clients

Mais comment dire que le solde de chaque compte peut etrenegatif mais sans depasser la valeur maximale de decouvert ?

H & H: Research and Training 110 / 125

Page 162: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Etant donne l’exemple suivant

Client

nomprenom

dateNaissance

Compte

numerosoldevalMaxDecouvert

crediter(int x)

dediter(int x)

1..*1..2

Comment lire ca?

Un client peut avoir 1 ou plusieurs comptes bancaires

Un compte appartient a une ou deux clients

Mais comment dire que le solde de chaque compte peut etrenegatif mais sans depasser la valeur maximale de decouvert ?

H & H: Research and Training 110 / 125

Page 163: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UML

Il faut ajouter une contrainte

Client

nomprenom

dateNaissance

Compte

numerosoldevalMaxDecouvert

crediter(int x)

dediter(int x)

{(Compte.solde + Compte.valMaxDecouvert)>=0} 1..*1..2

Remarque

Si on ajoute le nom d’association + les roles, l’association deviendratrop dense et presque illisible.

H & H: Research and Training 111 / 125

Page 164: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UMLSolution : utiliser OCL

Object Constraint Language

Initialement, un projet d’IBM

Appartenant a UML depuis UML 1.1

Langage formel d’expression

Permettant de definir des contraintes sur les differents diagrammes d’UML, et enparticulier le diagramme de classes

Base sur la theorie des ensembles et la logique des predicats

Permettant principalement d’exprimer 2 types de contraintes sur l’etat d’un objetou d’un ensemble d’objets

Des invariants qui doivent etre respectes en permanence

Des pre et post-conditions pour une operation

H & H: Research and Training 112 / 125

Page 165: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UML

Deux versions d’OCL

OCL 1 : integre dans UML 1.1 de l’OMG

OCL 2 : integre dans UML 2.0 et pouvant etre generalise surd’autres modeles que ceux d’UML

H & H: Research and Training 113 / 125

Page 166: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UMLAvec OCL, les contraintes peuvent etre definies un peu loin de l’association

Dans ce cas, il faut

preciser le contexte

definir la contrainte

context Compteinv : solde + valMaxDecouvert >= 0

Explication

context : indique l’element concerne par la contrainte

inv (pour invariant) : exprime une contrainte sur un element qui doit etrerespectee en permanence.

H & H: Research and Training 114 / 125

Page 167: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UMLAvec OCL, les contraintes peuvent etre definies un peu loin de l’association

Dans ce cas, il faut

preciser le contexte

definir la contrainte

context Compteinv : solde + valMaxDecouvert >= 0

Explication

context : indique l’element concerne par la contrainte

inv (pour invariant) : exprime une contrainte sur un element qui doit etrerespectee en permanence.

H & H: Research and Training 114 / 125

Page 168: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UMLOn peut definir plusieurs contraintes

context Compteinv : solde + valMaxDecouvert >= 0

context Compte::debiter(int somme )pre : somme > 0 and solde + valMaxDecouvert >= sommepost : solde = solde@pre - somme

Explication

context : indique l’element concerne par la contrainte (ici la methodedebiter() de la classe Compte)

pre : exprime une contrainte sur un element qui doit etre respectee pourque l’appel de la methode soit valide

post : exprime une contrainte sur un element qui doit etre respecteeapres l’appel de la methode

H & H: Research and Training 115 / 125

Page 169: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UMLOn peut definir plusieurs contraintes

context Compteinv : solde + valMaxDecouvert >= 0

context Compte::debiter(int somme )pre : somme > 0 and solde + valMaxDecouvert >= sommepost : solde = solde@pre - somme

Explication

context : indique l’element concerne par la contrainte (ici la methodedebiter() de la classe Compte)

pre : exprime une contrainte sur un element qui doit etre respectee pourque l’appel de la methode soit valide

post : exprime une contrainte sur un element qui doit etre respecteeapres l’appel de la methode

H & H: Research and Training 115 / 125

Page 170: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Les contraintes avec UML

4 contraintes possibles pour les collections

Set : ensemble mathematique sans doublons et sans ordre

Ordered : ensemble mathematique sans doublons et avec ordre

Bag : ensemble mathematique avec possibilite de doublons etsans ordre

Sequence : ensemble mathematique avec possibilite de doublonset avec ordre

H & H: Research and Training 116 / 125

Page 171: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Exemple 1 : un cours est compose d’une sequence ordonnee(sans doublons) de seances

Seance Cours

{ordered}1..* 1

Exemple 2 : un fichierPPT contient une suite ordonnee (avecpossibilite de doublons) de transparents

Transparent FichierPPT

{sequence} appartient

* 1

H & H: Research and Training 117 / 125

Page 172: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Les contraintes avec UML

Exemple 1 : un cours est compose d’une sequence ordonnee(sans doublons) de seances

Seance Cours

{ordered}1..* 1

Exemple 2 : un fichierPPT contient une suite ordonnee (avecpossibilite de doublons) de transparents

Transparent FichierPPT

{sequence} appartient

* 1

H & H: Research and Training 117 / 125

Page 173: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Comment construire un diagramme de classe?

Comment construire un diagramme de classe?

Etapes

1 Preparer un dictionnaire de donnees

2 Identifier les classes et conserver les classes pertinentes

3 Identifier les associations et conserver les associationspertinentes

4 Identifier les attributs

5 Verifier s’il est possible de simplifier en utilisant l’heritage

6 Iterer et affiner le diagramme

H & H: Research and Training 118 / 125

Page 174: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Comment construire un diagramme de classe?

Comment construire un diagramme de classe?

Etape 1 : Preparer un dictionnaire de donnees

Lire le texte

Extraire tout nom ou verbe pouvant participer a notre systemed’information

Garder les synonymes tant qu’on n’a pas fini la lecture du texte

Verifier que la liste ne contient pas de doublons

H & H: Research and Training 119 / 125

Page 175: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Comment construire un diagramme de classe?

Comment construire un diagramme de classe?

Etape 2 : Identifier les classes et conserver les classes pertinentes

Eviter d’etre trop selectif

Ne pas chercher l’heritage a cette etape

Eliminer les classes redondantes, les synonymes, les classesvagues ou les classes sans lien avec le contexte

H & H: Research and Training 120 / 125

Page 176: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Comment construire un diagramme de classe?

Comment construire un diagramme de classe?

Etape 3 : Identifier les associations et conserver les associationspertinentes

Justifier l’existence d’un cycle car c’est souvent redondant

Decomposer les associations n-aires en associations binaires

Verifier si les associations definies par rapport aux classes fillespeuvent etre remontees a la classe mere

H & H: Research and Training 121 / 125

Page 177: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Comment construire un diagramme de classe?

Comment construire un diagramme de classe?

Etape 4 : Identifier les attributs

Ne pas confondre attribut et classe

Ne pas pousser la recherche des attributs a l’extreme

Supprimer les synonymes

Faire attention aux attributs de classe association

Supprimer les attributs derives

Source : UML 2 De l’apprentissage a la pratique de Laurent Audibert

Les attributs derives peuvent etre calcules a partir d’autres attributs et de formules decalcul. Lors de la conception, un attribut derive peut etre utilise comme marqueurjusqu’a ce que vous puissiez determiner les regles a lui appliquer.Les attributs derives sont symbolises par l’ajout d’un � / � devant leur nom.

H & H: Research and Training 122 / 125

Page 178: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Comment construire un diagramme de classe?

Comment construire un diagramme de classe?

Etape 5 : Verifier s’il est possible de simplifier en utilisant l’heritage

Verifier si certaines classes partagent certains attributs et/oumethodes

Eviter les raffinements excessifs

H & H: Research and Training 123 / 125

Page 179: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Comment construire un diagramme de classe?

Comment construire un diagramme de classe?

Etape 6 : Iterer et affiner le diagramme

Ne pas chercher un diagramme complet a la premiere passe

Faire des iterations continuelles

Verifier le diagramme de classe apres avoir fini les diagrammesd’etats-transitions et de sequences

Revenir sur le diagramme de classe apres avoir fini lesdiagrammes d’etats-transitions et de sequences

Garder la possibilite de corriger des eventuelles anomalies dudiagramme de classe pendant la phase de developpement

H & H: Research and Training 124 / 125

Page 180: UML : concept objet et diagramme de classes · 2020-01-05 · Plan 7 Les associations particulieres` L’heritage´ L’agregation´ La composition La dependance´ 8 La multiplicite´

Comment construire un diagramme de classe?

Comment construire un diagramme de classe?

Citation 1 : Jan van de Sneptscheut

La difference entre la theorie et la pratique, c’est qu’en theorie, il n’y apas de difference entre la theorie et la pratique, mais qu’en pratique, ily en a une.

Citation 2 : Albert EinsteinLa theorie, c’est quand on sait tout et que rien ne fonctionne. Lapratique, c’est quand tout fonctionne et que personne ne sait pourquoi.Ici, nous avons reuni theorie et pratique : Rien ne fonctionne... etpersonne ne sait pourquoi !

H & H: Research and Training 125 / 125