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/20 20:22] – [Classe abstraite comme un moyen d'intégration] 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 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. | ||
- | ===== Classe abstraite comme un moyen d' | + | 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 '' | Pour pouvoir utiliser un timer qui déclenche une action à temps fixe, vous pouvez utiliser la classe '' | ||
Line 58: | Line 78: | ||
Voici un exemple de code qui définit une classe qui étend | Voici un exemple de code qui définit une classe qui étend | ||
- | + | {{: | |
- | {{: | + | |
- 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 '' |
+ | |||
+ | ==== 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" | ||
- | A votre tour d' | + | < |
public PayingItem findMovingItem(Description d) { | public PayingItem findMovingItem(Description d) { | ||
ArrayList< | ArrayList< | ||
- | PayingItem x = PayingItemTools.lessExpensiveItem((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 73: | Line 141: | ||
return x; | 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.1508530936.txt.gz · Last modified: 2017/10/20 20:22 by blay