User Tools

Site Tools


2015_2016:s3:concprogobjet:td:td3

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
2015_2016:s3:concprogobjet:td:td3 [2015/10/14 12:01]
blay [Séparation des Interfaces (15 mn)]
2015_2016:s3:concprogobjet:td:td3 [2015/11/18 11:55] (current)
blay [Corrections]
Line 58: Line 58:
   - Les modèles de voitures équipés du système "​ADBLUE"​ utilisent ce calculateur. Quelle solution proposez-vous?​ Il y a plusieurs solutions.   - Les modèles de voitures équipés du système "​ADBLUE"​ utilisent ce calculateur. Quelle solution proposez-vous?​ Il y a plusieurs solutions.
   - Quel coût en terme de modification des codes a eu cette extension? ​   - Quel coût en terme de modification des codes a eu cette extension? ​
-  - Pour certains véhicules professionnels un calculateur est fourni en ligne (cf. http://​www.total.fr/​pro/​carburants/​gazoles/​calculateur-co2.html). Définir un calculateur qui renvoie toutes les demandes vers un tel calculateur. Vous simulerez cet appel en renvoyant toujours la même valeur. ​ Un tel "​proxy"​ pourrait dans la réalité extrapoler les modèles en fonction de la consommation du véhicule.  +  - Pour certains véhicules professionnels ​ un calculateur est fourni en ligne (cf. http://​www.total.fr/​pro/​carburants/​gazoles/​calculateur-co2.html). Définir un calculateur qui renvoie toutes les demandes vers un tel calculateur. Vous simulerez cet appel en renvoyant toujours la même valeur. ​ Un tel "​proxy"​ pourrait dans la réalité extrapoler les modèles en fonction de la consommation du véhicule.  
-  - Nous décidons de créer une catégorie de modèles de véhicules professionnels qui font par défaut référence à ce calculateur.+  - Nous décidons de créer une catégorie de modèles de véhicules professionnels qui font par défaut référence à ce calculateur ​et intègrent en plus une charge possible. Un Berlingot sera un tel exemple.
  
  
Line 81: Line 81:
                    * consoUrbaine=26.9 ​ litres par CENT_KM, ​                    * consoUrbaine=26.9 ​ litres par CENT_KM, ​
                    * consoMixte = 18.3  litres par CENT_KM ​                    * consoMixte = 18.3  litres par CENT_KM ​
-             * et le calcul de la consommation en fonction de la vitesse utilise la règle précédente qui donne les résultats comme :  +             * et le calcul de la consommation en fonction de la vitesse utilise la règle précédente qui donne les résultats comme : **(attention résultats faux.. il y a un décalage)** ​ 
-                  * A 150km/h Conso : [31.258333333333336 ​ litres par CENT_KM]] avec un coefficient de coeff calculé de: 0.0018300000000000002+                  * A 150km/h Conso : [31.258333333333336 ​ litres par CENT_KM]] avec un coefficient de coeff calculé de: 0.0013300000000000002
                   * A 90/h Conso : [17.045222222222222 ​ litres par CENT_KM]] avec un coefficient calculé de : 0.00269                   * A 90/h Conso : [17.045222222222222 ​ litres par CENT_KM]] avec un coefficient calculé de : 0.00269
                   * A 30km/h Conso : [9.087666666666667 ​ litres par CENT_KM]]                   * A 30km/h Conso : [9.087666666666667 ​ litres par CENT_KM]]
  
