L'ensemble des éléments de ce TP a été rédigé par Munier Rémy


Le diagramme de classe sert à modéliser le système dans sa globalité afin d’en avoir une vue complète et de pouvoir le comprendre plus facilement. Le diagramme de classe montre la structure interne du système c’est ce qui se rapproche le plus, en UML, du code puisqu’il permet de dégager tous les objets du système avec leurs attributs et méthodes. Il s'agit d'une vue statique, car on ne tient pas compte du facteur temporel dans le comportement du système.

Le but de ce TD, d'une durée d'une séance, était de nous apprendre à modeliser les classes d'un systeme afin d'en voir sa globalité et de nous aider par la suite a le coder. Ce TD consitait à nous mettre face à un énoncé décrivant un systeme d'un garage intélligent et connecté, afin que nous puissions en dégager le diagramme de classe.

  • Apprendre à faire un diagramme de classe représentant un système complet
  • Apprendre les notions principales associées au TD
  • Apprendre à compléter un diagramme à partir d’un énoncé

• Classe : Une classe décrit les responsabilités, le comportement et le type d'un ensemble d'objets. Les éléments de cet ensemble sont les instances de la classe.

• Instance de classe : objet avec un comportement et un état définis par la classe. Une instance de classe est donc cas concret de l'objet.

• Attribut : Un attribut est une propriété de sa classe, l’ensembles des attributs servent à décrire la classe.

• Méthode : les méthodes décrivent comment fonctionne la classe. Elles permettent de décrire la façon dont on utilise l’instance de classe.

Exercice 1

Faire le diagramme de cas de l’étude de cas du garage intelligent à partir des informations suivantes :

  • Le client présente sa voiture à la réception du garage et précise au chef d’atelier les révisions et réparations à faire. Le chef d’atelier en prend note sur une fiche suiveuse informatisée, qu'il imprime et fait signer au client avant de lui en remettre une copie. Il affecte à la voiture une puce dédiée, qui est posée sur le tableau de bord, qui permet d'identifier la voiture automatiquement.
  • Les mécaniciens peuvent consulter toutes les fiches suiveuses.
  • Les mécaniciens peuvent également consulter les travaux précédents réalisés sur la voiture si elle a déjà été réparée par le garage.
  • Au début et à la fin de chaque réparation, le mécanicien complète la fiche suiveuse en précisant la réparation réalisée sur le véhicule, ce qui permet le calcul du temps maximal passé sur les réparations
  • La secrétaire utilise le SI pour préparer les factures.
  • Elle enregistre le règlement dans le SI. Il est possible dans certains cas, qu'elle lui rende la voiture sans paiement, par exemple dans le cas où des travaux n'ont pas encore été faits. Elle enregistre dans le SI que la voiture a été rendue.
  • Un client peut à tout moment savoir où en est la réparation de sa voiture (Site web) : en cours de réparation, réparations faîtes, factures prêtes

Correction :

Pour commencer il faut repérer dans le sujet les différentes classes que l’on peut avoir. On commence avec la voiture, elle peut être en réparation ou réparée et est associée à un client et a une fiche suiveuse. Ce qui nous donne une classe voiture avec un attribut « état » qui est un booléan, et est associée avec deux autres classes : Client et Fiche suiveuse.

On créer donc une autre classe pour la fiche suiveuse : Elle est en liaison avec une voiture, les mécaniciens peuvent la lire et elle fait référence à des réparations, nous savons donc déjà qu’il y’aura deux nouvelles classes « Reparations » et « Mecanicien »

Nous avons donc ensuite la classe Réparation, une réparation est caractérisée par une date de début, une date de fin et une durée. On calcule la durée maximum de la réparation grâce au date de début et de fin. Ce calcule est donc une méthode que l’on ajoute à la classe. Une réparation peut aussi être annulée c’est une opération que l’on fait sur l’instance de classe c’est donc aussi une méthode.

Passons ensuite à la deuxième classe associée à la classe voiture : Client On sait que le client possède au moins une voiture et peut vérifier son état, vérifier l’état est une action que le client peut faire c’est donc une méthode. Mais on sait aussi que les clients sont associés à des factures, nous dégageons donc une nouvelle classe « Facture ».

Etudions maintenant la classe Facture, une facture peut être préparée, remis à plus tard, ou payée, ces trois actions sont des méthodes.

Et pour finir nous avons la classe Mécanicien et la classe Chef d’atelier : Le chef d’atelier est un mécanicien plus haut gradé, c’est-à-dire qu’il peut faire tout ce que font les mécaniciens et plus. Pour modéliser cela nous allons utiliser la notion d’héritage, pour commencer modélisons la classe mécanicien :

