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 19:30] – [Open/Closed ... First try] 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 33: | Line 33: | ||
Voici les codes associés. | Voici les codes associés. | ||
{{: | {{: | ||
+ | |||
+ | <note tip>Pour trier : | ||
+ | Collections.sort... et des exemples par exemple: https:// | ||
+ | </ | ||
===== Petit pas vers l' | ===== Petit pas vers l' | ||
Line 42: | 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.1508182219.txt.gz · Last modified: 2017/10/16 19:30 by blay