Cours (UML) Diagrammes de classes et diagrammes d’objets, tutoriel & guide de travaux pratiques en pdf.
Le modèle des classes
Le modèle des classes d’UML saisit la structure statique d’un système en montrant les objets dans le système, les relations entre les objets, les attributs et les opérations qui caractérisent chaque classe d’objets. C’est le plus important des modèles d’UML. Il utilise plusieurs types de diagrammes:
les diagrammes de classes,
les diagrammes d’objets.
Objets et classes
Objets
Un objet est une entité qui a un sens dans le contexte de l’application.
Un objet possède une identité.
Instance d’objet -> référence à une chose précise
Classe d’objets -> référence à un groupe de choses similaires
Classes
Une classe d’objets décrit un groupe d’objet ayant des propriétés similaires, un comportement commun, des relations communes avec les autres objets.
« Personne », « Société », « Animal », « Fenêtre » sont des classes d’objets.
Diagrammes de classes et diagrammes d’objets
Les diagrammes de classes permettent de modéliser les classes. Les diagrammes d’objets permettent de modéliser les instances. En UML, le mot « objet » est souvent lié à la notion d’instance alors qu’en orienté objet usuel, le mot « objet » est souvent lié aux deux notions de classe et d’instance. Dans ce document, nous restons le plus explicite possible en gardant le mot instance.
« Personne » est une classe. « Candice » est une instance qui appartient à la classe « Personne ». « Bob » est une instance dont la classe n’est pas précisée. La troisième instance est un objet anonyme dont la classe est précisée mais pas le nom.
Les instances et classes sont représentées par des rectangles.
Les noms des instances et des classes commencent par une majuscule.
Un nom de classe est toujours au singulier : pas de S à la fin, même si conceptuellement une classe est un ensemble d’instances.
Le nom d’une instance est suivi de : et du nom de la classe à laquelle elle appartient. Le tout est souligné.
Un diagramme de classes ne peut pas contenir plusieurs fois la même classe. Un rectangle unique correspond à chaque classe du diagramme.
Commentaires
Un diagramme UML peut être précisé à l’aide commentaires. Un commentaire est écrit entre accolades.
{Ceci est un commentaire}
Les commentaires sont utiles pour minimiser les ambiguités des diagrammes.
Attributs
Un attribut est une propriété commune à tous les objets d’une classe. Par exemple, « nomFamille » et « âge » peuvent être des attributs de la classe « Personne ».
Pour chaque instance d’une classe ayant un attribut, l’instance possède cet attribut et cet attribut peut prendre une valeur pour une instance d’un objet.
Un attribut doit contenir une valeur pure et pas un autre objet. Sinon on préfère utiliser la notion de relation (cf. plus loin).
Les attributs sont définis dans la 2ème partie du rectangle désignant la classe. On fait suivre le nom de chaque attribut par : et le type de l’attribut.
Pour décrire les attributs d’une instance, on utilise également un deuxième rectangle contenant la liste des attributs avec leur valeur. Par exemple, le diagramme ci-dessous montre la classe « Personne » avec les attributs « nomFamille » et « age » et l’instance « Camille » de la classe « Personne » dont le nom de famille est « Claudel » et l’age est 20 ans.
Opérations et méthodes
Une opération est associée à une classe ; c’est une fonction ou une transformation qui peut être appliquée aux objets d’une classe. Par exemple, « Embaucher », « licencier », « payer » sont des opérations de la classe « Société ». Chaque opération possède un objet cible ou instance sur lequel elle s’applique.
La même opération peut s’appliquer sur plusieurs classes d’objets : on dit qu’elle est polymorphe. Une méthode est l’implémentation d’une opération sur une classe. En programmation orientée objet (Java, C++) on parle de méthodes et en spécification et conception orientées objet (OMT, UML), on parle d’opérations.
Une opération peut avoir des paramètres. (de la même manière qu’une fonction ou procédure en possède en programmation classique).
Quand une opération possède plusieurs méthodes dans plusieurs classes, elles doivent avoir la même signature.
signature : nombre et types des arguments. propriété est un terme générique pour désigner un attribut ou une opération.
Sur cet exemple, la classe « Personne » possède deux opérations ou méthodes : « changer detravail() » et « changer-d-adresse() » sans paramètre ni valeur de retour. La classe « ObjetGéométrique » possède 3 opérations ou méthodes : la méthode « déplacer() » possédant le paramètre « delta » de type « vecteur », la méthode « sélectionner() » possédant le paramètre « p » de type « point » et retournant une valeur de type « booleen », et la méthode « tourner() » sans paramètre ni valeur de retour.
Une requête est une opération qui se contente de calculer une valeur fonctionnelle sans modifier un objet. (par opposition aux opérations qui modifient un ou plusieurs objets). Les attributs de base caractérisent l’objet. Les attributs dérivés se calculent à partir des attributs de base.
Liens et associations
Les liens permettent d’établir des relations entre objets (ou instances). Les associations permettent d’établir des relations entre classes. Un lien est une connexion entre des instances d’objets. Une association décrit un groupe de liens ayant un sens commun et c’est une connexion entre des classes d’objets.
« travaille-pour » est une association de la classe « Personne » avec la classe « Société ».
« a-pour-capitale » est une association de la classe « Pays » avec la classe « Ville ».
Pour une association binaire : il existe un rôle vers l’avant et un rôle inverse. UML permet de spécifier le sens de lecture de l’association avec les symboles > et <. « emploie » est le rôle inverse de « travaille-pour ». « est-la-capitale-de » est le rôle inverse de « a-pour-capitale »
Une association est souvent implémentée sous forme de pointeurs dans les langages de programmation. En UML ou tout autre méthode de modélisation, cette utilisation de pointeurs est interdite et remplacée par la notion d’association. Plus loin, nous verrons comment passer d’une association modélisée avec une méthode orientée objet (UML, OMT) à des attributs pointeurs d’un langage orienté objet (Java, C++).
Une association peut relier une, deux ou plusieurs classes. Dans le cas où elle relie n classes elle est dite n-aire et dans le cas où elle relie deux classes, elle est dite binaire. Le symbole représentant une association n-aire est le losange. Il est placé au centre de l’association ; les n branches de l’association l’ont pour origine et ont les n classes de l’association pour destination.
Ci-dessus, la figure représente une association ternaire exprimant l’idée que des « personnes » travaillent au sein d’un « projet » en utilisant un « langage ».
L’utilisation des associations n-aires est souvent très ambigüe mais elle sert pour esquisser un modèle lorsque la précision est inutile, par exemple au début d’une spécifications de besoins.
Pour être plus précis sur le diagramme ci-dessus, il faut remplacer l’association par trois associations binaires reliant les 3 classes deux à deux.
Notes de cours UML
Bruno Bouzy 6 14/06/01 Pour les deux rôles d’une association binaire, la multiplicité est un ensemble de valeurs indiquant le nombre possible d’instances de la classe destination du rôle qui peuvent être reliées à une instance de la classe origine du rôle. En première approximation, on la décrit souvent comme étant « un » (l’intervalle [1,1]) ou « plusieurs » (l’intervalle [0,+¥[). Il existe donc des associations « un-à-un » ou « un-a-plusieurs » ou « plusieurs-à-plusieurs ».
La multiplicité est théoriquement un ensemble de valeurs mais en pratique c’est souvent un intervalle.
Par exemple, l’association « travaille-pour » entre la classe « Personne » et la classe « Société » est une association « un-a-plusieurs » dans le cas où plusieurs personnes travaillent pour une société donnée et une seule société emploie une personne donnée. L’association « a-pourcapitale» est une association binaire « un-a-un ».
…….