-- Quelle modélisation proposez-vous ?  Quel est le couplage entre vos classes? Avez-vous bien supporté l'​extension?​ Il existe plusieurs solutions possibles, c'est à vous de décider! ((  Voici un code java dont vous pouvez vous inspirer, si besoin, ​ en le simplifiant !  <code java> private double ​getCoeff(Vitesse v) {+- Quelle modélisation proposez-vous ?  Quel est le couplage entre vos classes? Avez-vous bien supporté l'​extension?​ Il existe plusieurs solutions possibles, c'est à vous de décider! ((  Voici un code java dont vous pouvez vous inspirer, si besoin, ​ en le simplifiant !  <code java> private double ​calculerCoeff(Vitesse v) {
         double coeff =  Math.pow( 10, -4);          double coeff =  Math.pow( 10, -4); 
         //Au dessus de 100 km/h on prend en compte la consommation sur route que l'on multiplie par 10^-4,         //Au dessus de 100 km/h on prend en compte la consommation sur route que l'on multiplie par 10^-4,
Line 112: Line 112:
  
  
-===== Refactoring ​(30mn) =====+===== Bilan (10mn) ===== 
 +   - Donc si on résume, voici des exemples de modèles : 
 +        - A un modèle Clio, on associe des données de consommation fixes et un calcul de la consommation en fonction de la vitesse qui est basé sur un coefficient K donné, on fait pareil pour le modèle Mégane. 
 +        - A un modèle Ferrari F430 on associe des données de consommation fixes et un calcul de la consommation en fonction de la vitesse qui est basé sur un coefficient K calculé, on fait pareil pour certaines Porshes. 
 +        - Et bien sûr, le Berlingot, ...
  
-En fait, pour certains modèles de voiture (par exemple, les Peugeots), les consommations moyennes sont obtenues par des requêtes à un service externe qui, en fonction des informations sur le modèle (on se limite au nom et à l'​année,​ par exemple // Peugeot 208// et  //2000//), nous renvoie une chaine ​de caractères au format JSON, par exemple ''​{"​consommation":​ {"​route"​ : "​6.3",​ "​urbaine"​ : "​8.1"​ } }''​.+Pour tous évidemment ​on peut calculer la production ​de CO2.
  
 +
 +===== Refactoring (30mn) (facultatif mais CONSEILLE) =====
 +En fait, pour certains modèles de voiture (par exemple, les Peugeots), les consommations moyennes sont obtenues par des requêtes à un service externe qui, en fonction des informations sur le modèle (on se limite au nom et à l'​année,​ par exemple // Peugeot 208// et  //2000//), nous renvoie une chaine de caractères au format JSON, par exemple ''​{"​consommation":​ {"​route"​ : "​6.3",​ "​urbaine"​ : "​8.1"​ } }''​.
    - Intégrez ce type de "​calcul"​ de la consommation dans votre modélisation.    - Intégrez ce type de "​calcul"​ de la consommation dans votre modélisation.
    - Quel est l'​impact?​ ((voir plus bas pour des détails techniques))    - Quel est l'​impact?​ ((voir plus bas pour des détails techniques))
-   - Donc si on résume, ​voici des exemples de modèles ​+   - Donc si on résume, ​en plus du bilan précédent ​:  
-        - A un modèle ​Clio, on associe des données de consommation fixes et un calcul de la consommation en fonction de la vitesse qui est basé sur un coefficient K donnéon fait pareil pour le modèle Mégane. +        - A un modèle ​Mercedes ClasseS, on obtient les données de consommation en faisant appel à un service externe, et la consommation en fonction de la vitesse est basée ​sur un coefficient K calculé.
-        - A un modèle Ferrari F430 on associe des données de consommation fixes et un calcul de la consommation en fonction de la vitesse ​qui est basé sur un coefficient K calculé, on fait pareil pour certaines Porshes.+
         - A un modèle Peugeot 208, on obtient les données de consommation en faisant appel à un service externe, et la consommation en fonction de la vitesse est basée sur un coefficient K donné;         - A un modèle Peugeot 208, on obtient les données de consommation en faisant appel à un service externe, et la consommation en fonction de la vitesse est basée sur un coefficient K donné;
-        ​A un modèle Mercedes ClasseS, on obtient les données de consommation ​en faisant appel à un service externe, et la consommation ​en fonction de la vitesse est basée sur un coefficient K calculé.+  ​Les modèles "​Voitures du Peuple"​ trichent ​en renvoyant une production ​en CO2 divisée par 3, par exemple, Le Touran...
   - Si à présent on ajoute un autre mode de détermination de la consommation basée par exemple sur des données statistiques stockées dans un fichier excel, et que l'on décide que le modèle Clio se base sur ces données... Votre solution est-elle toujours valide? ​   - Si à présent on ajoute un autre mode de détermination de la consommation basée par exemple sur des données statistiques stockées dans un fichier excel, et que l'on décide que le modèle Clio se base sur ces données... Votre solution est-elle toujours valide? ​
   - Pour certains véhicules on veut pouvoir enregistrer une consommation en Galon pour 100 Miles, que devez-vous modifier? On ne vous demande pas de le faire.   - Pour certains véhicules on veut pouvoir enregistrer une consommation en Galon pour 100 Miles, que devez-vous modifier? On ne vous demande pas de le faire.
   - Que retenez-vous?​   - Que retenez-vous?​
 +
  
  
Line 135: Line 142:
              * des explications sur les raisons de ce modèle (dont vous êtes très fiers) et les leçons apprises.              * des explications sur les raisons de ce modèle (dont vous êtes très fiers) et les leçons apprises.
        - Les codes et les tests. Pensez bien que le service externe ne doit pas être vraiment implémenté. Une fonction qui pour l'​instant retourne à chaque fois la même chaine de caractère convient très bien, et vous pouvez considérer aussi la transformation d'une chaine de caractère JSON en "autre chose" comme donnée (par exemple : return new Consommation(...)).        - Les codes et les tests. Pensez bien que le service externe ne doit pas être vraiment implémenté. Une fonction qui pour l'​instant retourne à chaque fois la même chaine de caractère convient très bien, et vous pouvez considérer aussi la transformation d'une chaine de caractère JSON en "autre chose" comme donnée (par exemple : return new Consommation(...)).
 +
 +
 +
 +Pour ceux qui rendent la partie facultative,​ un **deuxième** rendu est possible le 2 novembre à 23h59 par mail (Cela n'​exclut pas le 1e rendu.) Il fera dans ce cas, l'​objet d'un "​BONUS"​.
 +
 </​box>​ </​box>​
 +===== Suppléments (facultatifs pour les plus avancés) =====
 +  -  On associe des prix aux carburants, et on veut connaitre le cout d'un trajet en fonction d'un modèle de voitures
 +  - Pour les voitures electriques : la production de CO2 est à 0 et la consommation telle que définie précédemment est à 0 également mais par contre elles exposent un autre type de consommation.... sans le faire que changeriez vous dans votre modèle pour le prendre en compte.
 +
 +
 ==== Tuyaux ==== ==== Tuyaux ====
 Vous pouvez utiliser la bibliothèque "​Jackson"​ pour gérer le format JSON. Vous pouvez utiliser la bibliothèque "​Jackson"​ pour gérer le format JSON.
Line 166: Line 183:
 </​code>​ </​code>​
  
- + 
 +==== Corrections ==== 
 + 
 +[[2015_2016:​s3:​concprogobjet:​td:​corrections:​td2|Corrections TD2 :  Bus]]
 <​html>​ <​html>​
 <!-- <!--
2015_2016/s3/concprogobjet/td/td3.1444816861.txt.gz · Last modified: 2015/10/14 12:01 by blay