S3 : Conception et Programmation Objet Avancées
-
- Attention pensez au rendu de fin de module
Basé sur TP3 de l'Université Montpellier II — L3 Informatique 2008/09 Programmation par objets en Java
.
Une entreprise de Patagonie développe un moteur à huile de rutabaga, et dote plusieurs véhicules de ce moteur. Avant d'effectuer des tests grandeur nature, l'entreprise conçoit un programme de simulation du comportement des véhicules. Ce programme est écrit en Java. On ne s'intéresse ici qu'à une toute petite partie de ce programme. Le problème que l'on veut résoudre dans un premier temps est celui du calcul de la vitesse maximum pouvant être atteinte par un véhicule.
On s'intéresse également à la définition de convois de véhicules. Un convoi est composé d'un ensemble de véhicules de différents types.
Un nouveau type de véhicule est apparu, les “voitures sans permis” pour lesquels la vitesse maximale est de 50 km et le poids à vide de 425kg, pas de chargement possible.
Les ingénieurs de l'entreprise ont mis au moins un calculateur (Class Simulator) qui permet de calculer la consommation moyenne en carburant d'un engin, il expose donc la méthode statique : public static double consumption (Machine machine, int speed), par exemple1).
public class Simulator { public static final int MAX_WEIGHT = 10000; public static final int MIN_WEIGHT = 425; private Simulator() {} public static double consumption (Machine machine, int speed) { double normalizedWeight = (double) (machine.getWeight() - MIN_WEIGHT) / (MAX_WEIGHT - MIN_WEIGHT ); return (1 + normalizedWeight) * machine.getHourlyFuelConsumption() * speed /20; } }
Une Machine est définie par une interface comme suit :
public interface Machine { public int getWeight(); public double getHourlyFuelConsumption(); }
On veut pouvoir calculer la consommation totale d'un convoi allant à sa vitesse maximale (c'est-à-dire, on le rappelle, à la plus petite des vitesses maximales des véhicules du convoi).
Que feriez-vous si l'on vous disait que l'on veut pouvoir créer des véhicules à partir de leur poids à vide, charge maximale, etc… ?
A la fin du TD, en l'état,
Dépôt sur jalon avec comme nom : GroupeNumero - Noms des etudiants
public double getVitesseMax(){ double resultat =150; double resultat2 =0; for (Vehicule v : listeVehicule) { if(v instanceof PetitBus){ resultat2=((PetitBus) v).getVitesseMax(); } if(v instanceof CamionCiterne){ resultat2=((CamionCiterne) v).getVitesseMax(); } if(v instanceof CamionBache){ resultat2=((CamionBache) v).getVitesseMax(); } if(v instanceof VoitureSansPermis){ resultat2=((VoitureSansPermis) v).getVitesseMax(); } if (resultat2<resultat){ resultat = resultat2; } } return resultat; }