Index général
- Outils
- Références
- Tuyaux
On distingue deux formes de consommation pour un même modèle de voiture :
C(v) = 2(d/v) + K v^2 avec v en km/heures, d en km et k un coefficient variable en fonction des voitures.
Si une voiture roule à 150 km/h
sa consommation est donc en litres aux 100km
de :
C(150) = 2(100/150) + K * 150^2 pour la Cl
Avec un coefficient de 3,85*10^-4
, C(150) = 9.99583333333; C(64) = 4,7 litres au 100km
Ce qui en java peut se coder par une ligne comme :
double consommation = 2*(100/vitesse) + coeff*vitesse*vitesse;
On définit un calculateur d'émission de CO2 qui respecte les règles suivantes (voir http://www.ecoscore.be/fr/comment-calculer-les-%C3%A9missions-de-co2-en-fonction-de-la-quantit%C3%A9-de-carburant-consomm%C3%A9)
Pour un moteur Diesel :
1 litre de diesel pèse 835 grammes. Le diesel est composé à 86.2% de carbone (C), ce qui correspond à 720 g de C par litre de diesel. Pour brûler ce C en CO2, 1920 g d’oxygène sont nécessaires. La somme nous donne donc 720 + 1920 = 2640 g de CO2 par litre de diesel.
Une voiture qui consomme 5 litre/100km va donc émettre 5L x 2640 g/L / 100 (par km) = 132 g CO2/km.
Pour un moteur Essence :
1 litre d’essence pèse 750 grammes. L’essence est composée à 87% de carbone (C), ce qui correspond à 652 g de C par litre d’essence. Pour brûler ce C en CO2, 1740 g d’oxygène sont nécessaires. La somme nous donne donc 652 + 1740 = 2392 g de CO2 par litre d’essence.
Une voiture qui consomme 5 litre/100km va donc émettre 5L x 2392 g/L / 100 (par km) = 120 g CO2/km.
emissionCO2(ConsommationLitreAuCent) : g CO2/km
On définit un analyseur de flottes de voitures qui parcourent toutes les modèles de voitures de la flotte et récupère pour chacun ses émissions de CO2 sur route et en fait la moyenne.
On vient d'établir une formule 2) qui, pour certains modèles de voitures, à partir des données connues en circulation urbaine ou sur route permet de déterminer le coefficient K, selon la formule suivante : On calcule le coefficient en multipliant par 10^-4, la consommation sur route au dessus de 100 km/h, la consommation mixte entre 100 et 50, et en dessous urbaine.
- 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! 3) Bien sûr les calculs précédents pour le modèle Clio restent vrais. Vos tests doivent donc continuer à être effectifs.
On veut définir un calculateur qui en fonction d'un modèle de voiture et d'une distance peut calculer :
Pour tous évidemment on peut calculer la production de CO2.
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” } }
.
A la fin de la 2e séance soit le 27 octobre 2015 à minuit
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”.
Vous pouvez utiliser la bibliothèque “Jackson” pour gérer le format JSON.
Les . jar dont vous avez besoin :jackson-databind-2.3.1.jar jackson-core-2.4.3.jar jackson-annotations-2.4.0.jar
Pour pouvoir les utiliser dans le projet Eclipse : Sur le projet > Properties > Java Build Path > Add external Jars et sélectionnez les.
Pour transformer un objet Java en string Json :
ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); Object json = objectMapper.readValue( objectMapper.writeValueAsString(cm), Object.class); String jsonString = objectMapper.writerWithDefaultPrettyPrinter() .writeValueAsString(json); return jsonString;
Pour transformer une string Json en objet Java :
//Appel fonction de votre code// String json = serviceExterne.consommationJSON(modele); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.enableDefaultTyping(); //Nom de la classe cible dépendant de votre modèle, chez moi, c'est ConsommationMoyenne ConsommationMoyenne cm = objectMapper.readValue(json, ConsommationMoyenne.class);
private double calculerCoeff(Vitesse v) { 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, if (v.getValeur()>100){ return coeff*consoSurRoute.getValeur();} if (v.getValeur()>50) return coeff*consoMixte.getValeur(); return coeff*consoUrbaine.getValeur(); }