User Tools

Site Tools


2017_2018:s3:concprogobjet:td:td5

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
2017_2018:s3:concprogobjet:td:td5 [2017/10/20 22:35]
blay [Classe abstraite comme un moyen d'intégration]
2017_2018:s3:concprogobjet:td:td5 [2017/10/27 12:14] (current)
blay [Classe abstraite comme un moyen d'intégration]
Line 8: Line 8:
  
  
 +<note important>​En fait il nous aura fallu 4h</​note>​
 ===== Partie : Généralisation ===== ===== Partie : Généralisation =====
  
Line 46: Line 46:
 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 :  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 : 
    - vous le codiez,    - vous le codiez,
-   - vous récupériez tous les codes existants et que vous les intégriez pour offrir de nouveaux services, i.e. que vous pouvez à présent créer des "​Trip"​ qui sont l'​assemblage de "​flights"​ et "CarRental".+   - vous récupériez tous les codes existants et que vous les intégriez pour offrir de nouveaux services, i.e. que vous pouvez à présent créer des "​Trip"​ qui sont l'​assemblage de "​flights"​ et "CarRentals".
    - vous testiez vos codes.    - vous testiez vos codes.
  
-===== Classe abstraite comme un moyen d'​intégration =====+Pour vous aider :  
 +  * Un voyage (''​Trip''​) correspond à un vol (le moins cher qui vous amène à destination le jour voulu), une location de voiture sur place (pour la durée de votre séjour) et éventuellement des nuits d'​hôtels si vous l'avez implémenté. 
 +  * ''​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). 
 +  * Attention, vous avez peut etre un probleme pour le ''​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 :  
 +        * Comme il s'agit d'un simple TD, vous pouvez ne louer que la voiture la moins chère en partant du principe que le prix sera proportionnel (indépendamment de la durée); 
 +        * Vous louez toutes les voitures, ce qui n'est pas très réaliste, mais ce n'est qu'un TD... 
 +        * Vous redéfinissez une fonction de tri dans le service qui utilise une fonction de calcul de prix à partir du prix de la voiture et de la durée. 
 +  * Un exemple de code pour createATrip 
 +<code java> 
 +public Trip createATrip(Description d) { 
 + Trip trip = new Trip(d); 
 + services.forEach(service ->  
 + {trip.addItem(service.find(d));​} ); 
 + return trip; 
 +
 +</​code>​ 
 +===== Classe abstraite comme un moyen d'​intégration ​(facultatif) ===== 
 + 
 +A votre demande, voici l'​exemple du cours sur les portes revisités sur l'​exemple des avions qui ont un prix qui change dynamiquement. 
 + 
 +===Timer et TimerTask ​====
  
 Pour pouvoir utiliser un timer qui déclenche une action à temps fixe, vous pouvez utiliser la classe ''​[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Timer.html|Timer]]''​. Pour pouvoir utiliser un timer qui déclenche une action à temps fixe, vous pouvez utiliser la classe ''​[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Timer.html|Timer]]''​.
Line 61: Line 81:
  
   - Modéliser les classes correspondant à ces quelques lignes de codes    - Modéliser les classes correspondant à ces quelques lignes de codes 
-  - Comprenez les relations entre ces classes en regardant le main et comprenez les codes. +  - Comprenez les relations entre ces classes en regardant le ''​main'' ​et comprenez les codes.
- +
-A votre tour d'​utiliser ces classes pour définir une méthode qui renvoie non plus un vol qui a un prix fixe mais un prix qui varie : ''​public PayingItem findMovingItem(Description d)'' ​+
  
 +==== Utilisation de ces classes ====
 +A votre tour d'​utiliser ces classes pour définir une méthode qui renvoie non plus un vol qui a un prix fixe mais un prix qui varie : ''​public PayingItem findMovingItem(Description d)''​. Notez que le prix varie sans que le type de retour ne donne cette indication.
  
 Pour tester votre code vous pouvez par exemple réutiliser les codes suivants. Pour tester votre code vous pouvez par exemple réutiliser les codes suivants.
Line 109: Line 129:
  
  
 +Si vous avez du mal, voici le code, mais éviter de le regarder sans avoir au moins essayé de le faire seul "à votre propre sauce"​.
  
  
- +<​code>​
  public PayingItem findMovingItem(Description d) {  public PayingItem findMovingItem(Description d) {
  ArrayList<​Flight>​ matchingFlights = getFlights(d.getDepartDate(),​d.getDepartPlace(),​d.getArrivalPlace());​  ArrayList<​Flight>​ matchingFlights = getFlights(d.getDepartDate(),​d.getDepartPlace(),​d.getArrivalPlace());​
- PayingItem x = PayingItemTools.cheaperItem((matchingFlights));​+ PayingItem x = PayingItemTools.cheapestItem((matchingFlights));​
  ChangingPriceTask timerTask = new ChangingPriceTask( (ChangingPayingItem) x, 5.0);  ChangingPriceTask timerTask = new ChangingPriceTask( (ChangingPayingItem) x, 5.0);
  Timer timer = new Timer(true);​  Timer timer = new Timer(true);​
Line 121: Line 141:
  return x;  return x;
  }  }
 +</​code>​
  
 +==== RENDU ====
  
 +Code + modèles et remarques éventuelles. 
 +Les modèles peuvent correspondre à des diagrammes dessinés à la main, ou obtenu 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
  
2017_2018/s3/concprogobjet/td/td5.1508531705.txt.gz · Last modified: 2017/10/20 22:35 by blay