2018_2019:s3:concprogobjet:td:td4
                Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| 2018_2019:s3:concprogobjet:td:td4 [2018/10/06 16:07] – [Partie : Généralisation] blay | 2018_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> | ||
| Ce TD vise à : | Ce TD vise à : | ||
|    - Renforcer votre compréhension de la notion d' |    - Renforcer votre compréhension de la notion d' | ||
| Line 26: | Line 26: | ||
| Voici les codes associés. | Voici les codes associés. | ||
| - | {{:2017_2018: | + | {{:2018_2019: | 
| Line 33: | Line 33: | ||
|   - Avez-vous compris ce qui est attendu de vous ? Vous n'avez pas droit à la question, " |   - Avez-vous compris ce qui est attendu de vous ? Vous n'avez pas droit à la question, " | ||
|   - Avez-vous bien identifié tous les éléments? Le couplage? Vous vous rappelez du principe ouvert/ |   - Avez-vous bien identifié tous les éléments? Le couplage? Vous vous rappelez du principe ouvert/ | ||
| - |        - Qui a-t-il de commun entre les fonctionnalités demandées ? qui a-t-il de commun entre un vol et une location de voitures?  | + |        - Qui a-t-il de commun entre les fonctionnalités demandées ? Qui a-t-il de commun entre un vol et une location de voitures? Qui a-t-il de commun entre les services existants?  | 
|   - OK vous pouvez implémenter puisque vous avez une bonne idée de votre " |   - OK vous pouvez implémenter puisque vous avez une bonne idée de votre " | ||
| < | < | ||
| Line 69: | Line 69: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | et pour l' | ||
| + | < | ||
| + | public class CarRentalService extends Service< | ||
| + | </ | ||
| + | |||
| + | Si besoin voici une visualisation de la solution (on voit mal cependant la relation entre Service générique et réalisé. A noter que pour cela j'ai utilisé l' | ||
| + | {{ : | ||
| )). | )). | ||
| ===== Petit pas vers l' | ===== Petit pas vers l' | ||
| Amadeum a imaginé d' | Amadeum a imaginé d' | ||
| + | Ce travail a été fait sans rien savoir de ce qui précède. Donc vous allez devoir vous adapter. | ||
| - | {{:2017_2018: | + | {{ :2018_2019: | 
| 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 : | Pour vous aider : | ||
| - |   * Un voyage ('' | + |   * Un voyage ('' | 
|   * '' |   * '' | ||
|   * Attention, vous avez peut etre un probleme pour le '' |   * 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); | + | * 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 | 
| - | * 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 sélection... | 
| - | * 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' | + | ===== Facultatif ===== | 
| - | ==== Timer et TimerTask ==== | + | Ajouter  | 
| - | + | ||
| - | Pour pouvoir utiliser un timer qui déclenche une action à temps fixe, vous pouvez utiliser  | + | |
| - | 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  | + | |
| - |   - 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 ==== | ==== 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  | + | Les modèles peuvent correspondre à des diagrammes dessinés à la main, ou obtenus  | 
| http:// | http:// | ||
| + | Pour les S3A date limite de rendu vendredi 16 novembre à 19h | ||
2018_2019/s3/concprogobjet/td/td4.1538842066.txt.gz · Last modified: 2018/10/06 16:07 by blay