POO & Design Patterns

Notions d'ULM

UML

UML (Unified Modeling Langage) est un langage graphique de modélisation objet qui permet à divers intervenants d'échanger de l'information.

UML est un standard qui ne dépend pas du langage de programmation.

Du coup, certaines particularités de Java n'ont pas de standard en UML. Nous allons donc devoir fixer des convensions propres à ce cours.
L'important c'est d'être compris.

Le sujet est très riche mais n'est pas le but du cours. Dans ce cours nous n'utiliseront que les diagrammes de classes pour communiquer plus efficacement.

Représentation d'une classe

  • Pour la visibilité, public (+), private (-) et default (=).
  • On précise seulement le type des paramètres.

Interface, enum, ...

UML n'a pas de convention pour certains features de Java. On adopte donc nos propres conventions qui semblent relativement commune.

Le standard est assez souple : l'important est d'être compris.

Relations entre les classes

Un diagramme UML présente les relations entre les classes.

Une flèche en pointillés indique qu'une classe utilise une autre classe. La classe pointée par la flèche est la classe utilisée.

UML offre plusieurs conventions pour affiner les relations entre classes.

Héritage

La relation d'héritage (extends) est représentée une flèche comme ci-dessous:

Implémentation d'une interface

Le fait qu'une classe implémente une interface (implements) est représentée une flèche comme ci-dessous:

Agrégation et composition

L'agrégation et la composition représentent toutes les deux le fait que les objets d'une classe contienne une ou plusieurs instances d'une autre classe.

La différence entre les deux notions est la force du lien entre les deux classes.

  • Agrégation : la destruction de la classe contenante n'implique pas la destruction de la classe contenue.
  • Composition : la destruction de la classe contenante implique la destruction de la classe contenue.

Agrégation vs composition (1/2)

Un dentiste à une relation:

  • d'agrégation avec ses dents (il peut vivre sans dents).
  • de composition avec son coeur (il ne peut pas vivre sans coeur).

Agrégation vs composition (2/2)

Mapping des classes dans la base de donnée:

  • La suppression d'un étudiant en BD n'entraine pas la suppression en BD des cours qu'il suit ni de son université.
  • La suppression d'un étudiant en BD entraine la suppression des commentaires sur cet étudiant.