Puis on créer une classe chef d’atelier, ‘chef d’atelier’ est relié à la classe mécanicien par une flèche et non un trait, cela implique l’héritage. L’héritage veut dire que la classe Chef d’atelier va pouvoir se servir de tous les attributs et méthodes de la classe Mécanicien, les améliorées, les changées, ou en créer de nouvelles

Voici le diagramme des classes de cette exercice, mais ce n’est pas fini !

Il faut maintenant rajouter les cardinalités sur les liaisons entre nos classes. La cardinalité d'une association permet de représenter le nombre minimum et maximum d'instances qui sont autorisées à participer à la relation. La cardinalité est définie pour les deux sens de la relation. Pour faire cela il faut reprendre l’énoncé par exemple : on sait qu’un client a une ou plusieurs voitures, et une voiture appartient à un client, ou bien encore qu’une fiche fait références à plusieurs réparations, mais qu’une réparation n’est que sur une seule fiche :

Voilà le diagramme de classe final de cet exercice :

Exercice 2

Compléter le diagramme de classe précédant avec ces informations

  • Afin de prendre en compte le contexte du garage, le personnel doit pouvoir s'identifier en saisissant son login et mot de passe, en présentant son badge ou par reconnaissance faciale.
    • Un client qui demande où en est la réparation de sa voiture est averti :
    • Que sa voiture est réparée, si toutes les réparations associées à sa fiche suiveuse en cours sont terminées, dans ce cas, il peut connaitre le temps passé sur sa voiture ;
    • Que la facture est prête, ce qui n'est possible que si toutes les réparations ont été faîtes ;
    • Que les réparations sont en cours ou n'ont pas encore commencées.
  • Une fois qu'une facture est payée on ne mémorise que les informations qui sont pertinentes pour l'entretien futur de la voiture.
  • Une fiche suiveuse est associée à un véhicule. Elle fait référence à un ensemble de réparations. Une réparation est définie par un mot clef et une description textuelle. Une réparation peut être commencée à une date donnée et terminée à une date donnée. Tant qu'elle n'est pas commencée, il n'y a pas de date de début, de même tant qu'elle n'est pas finie, il n'y a pas de date de fin. Elle peut aussi être annulée. Une durée est associée à une réparation terminée. Il est possible de calculer le temps maximum passé sur une réparation (temps entre le début et la fin de la réparation); c'est le temps par défaut pour la durée de la réparation, lorsque la durée de la réparation n'est pas renseignée. Un commentaire peut être associé à une réparation, il peut contenir des photos. Un ou des mécaniciens sont associés à une réparation. Un mécanicien est identifié par son nom et son numéro de badge.

Astuce : bien lire l’énoncé plusieurs fois et repérer les nouveautés.

Correction :

Premièrement on lire que le personnel du garage, donc les mécaniciens et chefs d’atelier peuvent s’identifier de trois manière différentes, comme la classe chef d’atelier hérite de la classe mécanicien il suffit d’ajouter les méthodes dans cette dernière pour que les deux classes puissent les utilisées.

On apprend que le client peut maintenant voir le temps passer sur sa voiture une fois les réparations terminées. Que lorsque l’on paye la facture on retient certaines informations. Dans le grand paragraphe on apprend aussi qu’une réparation a un texte descriptif, un mot clef, une durée et qu’elle peut être associée à un commentaire qui lui-même peut contenir des photos

Et dernièrement on apprend qu’un mécanicien a un nom et un numéro de badge.

Il faut donc ajouter toutes ces informations dans notre diagramme et nous obtenons :


Ce qu'il faut retenir

Le diagramme de classe est très important car c'est lui qui permet de modéiliser le système dans son ensemble et sans cas précis. Il permet aussi, nous pouvons le voir dans le prochain TD de passer de la conception au code, c'est a dire de générer toute la structure du code du système.

La lecture de l’énoncé est une partie très importante de la conception du diagramme de classe, c’est de là qu’on tire toutes nos informations, il faut prendre son temps et tout analyser.

Les erreurs a ne pas faire

Il ne faut pas confondre le sens des cardinalités avec celle des bases de données, elles sont inversées. Il faut donc mettre les cardinalités en face de la classe, sur la relation.

Il ne faut pas non plus se tromper de sens en mettant l'héritage, la flèche pointe vers la classe supérieur qui fait hérité a la classe qui hérite.