2017_2018:s3:concprogobjet:td:td5
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| 2017_2018:s3:concprogobjet:td:td5 [2017/10/16 20:03] – [Partie : Généralisation] blay | 2017_2018:s3:concprogobjet:td:td5 [2017/10/27 10:14] (current) – [Classe abstraite comme un moyen d'intégration] blay | ||
|---|---|---|---|
| Line 8: | Line 8: | ||
| + | <note important> | ||
| ===== Partie : Généralisation ===== | ===== Partie : Généralisation ===== | ||
| Line 16: | Line 16: | ||
| Voici la description plus détaillée du sujet. | Voici la description plus détaillée du sujet. | ||
| < | < | ||
| - | L' | + | L' |
| - | Nous aimerions qu'il puisse également gérer les locations de voitures | + | Nous aimerions qu'il puisse également gérer les locations de voitures |
| Line 46: | Line 46: | ||
| L' | L' | ||
| - 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 " | + | - 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 " |
| - vous testiez vos codes. | - vous testiez vos codes. | ||
| + | Pour vous aider : | ||
| + | * Un voyage ('' | ||
| + | * '' | ||
| + | * Attention, vous avez peut etre un probleme pour le '' | ||
| + | * 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; | ||
| + | } | ||
| + | </ | ||
| + | ===== Classe abstraite comme un moyen d' | ||
| + | |||
| + | A votre demande, voici l' | ||
| + | |||
| + | ==== Timer et TimerTask ==== | ||
| + | |||
| + | Pour pouvoir utiliser un timer qui déclenche une action à temps fixe, vous pouvez utiliser la classe '' | ||
| + | Celle-ci fait référence à la classe abstraite '' | ||
| + | |||
| + | Il est alors possible par la méthode '' | ||
| + | d' | ||
| + | |||
| + | Voici un exemple de code qui définit une classe qui étend | ||
| + | {{: | ||
| + | |||
| + | - Modéliser les classes correspondant à ces quelques lignes de codes | ||
| + | - Comprenez les relations entre ces classes en regardant le '' | ||
| + | |||
| + | ==== Utilisation de ces classes ==== | ||
| + | A votre tour d' | ||
| + | |||
| + | Pour tester votre code vous pouvez par exemple réutiliser les codes suivants. | ||
| + | |||
| + | Pour initialiser. | ||
| + | < | ||
| + | @Before | ||
| + | public void setUp() throws Exception { | ||
| + | flights = new ArrayList<> | ||
| + | flight = new Flight(20, LocalDate.of(2017, | ||
| + | flight1 = new Flight(10, LocalDate.of(2017, | ||
| + | flight2 = new Flight(30, LocalDate.of(2017, | ||
| + | flights.add(flight); | ||
| + | flights.add(flight1); | ||
| + | flights.add(flight2); | ||
| + | fs = new FlightService(flights); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Pour le test lui-même. | ||
| + | < | ||
| + | @Test | ||
| + | public void testFindMovingItem() { | ||
| + | Description d = new Description(LocalDate.of(2017, | ||
| + | Flight f = (Flight) fs.findMovingItem(d); | ||
| + | // Test pour une nouvelle boucle for utilisant un forEach | ||
| + | IntStream.range(1, | ||
| + | try { | ||
| + | // Pour visualiser que le prix change bien. | ||
| + | // Il est difficile de le definir spus la forme d' | ||
| + | // car on ne sait pas combien de fois le ratio a eu le temps de s' | ||
| + | // L' | ||
| + | System.out.println(i + " : ===> Price :" + f.getPrice()); | ||
| + | Thread.sleep(200); | ||
| + | System.out.println(i + " : ===> Price has changed :" + f.getPrice()); | ||
| + | } catch (InterruptedException ex) { | ||
| + | ex.printStackTrace(); | ||
| + | } | ||
| + | System.out.println(i); | ||
| + | }); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | 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" | ||
| + | < | ||
| + | public PayingItem findMovingItem(Description d) { | ||
| + | ArrayList< | ||
| + | PayingItem x = PayingItemTools.cheapestItem((matchingFlights)); | ||
| + | ChangingPriceTask timerTask = new ChangingPriceTask( (ChangingPayingItem) x, 5.0); | ||
| + | Timer timer = new Timer(true); | ||
| + | timer.scheduleAtFixedRate(timerTask, | ||
| + | return x; | ||
| + | } | ||
| + | </ | ||
| + | ==== 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 " | ||
| + | http:// | ||
2017_2018/s3/concprogobjet/td/td5.1508184199.txt.gz · Last modified: 2017/10/16 20:03 by blay