2012-11-21 2 views
1

Я работаю над проектом по моделированию автомобиля. Требования - продемонстрировать работу автомобиля, заполнив его топливом, а затем запустить автомобиль, пока не будет больше топлива . Имитировать процесс заполнения и запуска автомобиля с разной скоростью. Когда автомобиль работает, периодически распечатывайте текущий пробег автомобиля, количество топлива и скорость.Моделирование автомобиля (Java)

Я написал несколько других классов, чтобы провести некоторые методы, которые я буду использовать для расчета топлива, скорости и пробега. У меня просто небольшие проблемы с тем, как я должен делать работу, как на самом деле, любая помощь будет оценена по достоинству.

public class FuelGauge { 

protected double fuel; 

public FuelGauge() 
{ 
    fuel = 0.0; 
} 

public double getFuel() 
{ 
    return fuel; 
} 

public void setFuel(double fuel) 
{ 
    this.fuel = fuel; 
} 

public void fuelUp() 
{ 
    if(fuel<18) 
    fuel++;  
} 

public void fuelDown() 
{ 
    if(fuel>0) 
     fuel--; 
} 

}

общественного класса одометр расширяет FuelGauge {

private int mileage, mpg; 
private int economy; 


public int getMileage() 
{ 
    return mileage; 
} 

public void setMileage(int mileage) 
{ 
    this.mileage = mileage; 
} 

public int getMpg() 
{ 
    return mpg; 
} 

public void setMpg(int mpg) 
{ 
    this.mpg = mpg; 
} 

public void mileUp() 
{ 
    if(mileage<999999) 
     mileage++; 
} 

public void mileReset() 
{ 
    if(mileage>999999) 
     mileage = 0; 
} 

public void decreaseFuel(int fuel) 
{ 
    if(mileage == mpg) 
     fuelDown(); 
} 

public int getEconomy() 
{ 
    return (int) (mileage/fuel); 
} 

public void setEconomy(int economy) 
{ 
    this.economy = economy; 
} 

}

общественного класса Car расширяет одометр {

private String name; 
private int speed; 

public Car() 
    { 
     name = "Car"; 
     getMileage(); 
     getMpg(); 
     getEconomy(); 
     getFuel(); 
    } 

public String getName() 
{ 
    return name; 
} 

public void setName(String name) 
{ 
    this.name = name; 
} 

public int getSpeed() 
{ 
    return speed; 
} 

public void setSpeed(int speed) 
{ 
    this.speed = speed; 
} 

public void increaseSpeed() 
{ 
    if(speed<=120) 
     speed++; 
} 

public void decreaseSpeed() 
{ 
    if(speed>0) 
     speed--; 
} 

}

+0

Вы имели ввиду сообщение FuelGauge() дважды? Я чувствую, что одним из них должен был быть Одометр() –

+0

Да, конечно, сделал, исправил. –

ответ

5

Я бы порекомендовал, что содержит отношения vs isa для компонентов вашего автомобиля.

class FuelGauge { ... } 
class Odometer { ...} 

class Vehicle { ... } 

class Car extends Vehicle 
{ 
    private FuelGauge fuelGauge = new FuelGauge(); 
    private Odometer odometer = new Odometer(); 

    ... 
} 
+1

точно. Если OP не подумает, что разумно подумать «Автомобиль IS A Fuel Gauge» –

1

Ну, вот несколько советов:

  • Начало автомобиля.
  • Выдвиньте с подъездной дороги; если это не нужно, начните вождение
  • Если вы планируете ездить с фиксированной скоростью, вы можете рассчитать, сколько времени займет поездка, и просто используйте петлю для обновления расстояния и топлива; в противном случае, вы можете хранить набор скорости в массиве, используйте цикл, и передать переменную скорость на каждой итерации (это может быть немного трудно подсчитать, сколько топлива слева)



Надежда что помогает вдохновению работать.

+0

спасибо за вход, я, вероятно, попробую использовать петлю и иметь автомобиль на одной постоянной скорости и отображать топливо и пробег. –

+0

Это хорошо; ответьте, если вы чувствуете, что это помогло. Благодарю. –

0

Вот дизайн вашего приложения автосимулятор:

  • Определить класс автомобилей, который будет иметь показания одометра, текущее топливо внутри бака и т.д., как переменные экземпляра.
  • Напишите поток, который непрерывно запускается с некоторым временем сна 100 миллисекунд или около того для каждой итерации и внутри метода прогона потока вы имеете дело с логикой включения показаний одометра и уменьшения количества топлива в некоторой пропорции. убедитесь, что ваша нить будет работать до тех пор, пока топливо в баке больше 0. Если в случае, если вы можете поднять событие или сигнал тревоги только в cse, топливо находится ниже определенной константы.
  • Напишите основной класс для запуска класса с полным топливом бака (может составлять 40 литров) и показания одометра до 0, а затем запустите нить.

Надеюсь, это полезно.

-KishoreMadina