Restructer and add CanFixAccident
- Move Capacity field to Vehicle class - Improve Breakable interface
This commit is contained in:
parent
58dfb37437
commit
de0331088f
@ -1,7 +1,11 @@
|
|||||||
|
import java.util.Date;
|
||||||
|
|
||||||
public interface Breakable {
|
public interface Breakable {
|
||||||
|
|
||||||
public int getTimeToFix();
|
int getTimeToFix();
|
||||||
public boolean isBroken();
|
boolean isBroken();
|
||||||
public boolean isInAccident();
|
boolean isInAccident();
|
||||||
|
void collide(Breakable car, Date time);
|
||||||
|
void _break(Date time);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
3
src/CanFixAccident.java
Normal file
3
src/CanFixAccident.java
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
public interface CanFixAccident {
|
||||||
|
//void attendToAccident(Accident accident);
|
||||||
|
}
|
@ -1,22 +1,21 @@
|
|||||||
|
import java.util.Date;
|
||||||
|
|
||||||
public class Sedan extends Vehicle implements Breakable {
|
public class Sedan extends Vehicle implements Breakable {
|
||||||
|
|
||||||
private final int TIME_TO_FIX = 15; //in minutes
|
private final int TIME_TO_FIX = 15; //in minutes
|
||||||
private boolean broken;
|
private boolean broken;
|
||||||
private boolean accident;
|
private boolean accident;
|
||||||
private int capacity;
|
|
||||||
|
|
||||||
public Sedan(double vehicleSize, boolean govtCar){
|
public Sedan(double vehicleSize, boolean govtCar){
|
||||||
super(vehicleSize, govtCar);
|
super(vehicleSize, govtCar, 4);
|
||||||
capacity = 4; //Should make this attr. in vehicle.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isBroken(){ return broken; }
|
public boolean isBroken(){ return broken; }
|
||||||
public boolean isInAccident(){ return accident; }
|
public boolean isInAccident(){ return accident; }
|
||||||
|
public void _break(Date time) { this.broken = true; } //TODO
|
||||||
|
public void collide(Breakable car, Date time) { this.accident = true; }//TODO //Maybe add time of accident and other breakable args
|
||||||
public int getTimeToFix(){ return TIME_TO_FIX; }
|
public int getTimeToFix(){ return TIME_TO_FIX; }
|
||||||
public int getCapacity() { return capacity; }
|
|
||||||
|
|
||||||
public void collide() { this.accident = true; }
|
|
||||||
public void _break() { this.broken = true; }
|
|
||||||
|
|
||||||
public void fixed() { this.broken = false; this.accident = false; }
|
public void fixed() { this.broken = false; this.accident = false; }
|
||||||
|
|
||||||
|
@ -1,9 +1,21 @@
|
|||||||
public class TrafficPoliceCar extends Vehicle {
|
public class TrafficPoliceCar extends Vehicle implements CanFixAccident {
|
||||||
|
|
||||||
private final double ADDED_EFFICIENCY = 0.05; // 5%
|
public final double ADDED_EFFICIENCY = 0.05; // 5%
|
||||||
|
//private Street str_location or name
|
||||||
|
private static int totalTrafficCars;
|
||||||
|
|
||||||
public TrafficPoliceCar(double vehicleSize, boolean govtCar){
|
public TrafficPoliceCar(double vehicleSize, boolean govtCar){
|
||||||
super(vehicleSize, govtCar);
|
super(vehicleSize, govtCar, 2); //Capacity is irrelevant.
|
||||||
|
totalTrafficCars++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getTotalTrafficCars() {
|
||||||
|
return totalTrafficCars;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void finalize() throws Throwable {
|
||||||
|
super.finalize();
|
||||||
|
totalTrafficCars--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,12 @@ public abstract class Vehicle {
|
|||||||
|
|
||||||
private double vehicleSize;
|
private double vehicleSize;
|
||||||
private boolean govtCar;
|
private boolean govtCar;
|
||||||
|
private int capacity;
|
||||||
|
|
||||||
public Vehicle(double vehicleSize, boolean govtCar){
|
public Vehicle(double vehicleSize, boolean govtCar, int capacity){
|
||||||
this.vehicleSize = vehicleSize;
|
this.vehicleSize = vehicleSize;
|
||||||
this.govtCar = govtCar;
|
this.govtCar = govtCar;
|
||||||
|
setCapacity(capacity);
|
||||||
}
|
}
|
||||||
public double getVehicleSize() {
|
public double getVehicleSize() {
|
||||||
return vehicleSize;
|
return vehicleSize;
|
||||||
@ -14,4 +16,15 @@ public abstract class Vehicle {
|
|||||||
public boolean isGovtCar() {
|
public boolean isGovtCar() {
|
||||||
return govtCar;
|
return govtCar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getCapacity() {
|
||||||
|
return capacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setCapacity(int capacity) throws IllegalArgumentException {
|
||||||
|
if (capacity > 0 && capacity < 50){
|
||||||
|
this.capacity = capacity;
|
||||||
|
}
|
||||||
|
else throw new IllegalArgumentException(String.format("Invalid vehicle capacity %d", capacity));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user