User Tools

Site Tools


2018_2019:s3:concprogobjet:td:td4

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
2018_2019:s3:concprogobjet:td:td4 [2018/10/06 21:21] – [Classe abstraite comme un moyen d'intégration (facultatif)] blay2018_2019:s3:concprogobjet:td:td4 [2018/11/14 13:27] (current) – [RENDU] blay
Line 1: Line 1:
 ====== Open/Closed ... First Step ====== ====== Open/Closed ... First Step ======
 +<note warning>Du temps sera pris sur la 1e ou la 2e séance sur ce TD (si nécessaire) pour faire des retours sur les précédents rendus.</note>
 Ce TD vise à :  Ce TD vise à : 
    - Renforcer votre compréhension de la notion d'interface et à savoir les utiliser    - Renforcer votre compréhension de la notion d'interface et à savoir les utiliser
Line 26: Line 26:
  
 Voici les codes associés. Voici les codes associés.
-{{:2017_2018:s3:concprogobjet:td:openclosedprinciplev0withtests2.jar|}}+{{:2018_2019:s3:concprogobjet:td:archive.zip|}}
  
  
Line 87: Line 87:
  
 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 //(La classe ''CarRentalService'' doit implémenter ''Service''mais il n'est pas exigé que ce soit une implémentation directe de ''Service'')//
    - 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 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.
Line 98: Line 98:
         * Vous redéfinissez une fonction de sélection...         * Vous redéfinissez une fonction de sélection...
  
-==== Utilisation de ces classes ==== +===== Facultatif =====
-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. +Ajouter la réservation de nuitées dans les hôtels.
- +
-Pour initialiser. +
-<code> +
- @Before +
- public void setUp() throws Exception { +
- flights = new ArrayList<>(); +
- flight = new Flight(20, LocalDate.of(2017, 8, 1), LocalTime.of(8, 30), "Nice", "Paris"); +
- flight1 = new Flight(10, LocalDate.of(2017, 8, 1), LocalTime.of(9, 30), "Nice", "Paris"); +
- flight2 = new Flight(30, LocalDate.of(2017, 8, 1), LocalTime.of(10, 30), "Nice", "Paris"); +
- flights.add(flight); +
- flights.add(flight1); +
- flights.add(flight2); +
- fs = new FlightService(flights); +
-+
-</code> +
- +
-Pour le test lui-même. +
-<code> +
-@Test +
- public void testFindMovingItem() { +
- Description d = new Description(LocalDate.of(2017, 8, 1), "Nice", "Paris", 2); +
- Flight f = (Flight) fs.findMovingItem(d); +
- // Test pour une nouvelle boucle for utilisant un forEach +
- IntStream.range(1, 5).forEach(i -> { +
- try { +
- // Pour visualiser que le prix change bien. +
- // Il est difficile de le definir spus la forme d'Asset +
- // car on ne sait pas combien de fois le ratio a eu le temps de s'appliquer +
- // L'attente permet à la tache en arrière plan de s'exécuter +
- 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); +
- }); +
-+
-</code> +
- +
- +
- +
-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) { +
- ArrayList<Flight> matchingFlights = getFlights(d.getDepartDate(),d.getDepartPlace(),d.getArrivalPlace()); +
- PayingItem x = PayingItemTools.cheapestItem((matchingFlights)); +
- ChangingPriceTask timerTask = new ChangingPriceTask( (ChangingPayingItem) x, 5.0); +
- Timer timer = new Timer(true); +
- timer.scheduleAtFixedRate(timerTask, 0, 190); +
- return x; +
-+
-</code>+
  
 ==== RENDU ==== ==== RENDU ====
  
 Code + modèles et remarques éventuelles. 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.+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 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
2018_2019/s3/concprogobjet/td/td4.1538860871.txt.gz · Last modified: 2018/10/06 21:21 by blay