Ce TD vise à :
Un ensemble de codes et conseils vous sont donnés vous permettant de faire “seul” ce TD.
La société Amadeum a demandé à un étudiant de gérer les vols, à un autre de gérer les locations de voitures. Elle vous prend en stage et voici le sujet de stage : “Améliorer la gestion des items liés aux voyages”.
Voici la description plus détaillée du sujet.
2- Nous aimerions qu'il puisse également gérer les locations de voitures : trier des locations en fonction du prix et de pouvoir récupérer uniquement la location la moins chère parmi un ensemble de locations.
Il est important de prendre en compte que si les codes existants peuvent être modifiés, les tests associés doivent continuer à fonctionner ce code ayant déjà été intégré dans d'autres applications.
Votre défi : faire tout ce que demande votre employeur en étant “malin” et un bon développeur. Vous avez le droit de modifier les codes qui vous sont donnés.
Voici les codes associés. archive.zip
Attention, cette fois-ci vous devez chercher seul à résoudre le problème, mais voici quelques pistes :
Amadeum a imaginé d'étendre ses compétences en offrant un service de préparation aux voyages “TravelOrganizer” “Low cost” qui, à partir d'une description, vous propose des voyages. Ce travail a été fait sans rien savoir de ce qui précède. Donc vous allez devoir vous adapter.
L'ingénieur en charge du projet a conçu le diagramme suivant et commme il est très content de vous, il s'attend à ce que :
CarRentalService
doit implémenter Service
, mais il n'est pas exigé que ce soit une implémentation directe de Service
)Pour vous aider :
Trip
) correspond à un vol (le moins cher qui vous amène à destination le jour voulu), une location de voiture pour la durée de votre séjour.Find
renvoie l'Item le moins cher : Par exemple, un vol ou une location de voiture qui correspond à la description (même date, durée attendue, point de départ, point d'arrivée).find
dans CarRentalService
. En effet, pour obtenir des CarRental
actuellement il est nécessaire de réserver la voiture (book
). Or vous ne voulez récupérer qu'une seule location de voiture, et la moins chère, d'où les solutions possibles suivantes : Ajouter la réservation de nuitées dans les hôtels.
Code + modèles et remarques éventuelles. Les modèles peuvent correspondre à des diagrammes dessinés à la main, ou obtenus par reverse mais dans ce cas, ils sont “propres” au sens où les informations essentielles y sont représentées et seulement celles-ci. http://jalon.unice.fr/cours/blay/Cours-blay-20150930110548/BoiteDepot-blay-20171020224642543829?tab=deposit
Pour les S3A date limite de rendu vendredi 16 novembre à 19h
import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class Service<T extends PayingItem>{ protected List<T> payingItemList = new ArrayList<>(); public Service(List<T> payingItemList) { this.payingItemList = payingItemList; } protected List<T> getpayingItemList(){ return payingItemList; } public List<T> sortedByPrice() { payingItemList.sort(Comparator.comparing(PayingItem::getPrice)); return payingItemList; } public T lessExpensiveItem(){ sortedByPrice(); return payingItemList.get(0); } public void add(T payingItem) { payingItemList.add(payingItem); } }et pour l'utiliser par exemple :
public class CarRentalService extends Service<CarRental> {Si besoin voici une visualisation de la solution (on voit mal cependant la relation entre Service générique et réalisé. A noter que pour cela j'ai utilisé l'outil : ObjectAid