Vidéo-Club

Question 1

Pour vous, quelles sont les caractéristiques d'un programme bien écrit ?

Nous voulons créer un logiciel ayant les fonctionnalités suivantes:
  1. Calcul et affichage de l'état du compte d'un client du Video-club.
  2. Affichage des films qu'un client a loués ainsi que la durée de la location.
  3. Le calcul de facturation dépend du nombre de jours de location ainsi que du type film.
  4. Les types de films sont les suivants ("CHILDRENS'', ''REGULAR'', ''NEW_RELEASE'').
  5. De plus, le programme doit permettre de calculer des points de fidélité variant selon que le film soit du type "NEW_RELEASE''  ou non.
Analysez la  solution proposée dans la version 1.0 et discutez des améliorations que vous pensez nécessaires.

Question 2

Nous voulons maintenant ajouter une sortie au format HTML. Un client pourra ainsi regarder son compte directement par Internet.

Proposez une modification minimum permettant cette nouvelle fonctionnalité. Que remarquez-vous ? Comparer avec la version 1.1beta.

Rappelez l'algorithme de sélection d'une méthode et d'une variable (classe ou instance).
Proposez une nouvelle solution. Quelles sont les avantages et les inconvénients de votre solution ? Comparez avec la version 1.1.

Question 3

Le client veut changer la façon dont il classifie ses films mais il ne connaît pas exactement ce classement. Il sait cependant que ces changements modifieront la tarification des films ainsi que le calcul des points de fidélité.

Proposez une évolution permettant d'obtenir ce changement. Quelles sont les avantages et les inconvénients de votre solution ? Comparez avec la version 1.2.
On veut factoriser l'algorithme de calcul des prix. Comparez avec la version 1.2.1.

Question 4

Remarque: cette question repart de la version 1.2.

Analysez et décrivez le fonctionnement de la version 1.3.beta (Fabrique abstraite) et de la version 1.3 (Monteur).
Qu'apportent ces nouvelles architectures en terme de réutilisabilité ?

Question 5

Donnez les diagrammes de séquence et le diagramme de classe correspondant à la version 1.3.

Question 6

Les sous-classes de Price n'ont besoin que d'une seule instance. Proposez des modificatons en utilisant le modèle Singleton.
Comparez avec la version 1.4.

Question 7

Nous voulons maintenant en entrant sur la ligne de commande le nom d'un client et le type d'affichage désiré récupérer l'état de son compte au format demandé.

Proposez une solution. Comparer avec la version 1.5.

Question 8

Nous voulons pouvoir compléter les états de sortie d'une entête ou d'un pied de page.

Proposez une solution s'inspirant du modèle Décorateur et comparez avec la version 1.6.
Proposez une solution s'inspirant du modèle Pont et comparez avec la version 1.7.
Quels sont les avantages et les inconvénients de ces deux solutions ?