Diagramme de classe en uml
Objectif
• Décrire la structure statique du système. • Sous forme de classes et de relations entre classes. • Lors de l’analyse → classes du domaine (correspondant aux ‘objets métiers’). • Lors de la conception : → ajout des classes « techniques » liées aux choix de conception (interfaces utilisateurs, persistance, patrons de conception…). • Lors de l’implantation : → ajout des classes liées à l’implantation dans un langage de programmation donné (structures de données ...).
Le concept de classe
• Décrit un ensemble d’objets (instances de la classe). Décrit leurs éléments communs (les différences sont ignorées). • Classe = type + module Type : ‘fabrique’ d’instances (objets) ayant les mêmes propriétés et les mêmes comportements classe objets instanciation (‘new’ en java)
Module : interface visible + corps caché (utilisation possible sans connaître l’implantation; si le corps évolue sans impact sur l’interface le reste du système n’est pas touché) interface corps profil des opérations visibles (publiques) implantation cachée (privée)
• Notation de base (suffisante au niveau analyse)
Nom de classe Attributs Opérations() Compte libellé solde créditer() débiter()
• Nombreuses notations supplémentaires (aux niveaux conception et implantation) : Indicateurs de visibilité des attributs et opérations + public (visible par tous) - privé (visible dans la classe uniquement) # protégé (visible dans la classe et ses sous classes) Types des attributs et profils des méthodes
opérations et méthodes de classe : soulignées méthodes abstraites : en italiques attributs calculés : notés / attribut : type Ex : - jour:int - mois:int - annee:int - / nojour : int - nomDesMois[12]:String={"janvier", "février" ..} + getJour():int … + getFormatEtendu():String … + getNomMois(in i:int):String
Date
La hiérarchisation des classes
• La hiérarchisation des classes permet de gérer la complexité. • Généralisation : factorisation des