Académique Documents
Professionnel Documents
Culture Documents
Le système de départ
Le programme que l’on va remanier permet de gérer le profil de loca�on d’un client d’un magasin de loca�on d’ou�llage
de construc�on. Ce programme permet principalement de nous fournir un rapport indiquant le coût des ou�ls loués par
un client ainsi que les points bonis (fidélité) accumulés. Le coût d’une loca�on est fonc�on du nombre de jours loués et
du type de matériel loué. Les points bonis sont atribués en fonc�on de l’ou�l loué (nouveauté ou non) et du nombre de
jours loués. Le magasin propose trois types d’ou�ls : les ou�ls réguliers, le gros ou�llage et les nouveautés.
System.out.println(sallie.rapport());
System.out.println(location1.getNbJoursLoues());
}
private static Location creerLocation (String nomOutil, int typeOutil, int
nbJours) {
Outil outil = new Outil(nomOutil, typeOutil);
return new Location(outil, nbJours > 0 ? nbJours : NB_JOURS_LOCATION);
}
}
Bien que le code soit fonc�onnel, il y a plusieurs problèmes avec ce système qu’il faut corriger. En par�culier, la méthode
Client.rapport() est netement trop longue et complexe pour une seule méthode. Une grande par�e de son travail
pourrait être déléguée à d’autres classes. Les problèmes à eux seuls jus�fient un remaniement du code, d’autant plus
que le propriétaire du magasin d’ou�llage voudrait ajouter une fonc�onnalité pour imprimer le rapport sous un format
HTML. Après avoir analysé le code existant, vous décidez de remanier le code pour le rendre plus propre et maintenable,
en appliquant les no�ons de ré-usinage vues en classe. Voici la tâche de remaniement de code que vous décidez
d’accomplir :
NB: lorsque vous effectuez un changement dans une partie du code, assurez-vous que ce changement
ne cause aucun problème ailleurs.
Classe Ou�l
1. Renommez la variable _�tre par nom. Modifiez l’accesseur correspondant.
2. Remplacez les trois en�ers pour GROS_OUTILLAGE, NOUVEAUTEES et REGULIER par une
énuméra�on nommée Categorie. Renommez la propriété _codePrix par categorie et changez
son type pour celle de votre nouvelle énuméra�on.
3. Remplacez l’accesseur et le mutateur pour _codePrix par leur correspondant pour la
catégorie.
Classe Loca�on
1. Enlevez la barre de soulignement aux variables _ou�l et _nbJoursLoues.
2. Créez une nouvelle méthode calculerMontantDu sans argument qui retourne un double. Le
corps de cete méthode est le même que la méthode Client.montantPour : effacez ou
commentez cete méthode de Client.
3. Créez une nouvelle méthode calculerPointsBonis sans argument et qui retourne un en�er. Le
code de cete méthode se trouve un peu éparpillé dans la méthode Client.rapport. Rapatriez
ce code dans calculerPointsBonis.
Classe Client
1. Enlevez la barre de soulignement à la propriété _nom.
2. Enlevez la barre de soulignement à la propriété _loca�ons ainsi que son instancia�on, que
vous déplacez dans le constructeur. De plus, en u�lisant la généricité, spécifiez que ce vecteur
est un vecteur de Loca�on.
3. Renommez la méthode ajoutLoca�on par ajouterLoca�on.
4. Créez une nouvelle méthode calculerMontantDu sans argument et qui retourne un double.
Le code de cete méthode se trouve un peu éparpillé dans la méthode Client.rapport.
Rapatriez ce code dans calculerMontantDu.
5. Créez une nouvelle méthode calculerPointsBonis sans argument et qui retourne un en�er. Le
code de cete méthode se trouve un peu éparpillé dans la méthode Client.rapport. Rapatriez
ce code dans calculerPointsBonis.
6. Créez une nouvelle méthode genererRapport sans argument et qui retourne une String. Le
code de cete méthode se trouve un peu éparpillé dans la méthode Client.rapport. Rapatriez
ce code dans genererRapport.
7. Vous pouvez maintenant effacer ou commenter la méthode Client.rapport.
8. Créez une nouvelle méthode genererRapportHTML sans argument et qui retourne une String.
Cete méthode devra retourner une String qui, lorsque rendue dans un navigateur web,
affichera la page suivante :
Classe Main
Ajustez le code de la classe pour qu’il s’exécute correctement et donne les bons résultats à
par�r de votre nouveau code remanié.
Tests JUnit
Assurez-vous que tous les tests fournis pour les classes Client et Loca�on s’exécutent avec
succès sur ce code remanié.