Table of Contents

Des modèles aux classes : focus sur les associations

Code et associations "simples"

Voici un diagramme UML en conception.

Les objectifs de ces TDs sont de bien positionner la modélisation en UML de niveau conception relativement au codage !

Des codes vous sont donnés pour vous aider à comprendre et à ne pas perdre de temps. L'objectif n'est pas de vous apprendre à écrire des boucles ou des algorithmes, mais davantage de bien architecturer vos applications.

Association orientée : Multiplicité 1

Donner la copie d'écran + le VPP si besoin

  1. Mettez en oeuvre la relation entre Cours et Professeur, i.e. implémenter la méthode setResponsable et getResponsable.Voir les codes
  2. Ecrivez des tests !! et Tester votre programme.voir le code
  3. A présent nous voulons pouvoir gérer des cours dont le professeur n'a pas été désigné. Modifiez le modèle (sur papier ou sur machine) 1) le nouveau modèle
  4. Modifiez vos codes en conséquence. Les codes
  5. Ecrivez des tests !! et Tester votre programmeles tests

Association orientée : Multiplicité 0..*

  1. Mettez en oeuvre la relation entre Cours et Vacataires, i.e. implémenter la méthode addVacataire(), removeVacataire().Codes : utilisez les, si vous voulez manipuler des listes en java, sinon gérez simplement des tableaux.
  2. Si dans l'étape précédente vous avez modifié votre modèle, re-générez le ou du moins dessinez les modifications.modèle partiel
  3. Ecrivez des tests et Tester votre programmePour tester votre programme
Gestion de listes simple en java

Regardez dans les codes qui vous sont donnés. Vous ne les avez pas encore vu en cours.

Associations complexes

Association bi-directionnelle

  1. Décider de la classe responsable : on ajoute des cours à étudiant ou bien on ajoute un étudiant à un cours 2)
  2. Placer les méthodes dans le modèle avec leur visibilité. On doit pouvoir connaître pour un cours la liste des étudiants qui le suit, et pour un étudiant la liste des cours suivis. On doit pouvoir ajouter un étudiant à un cours ou bien ajouter un cours à un étudiant en fonction de votre choix de responsabilité. voir modèle
  3. Programmez Voir codes.
  4. Testez Voir tests.

Composition

  1. Quel constructeur pour la classe Cours? 3)
  2. Si vraiment un TD ne peut pas être construit en dehors d'un cours que suggérez-vous? 4)voir code voir tests
  3. Quelle gestion de la méthode coursAssociée définie dans la classe TD? Même chose pour un DS. Suggestion? 5)

Classe d'association

  1. Que signifie ce modèle ?
  2. Générer les codes
  3. Il manque les méthodes et la navigation.
    • On veut pouvoir ajouter une description à un module
    • On ne veut pas savoir de quels modules un enseignant est responsable.
    • On veut connaitre quel est l'enseignant responsable d'un module en fonction d'une année.

A rendre OPTIONNEL: Le lundi 5 mai 10h dernier délai : remis à votre encadreur par mail ayant pour sujet “[S2] conception : Groupe : Membres du binôme” avec en attachement le projet .vpp ou un document contenant vos diagrammes (solution préférée). Envoyer 1 fichier .VPP et un autre fichier .PDF (qui contient le sujet, les réponses et les diagrammes créés dans VP). Les 2 fichiers seront nommés TP_N_NumeroduTP_NomEtudiant1_NomEtudiant2 sans compression

  1. Dessiner le diagramme de classes en conception correspondant à l'énoncé et au diagramme de séquence donné ci-après.
  2. Générer les codes et mettez en oeuvre la méthode vendre de Vendeur. Attention, elle doit garantir la cohérence de l'ensemble des associations que vous avez définies.
  3. Identifier les interfaces graphiques que devra exposer le système.

Dans la galerie à certaines oeuvres sont associées des lithographies. Pour chaque oeuvre le nombre de lithographie est fixé. A une lithographie est associé un numéro unique. Si une lithographie a été vendue il est possible de retrouver la vente qui lui correspond. A une vente est associée une date, la lithographie vendue, le vendeur qui a fait la vente et le client. Il est possible de retrouver pour un client tous les achats qu'il a fait et pour le vendeur toutes les ventes qu'il a fait.

1)
modifier la multiplicité ! Mais pensez aussi à gérer le 0 dans le constructeur et ajouter les méthodes pour vérifier qu'il y a ou non un responsable
2)
c'est mon choix dans la correction
3)
construire le TD et le Cours associé automatiquement
4)
dans la correction, nous utilisons Protected… on aurait aussi pu avantageusement penser à une classe interne
5)
comme précédemment, on a une relation inverse