Имитация автомобиля (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;
}

}

Общественный автомобиль класса расширяет одометр {

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--;
}

}

3 ответа

Я бы больше порекомендовал отношение "содержит против" для компонентов вашего автомобиля.

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

class Vehicle { ... }

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

   ...
}

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

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



Надеюсь, что это помогает вдохновения.

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

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

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

-KishoreMadina

Другие вопросы по тегам