Rappel de syntaxe UML

par Tom
le 15/12/2019

Temps de lecture estimé : 15-20min


La classe suivante :

public class Exemple
{
    private int x;
    protected float y;
    public double z;

    public Exemple() { ... }

    public String toString() { ... }

    private void truc(int x) { ... }

    protected int machin(int a, String b) { ... }
}

correspond au schéma UML suivant :

Modificateurs d'accès

UML Java
- private
# protected
+ public

Classes et méthodes abstraites

Un élément abstrait est noté en italique :

public abstract class ClasseAbstraite
{
    public String maFonctionPasAbstraite();
    public abstract int maFonctionAbstraite();
}

correspond au schéma UML suivant :

Interfaces

Une interface est annotée «interface» (ce n'est pas obligatoire, mais c'est plus joli) :

public interface Comparable<T>
{
    boolean estPlusGrandQue(T autre);
}

correspond au schéma UML suivant :

Il n'est pas obligatoire d'écrire le nom des paramètres, on pourrait très bien faire ceci :

Relations

Relation UML Java En français
Dépendance class A { B attribut; } A utilise B (relation très vague, faire attention)
Association class B { void uneFonction(A objA); } B effectue des opérations sur A
Aggrégation class A { B[] elementsB; } A est associé à un ou plusieurs B et les B peuvent exister indépendamment de A.
Exemple : un utilisateur peut marquer un produit en favori, mais les produits continuent d'exister si l'utilisateur est supprimé.
Composition class A { B[] elementsB; } A est composé de un ou plusieurs B et les B n'existent que tant que A existe
Exemple : une commande constituée d'une ligne pour chaque produit; les lignes n'existent que tant que la commande existe, et supprimer la commande doit supprimer les lignes.
Généralisation
Spécialisation
class A extends B A est un cas particulier de / hérite de B
Réalisation class A implements B A implémente les méthodes de l'interface B

Merci à Jade pour avoir signalé quelques erreurs