1. Cet exercice met en évidence l’association multiple entre deux classes et la nécessité d’ajouter une contrainte (mécanisme d’extension d’UML) pour exprimer le fait que le rôle d’une personne à l’université est étudiant ou bien professeur. Seuls les noms des deux classes, des deux associations et la contrainte entre associations apparaissent dans la solution. En effet, vu les informations disponibles dans l’énoncé et l’objectif de la modélisation (mettre en évidence les relations entre classes), il est inutile d’ajouter d’autres informations.
2. Il s’agit de représenter à la fois les détails d’une classe et ses liens avec une autre classe. La classe principale à modéliser est la classe Rectangle. Elle est associée à la classe Point qui joue le rôle de « côté » dans l’association avec la classe Rectangle. En l’absence d’informations complémentaires permettant, en particulier, de savoir l’utilité de modéliser la classe Point, vous pouvez proposer deux solutions, l’une faisant apparaître uniquement la classe Rectangle, et l’autre, plus détaillée, faisant apparaître les classes Rectangle et Point.
Cela dit, si seule la classe Rectangle est représentée, vous perdez l’information sur l’association du point vers le rectangle. Cela correspond à une modélisation d’une association unidirectionnelle de Rectangle vers Point alors que cette information n’est pas disponible directement dans l’énoncé. Ce choix peut être justifié par l’objectif de la modélisation et par le choix de l’implémentation (pour l’implémentation de l’association, un attribut point sera ajouté dans Rectangle).
3. Les deux classes principales sont Écrivain et Œuvre. Une association bidirectionnelle nommée posséder relie les deux classes. Les œuvres sont ordonnées selon la date de publication. Ajoutez donc l’attribut datePublication de type Date dans Œuvre et la contrainte {ordered} du langage OCL. Celle-ci signifie que les œuvres sont ordonnées. Pour indi- quer que l’écrivain est précoce, ajoutez un commentaire en langage naturel sous forme de note. Cette note peut préciser également le critère utilisé pour l’ordonnancement. Il est aussi nécessaire d’ajouter deux attributs dans la classe Écrivain : dateDeNaissance de type Date et /précoce de type Boolean. L’attribut /précoce est un attribut dérivée de l’association entre écrivain et œuvre. Par ailleurs, la multiplicité du côté de l’écrivain n’est pas précisée car celle-ci n’est pas indiquée dans l’énoncé.
4. La lecture du texte permet de sélectionner les classes candidates suivantes: Facteur, Courrier, Habitant, ZoneDAffectation, Lettre, BoîteAuxLettres, Colis, Destinataire.
La rédaction d’une liste de classes candidates intervient en phase d’analyse préliminaire. L’objectif est de dégager les principaux concepts à partir de l’analyse fonctionnelle. Les phases d’analyse et de conception permettent de sélectionner les classes qui apparaîtront dans le diagramme de classes. Pour trouver les candidates, il faut recourir à un expert du domaine, consulter le cahier des charges du client et parfois tenir compte du langage d’implémentation qui sera utilisé pour la réalisation (notamment pour les classes utilitaires).
Si la modélisation concerne la mise en évidence du lien entre le facteur et les habitants ainsi que la zone d’affectation du facteur, vous pouvez proposer la solution qui suit :
• La classe BoîteAuxLettres n’est pas pertinente. Elle ne fera pas partie du diagramme de classes.
• Un colis et une lettre sont des courriers particuliers.
• Le destinataire est le rôle d’un habitant quand il reçoit un courrier. Il ne sera pas représenté par une classe.
• Un facteur dessert une zone d’affectation qui abrite plusieurs habitants.
• Le seul lien entre le facteur et l’habitant est la distribution du courrier (classe-association).