Aller au contenu

Projet complet VidéoLocaTout (version 2025)

Cahier des charges

On vous demande de développer une application nommée VideoLocaTout permettant de gérer la location des films.

Contexte

Le magasin loue des supports physiques de films :

Chaque Film peut exister sur plusieurs supports (en plusieurs exemplaires par support). Cette liste n’est pas exhaustive compte tenu de l’évolution technologique. Il faut pouvoir ajouter de nouveaux supports dans les années futures.

Les Recherches peuvent se faire au comptoir par le vendeur ou via une borne interne du magasin. Les critères sont les suivants :

Location au comptoir (quelques précisions)

Dates & calculs pour la location :

Les Paiements se font en Espèces, Carte bancaire (puce/sans-contact), Wallet mobile, Chèque (plus rare). Un paiement peut être mixte.

Stocks & état

Alertes & blocages

Le vendeur doit pouvoir effectuer :

Inventaires et statistiques

Concernant l’inventaire : le vendeur du magasin souhaite pouvoir afficher le total des prix d’achat des exemplaires par type de support puis par année d’achat en excluant les supports dégradé.

Concernant les statistiques : il doit pouvoir afficher les locations par genre, par type de support et par film.
Pour la Disponibilité : si aucun exemplaire d’un film n’est disponible, il faut afficher la prochaine date de retour estimée (maximum des dates prévues sur les locations en cours).

Travail à faire :

  1. Cas d’utilisation globale.
  2. Rédiger le scénario détaillé pour le cas d’utilisation Enregistrer location au comptoir (par le vendeur)
  3. Construire le Diagramme de classes.
  4. Construire le diagramme de Séquence correspondant au scénario Enregistrer location.
  5. Construire le diagramme d’Activité qui correspond.
  6. Pour les plus courageux.se.s, imaginez un diagramme de composants

1. Cas d’utilisation globale (créé avec PlantUML)

Nous avons 2 acteurs :

Use Cases de VideoLocaTout

Principaux use cases :

2. Scénario du cas d’utilisation “Enregistrer location”

Informations générales

Objectif : Louer un ou plusieurs exemplaires pour un Client et encaisser le paiement

Acteur principal : Vendeur

Acteur secondaire : Client (sauf si borne)

Pré-conditions

Post-conditions

Scénario Principal (succès)

  1. Vendeur - recherche le film et sélectionne des exemplaires disponibles
  2. Vendeur - saisit nb de jours souhaités (par ligne si nécessaire)
  3. Système - calcule pour chaque ligne : dateRetourPrevue et nbJoursCalcule (avec règle week-end si active)
  4. Système - calcule montant brut = somme(lignes.prixJour × nbJoursCalcule)
  5. Système - si client abonné : applique remise 10%
  6. Vendeur - confirme la caution (création/empreinte si pas déjà active)
  7. Client - paie (montant net), paiement(s) enregistré(s)
  8. Système - la Location est créée : numéro auto-incrémenté, lignes, montants, paiements
  9. Système - les exemplaires passent “Indisponible”
  10. Système - Emission d’un reçu et l’échéancier de retour

Scénari alternatifs

Alternative 3a : Aucun exemplaire dispo : Le système propose la prochaine date de retour estimée Alternative 6a : La Caution est déjà active donc réutilisation Alternative 7a : Paiement partiel en plusieurs modes : plusieurs Paiement Alternative 0a : Le Client est bloqué : Refus de location + liste des retards

3. Diagramme de classes (PlantUML)

Principales entités :

Réalisé avec PlantUML :

Diagramme de Séquences

Autre proposition plus basique réalisée avec WinDesign :

Dans ce diagramme ci-dessous, je n’ai pas mis les Enum ni ce qui concerne le paiement.

videolocatoutDiagClasse

On suppose ici, que c’est le vendeur qui enregistre la location et non le Client en passant par une borne. Comme vous le constatez, on formalise les actions par des méthodes avec ou sans arguments. Nous percevons les flux bidirectionnels entre les différents composants.

4. Diagramme de Séquence du scénario Enregistrer location

Diagramme de Séquences

5. Diagramme d’Activité Enregistrer location

Le diagramme d’activité est assez facile à comprendre, il rappelle les organigrammes utilisés en programmation.

Digramme d'Activité

6. Diagramme d’états d’un Exemplaire

En revanche, le diagramme d’Etats n’est pas toujours facile à lire suivant le cas. Il montre bien les différents états d’un Exemplaire (Disponible, Indisponible, Loué ou Dégradé). On peut y préciser les méthodes qui modifierons son état en fonction de la situation.

Digramme d'Activité

7. Proposition de Diagramme de composants

Ce diagramme peut varier en complexité suivants les composants utilisés.

Ici, on le découpe de la manière suivante :

Diagramme de Séquences

8. Exemple Diagramme de Déploiement

Ici avec ce diagramme nous arrivons dans la partie physique de la mise en place de notre système.

Diagramme de Séquences

Bonus

Exemple d’un diagramme de flux (hors UML) en imaginant 3 acteurs (Loueur, Cinéphile ou vendeur et Gérant)

videolocatoutFlux