Create a simple application to model the different types of cars and vehicles. T
ID: 3570238 • Letter: C
Question
Create a simple application to model the different types of cars and vehicles. The following classes and should be defined:
Vehicle
An Abstract Java class.
Instance variables:
Static constants:
static final int Power_Gas = 1;
static final int Power_Diesel = 2;
static final int Power_Electricity = 3;
static final int Power_Hybrid = 4;
static final int Power_Hydrogen = 5;
static final int Power_Human = 6;
static final int Power_SolarEnergy = 7;
static final int DefaultPowerSource = Power_Gas;
boolean isRunning
int currentSpeed
int fuelLevel: a number between 0 and 100; level 100 means fuel is full.
int powerSource
with the following possible values using the constants defined above
Subclasses of Vehicle should use the defined constants when creating a new Car or Vehicle.
Constructors:
None
Methods:
- Get /set for the instance variables
- abstract boolean start()
- abstract void stop()
- abstract boolean accelerate()
- abstract boolean addFuel()
- boolean isRunning()
Car
A Java class that extends Vehicle
Instance variables:
private String make;
private String model;
private int numberOfDoors;
Constructors
public Car ( String make, String model , int numberOfDoors);
public Car ( String make, String model , int numberOfDoors, int powerSource);
Methods
public Get and Set methods for make, model, numberOfDoors
public boolean start():
If fuelLevel is less than 3, return false.
If fuelLevel is 3 or more, set the currentSpeed to 50; update isRunning to true, returns true.
public void stop() set the currentSpeed to 0; update isRunning to false
public boolean addFuel:
If fuelLevel is 100, return false;
If fuelLevel is less than 100, add 20 to the fuelLevel, but do not allow fuelLevel to exceed 100, return true
public boolean accelerate()
If fuelLevel is less than 3, return false
If car is not running, return false
If currentSpeed is less than 200, add 20 to the currentSpeed, but do not allow currentSpeed to exceed 200, then return true
public String toString(): return useful information about the car, including the fuel level and speed
HybridCar
A Java class that extends Car
Constructors
HybridCar ( String make, String model , int numberOfDoors);
Methods:
public boolean start():
If fuelLevel is less than 2, return false.
Otherwise, set the currentSpeed to 40; update isRunning to true, returns true.
public void stop() set the currentSpeed to 0; update isRunning to false
public boolean addFuel:
If fuelLevel is 100, return false;
If fuelLevel is less than 100, add 10 to the fuelLevel, but do not allow fuelLevel to exceed 100, return true
public boolean accelerate()
If fuelLevel is less than 2, return false
If car is not running, return false
If currentSpeed is less than 150, add 10 to the currentSpeed, but do not allow currentSpeed to exceed 150, then return true
public String toString(): return useful information about the car, including the fuel level and speed
ElectricCar
A Java class that extends Car
Constructors
HybridCar ( String make, String model , int numberOfDoors);
Methods:
public boolean start():
If fuelLevel is less than 1, return false.
Otherwise, set the currentSpeed to 30; update isRunning to true, returns true.
public void stop() set the currentSpeed to 0; update isRunning to false
public boolean addFuel:
If fuelLevel is 100, return false;
If fuelLevel is less than 100, add 5 to the fuelLevel, but do not allow fuelLevel to exceed 100, return true
public boolean accelerate()
If fuelLevel is less than 1, return false
If car is not running, return false
If currentSpeed is less than 120, add 5 to the currentSpeed, but do not allow currentSpeed to exceed 120, then return true
public String toString(): return useful information about the car, including the fuel level and speed
Testing
The Car class may contain the main() method to test your other classes.
In main(), create new objects (new Car(
Explanation / Answer
Complete Program:
// File: Vehicle.java
public abstract class Vehicle
{
private static final int Power_Gas = 1;
private static final int Power_Diesel = 2;
private static final int Power_Electricity = 3;
private static final int Power_Hybrid = 4;
private static final int Power_Hydrogen = 5;
private static final int Power_Human = 6;
private static final int Power_SolarEnergy = 7;
private static final int DefaultPowerSource = Power_Gas;
private boolean isRunning;
private int currentSpeed;
private int fuelLevel;
private int powerSource;
public static int getPowerGas()
{
return Power_Gas;
}
public static int getPowerDiesel()
{
return Power_Diesel;
}
public static int getPowerElectricity()
{
return Power_Electricity;
}
public static int getPowerHybrid()
{
return Power_Hybrid;
}
public static int getPowerHydrogen()
{
return Power_Hydrogen;
}
public static int getPowerHuman()
{
return Power_Human;
}
public static int getPowerSolarenergy()
{
return Power_SolarEnergy;
}
public static int getDefaultpowersource()
{
return DefaultPowerSource;
}
public boolean isRunning()
{
return isRunning;
}
public void setRunning(boolean isRunning)
{
this.isRunning = isRunning;
}
public int getCurrentSpeed()
{
return currentSpeed;
}
public void setCurrentSpeed(int currentSpeed)
{
this.currentSpeed = currentSpeed;
}
public int getFuelLevel()
{
return fuelLevel;
}
public void setFuelLevel(int fuelLevel)
{
this.fuelLevel = fuelLevel;
}
public int getPowerSource()
{
return powerSource;
}
public void setPowerSource(int powerSource)
{
this.powerSource = powerSource;
}
public abstract boolean start();
public abstract void stop();
public abstract boolean accelerate();
public abstract boolean addFuel();
}
----------------------------------------------------------------------------------------------------------------------------------
// File: Car.java
public class Car extends Vehicle
{
private String make;
private String model;
private int numberOfDoors;
public Car(String make, String model, int numberOfDoors)
{
this.make = make;
this.model = model;
this.numberOfDoors = numberOfDoors;
setPowerSource(1);
}
public Car(String make, String model, int numberOfDoors, int powerSource)
{
this.make = make;
this.model = model;
this.numberOfDoors = numberOfDoors;
setPowerSource(powerSource);
}
public String getMake()
{
return make;
}
public void setMake(String make)
{
this.make = make;
}
public String getModel()
{
return model;
}
public void setModel(String model)
{
this.model = model;
}
public int getNumberOfDoors()
{
return numberOfDoors;
}
public void setNumberOfDoors(int numberOfDoors)
{
this.numberOfDoors = numberOfDoors;
}
public boolean start()
{
if(getFuelLevel() < 3)
return false;
else
{
setCurrentSpeed(50);
setRunning(true);
return true;
}
}
public void stop()
{
setCurrentSpeed(0);
setRunning(false);
}
public boolean addFuel()
{
int fuelLevel = getFuelLevel();
if(fuelLevel == 100)
return false;
if(fuelLevel < 100)
{
if(fuelLevel + 20 <= 100)
setFuelLevel(fuelLevel + 20);
else
setFuelLevel(100);
return true;
}
return false;
}
public boolean accelerate()
{
if(getFuelLevel() < 3)
return false;
if(!isRunning())
return false;
int currentSpeed = getCurrentSpeed();
if(currentSpeed < 200)
{
if(currentSpeed + 20 <= 200)
setCurrentSpeed(currentSpeed + 20);
else
setCurrentSpeed(200);
return true;
}
return false;
}
public String toString()
{
return "Car Make: " + make + ", Care Model: " + model + ", Power Source: " + getPowerSource() + ", Running: " + isRunning() + ", CurrentSpeed: " + getCurrentSpeed() + ", Fuel Level: " + getFuelLevel();
}
}
----------------------------------------------------------------------------------------------------------------------------------
// File: HybridCar.java
public class HybridCar extends Car
{
public HybridCar(String make, String model , int numberOfDoors)
{
super(make, model, numberOfDoors);
}
public boolean start()
{
if(getFuelLevel() < 2)
return false;
setCurrentSpeed(40);
setRunning(true);
return true;
}
public void stop()
{
setCurrentSpeed(0);
setRunning(false);
}
public boolean addFuel()
{
int fuelLevel = getFuelLevel();
if(fuelLevel == 100)
return false;
if(fuelLevel < 100)
{
if(fuelLevel + 10 <= 100)
setFuelLevel(fuelLevel + 10);
else
setFuelLevel(100);
return true;
}
return false;
}
public boolean accelerate()
{
if(getFuelLevel() < 2)
return false;
if(!isRunning())
return false;
int currentSpeed = getCurrentSpeed();
if(currentSpeed < 150)
{
if(currentSpeed + 10 <= 150)
setCurrentSpeed(currentSpeed + 10);
else
setCurrentSpeed(150);
return true;
}
return false;
}
public String toString()
{
return "Hybrid " + super.toString();
}
}
----------------------------------------------------------------------------------------------------------------------------------
// File: ElectricCar.java
public class ElectricCar extends Car
{
public ElectricCar(String make, String model , int numberOfDoors)
{
super(make, model, numberOfDoors);
}
public boolean start()
{
if(getFuelLevel() < 1)
return false;
setCurrentSpeed(30);
setRunning(true);
return true;
}
public void stop()
{
setCurrentSpeed(0);
setRunning(false);
}
public boolean addFuel()
{
int fuelLevel = getFuelLevel();
if(fuelLevel == 100)
return false;
if(fuelLevel < 100)
{
if(fuelLevel + 5 <= 100)
setFuelLevel(fuelLevel + 5);
else
setFuelLevel(100);
return true;
}
return false;
}
public boolean accelerate()
{
if(getFuelLevel() < 1)
return false;
if(!isRunning())
return false;
int currentSpeed = getCurrentSpeed();
if(currentSpeed < 120)
{
if(currentSpeed + 5 <= 120)
setCurrentSpeed(currentSpeed + 5);
else
setCurrentSpeed(120);
return true;
}
return false;
}
public String toString()
{
return "Electric " + super.toString();
}
}
----------------------------------------------------------------------------------------------------------------------------------
// File: CarTester.java
public class CarTester
{
public static void main(String[] args)
{
Car car = new Car("Honda", "Civic EX", 4);
HybridCar hcar = new HybridCar("Toyota", "Camry", 4);
ElectricCar ecar = new ElectricCar("Ford", "Volt", 4);
System.out.println("########## Testing Standard Car ##########");
System.out.println(car);
car.setMake("Ford");
car.setModel("Tough");
car.setPowerSource(7);
System.out.println(car);
System.out.println("Starting Car...");
car.start();
System.out.println("Is car running: " + car.isRunning());
System.out.println("Adding Fuel...");
car.addFuel();
car.setPowerSource(1);
System.out.println("Starting Car...");
car.start();
System.out.println(car);
while(car.addFuel())
System.out.println("Fuel Level: " + car.getFuelLevel());
car.addFuel();
System.out.println("Fuel Level: " + car.getFuelLevel());
while(car.accelerate())
System.out.println("Current Speed: " + car.getCurrentSpeed());
car.accelerate();
System.out.println("Current Speed: " + car.getCurrentSpeed());
car.accelerate();
System.out.println("Current Speed: " + car.getCurrentSpeed());
car.setPowerSource(7);
System.out.println(car);
System.out.println("Stopping Car...");
car.stop();
System.out.println(car);
System.out.println();
System.out.println("########## Testing Hybrid Car ##########");
hcar.setPowerSource(4);
System.out.println(hcar);
hcar.setMake("Nissan");
hcar.setModel("Leaf");
System.out.println(hcar);
System.out.println("Starting Hybrid Car...");
hcar.start();
System.out.println("Is car running: " + hcar.isRunning());
System.out.println("Adding Fuel...");
hcar.addFuel();
System.out.println("Starting Hybrid Car...");
hcar.start();
System.out.println(hcar);
while(hcar.addFuel())
System.out.println("Fuel Level: " + hcar.getFuelLevel());
hcar.addFuel();
System.out.println("Fuel Level: " + hcar.getFuelLevel());
while(hcar.accelerate())
System.out.println("Current Speed: " + hcar.getCurrentSpeed());
hcar.accelerate();
System.out.println("Current Speed: " + hcar.getCurrentSpeed());
System.out.println(hcar);
System.out.println("Stopping Hybrid Car...");
hcar.stop();
System.out.println(hcar);
System.out.println();
System.out.println("########## Testing Eletric Car ##########");
ecar.setPowerSource(3);
System.out.println(ecar);
ecar.setMake("Tesla");
ecar.setModel("S");
System.out.println(hcar);
System.out.println("Starting Eletric Car...");
ecar.start();
System.out.println("Is car running: " + ecar.isRunning());
System.out.println("Adding Fuel...");
ecar.addFuel();
System.out.println("Starting Eletric Car...");
ecar.start();
System.out.println(ecar);
while(ecar.addFuel())
System.out.println("Fuel Level: " + ecar.getFuelLevel());
ecar.addFuel();
System.out.println("Fuel Level: " + ecar.getFuelLevel());
while(ecar.accelerate())
System.out.println("Current Speed: " + ecar.getCurrentSpeed());
ecar.accelerate();
System.out.println("Current Speed: " + ecar.getCurrentSpeed());
System.out.println(ecar);
System.out.println("Stopping Eletric Car...");
ecar.stop();
System.out.println(ecar);
System.out.println();
}
}
----------------------------------------------------------------------------------------------------------------------------------
Sample Output:
########## Testing Standard Car ##########
Car Make: Honda, Care Model: Civic EX, Power Source: 1, Running: false, CurrentSpeed: 0, Fuel Level: 0
Car Make: Ford, Care Model: Tough, Power Source: 7, Running: false, CurrentSpeed: 0, Fuel Level: 0
Starting Car...
Is car running: false
Adding Fuel...
Starting Car...
Car Make: Ford, Care Model: Tough, Power Source: 1, Running: true, CurrentSpeed: 50, Fuel Level: 20
Fuel Level: 40
Fuel Level: 60
Fuel Level: 80
Fuel Level: 100
Fuel Level: 100
Current Speed: 70
Current Speed: 90
Current Speed: 110
Current Speed: 130
Current Speed: 150
Current Speed: 170
Current Speed: 190
Current Speed: 200
Current Speed: 200
Current Speed: 200
Car Make: Ford, Care Model: Tough, Power Source: 7, Running: true, CurrentSpeed: 200, Fuel Level: 100
Stopping Car...
Car Make: Ford, Care Model: Tough, Power Source: 7, Running: false, CurrentSpeed: 0, Fuel Level: 100
########## Testing Hybrid Car ##########
Hybrid Car Make: Toyota, Care Model: Camry, Power Source: 4, Running: false, CurrentSpeed: 0, Fuel Level: 0
Hybrid Car Make: Nissan, Care Model: Leaf, Power Source: 4, Running: false, CurrentSpeed: 0, Fuel Level: 0
Starting Hybrid Car...
Is car running: false
Adding Fuel...
Starting Hybrid Car...
Hybrid Car Make: Nissan, Care Model: Leaf, Power Source: 4, Running: true, CurrentSpeed: 40, Fuel Level: 10
Fuel Level: 20
Fuel Level: 30
Fuel Level: 40
Fuel Level: 50
Fuel Level: 60
Fuel Level: 70
Fuel Level: 80
Fuel Level: 90
Fuel Level: 100
Fuel Level: 100
Current Speed: 50
Current Speed: 60
Current Speed: 70
Current Speed: 80
Current Speed: 90
Current Speed: 100
Current Speed: 110
Current Speed: 120
Current Speed: 130
Current Speed: 140
Current Speed: 150
Current Speed: 150
Hybrid Car Make: Nissan, Care Model: Leaf, Power Source: 4, Running: true, CurrentSpeed: 150, Fuel Level: 100
Stopping Hybrid Car...
Hybrid Car Make: Nissan, Care Model: Leaf, Power Source: 4, Running: false, CurrentSpeed: 0, Fuel Level: 100
########## Testing Eletric Car ##########
Electric Car Make: Ford, Care Model: Volt, Power Source: 3, Running: false, CurrentSpeed: 0, Fuel Level: 0
Hybrid Car Make: Nissan, Care Model: Leaf, Power Source: 4, Running: false, CurrentSpeed: 0, Fuel Level: 100
Starting Eletric Car...
Is car running: false
Adding Fuel...
Starting Eletric Car...
Electric Car Make: Tesla, Care Model: S, Power Source: 3, Running: true, CurrentSpeed: 30, Fuel Level: 5
Fuel Level: 10
Fuel Level: 15
Fuel Level: 20
Fuel Level: 25
Fuel Level: 30
Fuel Level: 35
Fuel Level: 40
Fuel Level: 45
Fuel Level: 50
Fuel Level: 55
Fuel Level: 60
Fuel Level: 65
Fuel Level: 70
Fuel Level: 75
Fuel Level: 80
Fuel Level: 85
Fuel Level: 90
Fuel Level: 95
Fuel Level: 100
Fuel Level: 100
Current Speed: 35
Current Speed: 40
Current Speed: 45
Current Speed: 50
Current Speed: 55
Current Speed: 60
Current Speed: 65
Current Speed: 70
Current Speed: 75
Current Speed: 80
Current Speed: 85
Current Speed: 90
Current Speed: 95
Current Speed: 100
Current Speed: 105
Current Speed: 110
Current Speed: 115
Current Speed: 120
Current Speed: 120
Electric Car Make: Tesla, Care Model: S, Power Source: 3, Running: true, CurrentSpeed: 120, Fuel Level: 100
Stopping Eletric Car...
Electric Car Make: Tesla, Care Model: S, Power Source: 3, Running: false, CurrentSpeed: 0, Fuel Level: 100
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.