TP3 : Implémentation (2h)

Ce TP est fortement inspiré des planches de TD de Clément JACQ.
Afin de vous exercer sur les différents types de diagrammes, pensez à bien alterner les exercices.
Pour rappel, nous vous fournissons des bibliothèques de formes UML que vous pouvez importer dans draw.io.

Traductions

Traduisez les phrases suivantes en diagramme UML.

Écrivains

Tout écrivain a écrit au moins une oeuvre.

Université

Les personnes peuvent être associées à des universités aussi bien en tant qu’étudiants qu’en tant que professeurs.

Cinéma

Les cinémas sont composés de plusieurs salles. Une projection est la diffusion d'un film dans une salle, à un horaire donné.

Facteur

Tous les jours, le facteur distribue des recommandés dans une zone géographique qui lui est affectée. Les adresses sont aussi associées à une zone géographique. Les recommandés sont de deux sortes : lettres ou colis. Comme plusieurs facteurs peuvent intervenir sur la même zone, on souhaite, pour chaque recommandé, le facteur qui l’a distribué, en plus du destinataire.
Vous porterez une attention particulière au sens des flèches ainsi qu'aux noms, rôles, et multiplicité des associations.

Cours

  1. Chaque étudiant du département SD sont inscrits à un ensemble de modules.
  2. Pour chaque module, les étudiants ont une note de DS.
  3. Chaque module a un coefficient et est constitué d'un ensemble de cours, qui peuvent être des cours magistraux (CM), de travaux dirigés (TD), et de travaux pratiques (TP).
  4. Les CM, TD et TP sont associés à des séances de CM, TD et de TP. Chaque séance a une date, un enseignant, et sont effectuées dans une salle. Les CM sont faits en amphi, les TD en salle de classe, et les TP en salle machine.
  5. Les étudiants sont répartis dans des groupes de TD et de TP. Les étudiants d'un groupe de TP appartiennent au même TD. Chaque séance de TD (ou de TP) est associée à un groupe de TD (ou de TP).

Réflexions

Dans un premier temps, vous traduirez les phrases suivantes en diagramme UML. Des remarques et questions vous guideront afin de concevoir une seconde version respectant les concepts vus en cours.

Hôtel

Un hôtel a les caractéristiques suivantes : une adresse, un nombre de chambres et une catégorie. Un hôtel est composé d'au moins deux chambres. Une chambre est caractérisée par le nombre de lits qu’elle contient, son prix et son numéro. Chaque chambre dispose d’une salle d’eau : douche ou bien baignoire. Un hôtel héberge des personnes qui occupent des chambres pendant une période donnée. Il peut employer du personnel et est impérativement dirigé par un directeur. On ne connaît que le nom et le prénom des employés, des directeurs et des occupants. Certaines personnes sont des enfants et d’autres des adultes (faire travailler des enfants est interdit).
Reprenez votre diagramme pour ne modéliser que les éléments pertinents vis à vis de la problématique de l’hôtel :
On souhaite calculer le chiffre d'affaire de l'hôtel entre deux dates données. Le chiffre d'affaire d'une journée est la somme des prix de chaque chambre occupée durant cette journée.
On souhaite aussi savoir qui occupe quelle chambre et à quelle(s) date(s).
Une bonne modélisation ne représente pas la réalité, mais le problème. On modélise alors ce qui est pertinent vis à vis de la problématique, d'une manière qui en facilite la résolution.

Revenus

  1. Une personne est caractérisée par son nom, son prénom, son sexe et son âge. On souhaite pouvoir calculer les charges et les revenus de chaque personne.
  2. Deux types de revenus sont envisagés : d’une part le salaire et d’autre part toutes les autres sources de revenus. Le montant de chaque revenu est indiqué. Pour calculer les charges globales, on applique un coefficient fixe de 20% sur les salaires et un coefficient de 15% sur les autres revenus.
  3. Le calcul des charges ne se fait pas de la même manière lorsque la personne décède.
  1. Un logiciel n'est pas figé dans le temps. Par exemple, l'âge d'une personne change au cours du temps. Modifiez la modélisation de sorte à ce que l'âge soit toujours correcte.
  2. Vous avez probablement modélisé le status vivant/décédé d'une personne par :
    • des classes / : une personne vivante peut décéder, or il n'est pas possible de changer le type de l'instance.
    • un boolean : on préfère généralement stocker la date de décès car contient davantage d'informations et permet d'obtenir l'état à une date donnée. Dans d'autres contextes, elle permet également de retrouver les logs correspondant au changement d'état et d'en identifier la cause.
  3. Plutôt que d'avoir une classe implémentant , on peut associer les revenus à un type de revenu. Le salaire sera alors une instance de . Cela évite l'utilisation de l'héritage, permet à un revenu de changer de type, facilite la manipulation des différents types de revenus, etc.
  4. Il n'est pas de la responsabilité de de savoir calculer ses revenus et ses charges. Cela est de surcroît dangereux car plusieurs types de revenus co-existent (e.g. brut, net, imposable). Le danger est alors qu'une personne ayant besoin du revenu net modifie ce calcul, engendrant des valeurs erronées dans les parties de code s'attendant au revenu brut. Il est ainsi préférable d'effectuer les calculs à partir de calculateurs externes.

Rectangle

Un rectangle peut être construit à partir de 2 points (on considère un plan en 2D sans rotation). Il est possible de calculer sa surface et son périmètre, ou encore de le translater.
Stocker l'état interne du rectangle sous la forme de 2 points amalgame 2 concepts : sa forme et sa position. Des erreurs d'arrondis lors de translations successives peuvent alors progressivement déformer la forme du rectangle. Nous souhaitons ainsi dissocier la forme et la position, tant dans leur représentation que dans les opérations qui leur sont appliquées.
Aussi, le rectangle effectue lui-même les opérations sur les points. Or, il n'est pas de la responsabilité du rectangle de savoir manipuler des points. De plus, ces opérations sont susceptibles d'être réutilisées ailleurs dans le code. Nous souhaitons donc ajouter des primitives réutilisables au point, que le rectangle exploitera.
Il nous manque encore des éléments pour approfondir la conception. Est-ce que le rectangle :

Dessins

Déplacer S6 Opti