Version corrigée

Cette version comporte des indications pour les réponses aux exercices.

PreReq

  1. Je sais définir les concepts suivants : classe, attribut, attribut dérivé, identifiant, association, dimension d’une association, multiplicité, catégories d’association, attributs d’association, classe-association, rôles d’une association.

  2. Je connais les conventions d’écriture du Diagramme de Classes

ObjTD

Je réalise un Diagramme des Classes à partir d’une description textuelle. Je suis capable de modéliser les données manipulées par une organisation

Durée

1 séance de 1,5h (si TD précédent fini)

1. Diagrammes simples

1.1. Enoncés

Réalisez les diagrammes de classes permettant de capturer les contraintes suivantes (chaque énoncé est indépendant, sauf mention contraire) :

  1. Des sociétés (employeurs) emploient des personnes (employés). On souhaite conserver la date d’embauche ainsi que le salaire actuel de chaque employé de chaque société, ainsi que la relation qui relie une personne (subalterne) à son supérieur hiérarchique direct éventuel.

  2. Comment modifier le diagramme précédent pour pouvoir stocker les différents salaires (historique) ?

  3. Une maison peut être louée par une personne, et est possédée par un propriétaire (une personne également)

  4. Une revue paraît chaque semaine et est disponible dans plusieurs points de vente. On souhaite suivre la quantité vendue chaque semaine pour chaque point de vente.

1.2. Correction

1.2.1. Sociétés

td2 1
Figure 1. Correction avec Classe-Association

1.2.2. Sociétés historique

Nous devons rajouter une variable pour différencier les différents emploi d’une même personne dans une même entreprise.

Ceci peut se faire de deux manières:

  1. La classe-association devient une vraie classe, avec un nouvel identifiant idEmploi. Cette classe a deux relations 1..* vers Société et Personne et conserve sa relation reflexive. Le standard UML est respecté, et c’est ce qu’on retrouve souvent en implémentation.

  2. Nous rajoutons un identifiant numEmploiPersEnt dans notre classe-association. Ce n’est pas standard UML.

La vraie notation UML est d’ajouter {bag} sur les deux relations de la classe-association, mais nous ne demandons pas de telle connaissances dans le cadre de ce cours. On se retrouve alors dans le cas n°2 ci-dessus (dans une base de données relationnelle, clé primaire sur 3 champs). Pour plus d’informations, vous pouvez chercher sur Internet les mots-clés : UML bag, ordered, sequence.

1.2.3. Maison

td2 2
Figure 2. Role et non sous-types

1.2.4. Revue

DIag de Classe
Figure 3. Correction avec ternaire
td2 3
Figure 4. Correction avec 3 binaires

2. Société canine

2.1. Compte-rendu d’interview

Une société canine veut répertorier, pour une année donnée, les chiens de race et leurs classements aux divers concours organisés dans certaines grandes villes. Chaque ville ne peut en organiser qu’un seul.

Chaque chien est identifié par un numéro et appartient à une race bien précise.

On veut pouvoir obtenir, entre autres, les informations suivantes :

  • Nom et adresse du propriétaire d’un chien donné, ainsi que la date depuis laquelle il l’a en sa possession (une personne possède 10 chiens au plus).

  • Nom, date de naissance, sexe et race d’un chien donné.

  • Liste des concours auxquels un chien donné a participé (10 maximum) et les classements obtenus.

  • Liste des différentes races.

  • Liste des chiens ayant participé à un concours donné.

  • Liste des concours, avec la ville organisatrice et la date.

Toutes les informations ci-dessus ne concernent pas exclusivement le diagramme de classes. Faites le tri.

2.2. Travail à réaliser

  1. Concevoir le Diagramme des Classes (DC) prenant en compte ces informations en supposant qu’on se place en fin d’année et qu’aucun chien n’a changé de propriétaire.

  2. Compléter le DC si on veut prendre en compte le palmarès obtenu par tout chien sélectionné. Le propriétaire du chien gagne une prime qui ne dépend que du palmarès obtenu (ex : 1000 € pour une médaille d’or). Ce palmarès peut être : médaille d’or, d’argent, de bronze, 1er prix, 2ème prix, accessit …​).

2.3. Correction

2.3.1. diagramme de classes

td2 4

On peut rajouter une classe d’association entre Chiens et Propriétaires ayant pour attribut dateAchat, et supprimer celui de Chiens.

On peut également faire une classe Ville qui permettra de mieux caractériser la contrainte "Chaque ville ne peut en organiser qu’un seul [concours]".

2.3.2. diagramme de classes avec palmarès

td2 5