Restructer and add CanFixAccident

- Move Capacity field to Vehicle class
	- Improve Breakable interface
This commit is contained in:
HeshamTB 2020-10-16 05:56:03 +03:00
parent 58dfb37437
commit de0331088f
Signed by: Hesham
GPG Key ID: 74876157D199B09E
5 changed files with 44 additions and 13 deletions

View File

@ -1,7 +1,11 @@
import java.util.Date;
public interface Breakable {
public int getTimeToFix();
public boolean isBroken();
public boolean isInAccident();
int getTimeToFix();
boolean isBroken();
boolean isInAccident();
void collide(Breakable car, Date time);
void _break(Date time);
}

3
src/CanFixAccident.java Normal file
View File

@ -0,0 +1,3 @@
public interface CanFixAccident {
//void attendToAccident(Accident accident);
}

View File

@ -1,22 +1,21 @@
import java.util.Date;
public class Sedan extends Vehicle implements Breakable {
private final int TIME_TO_FIX = 15; //in minutes
private boolean broken;
private boolean accident;
private int capacity;
public Sedan(double vehicleSize, boolean govtCar){
super(vehicleSize, govtCar);
capacity = 4; //Should make this attr. in vehicle.
super(vehicleSize, govtCar, 4);
}
public boolean isBroken(){ return broken; }
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 getCapacity() { return capacity; }
public void collide() { this.accident = true; }
public void _break() { this.broken = true; }
public void fixed() { this.broken = false; this.accident = false; }

View File

@ -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){
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--;
}
}

View File

@ -2,10 +2,12 @@ public abstract class Vehicle {
private double vehicleSize;
private boolean govtCar;
private int capacity;
public Vehicle(double vehicleSize, boolean govtCar){
public Vehicle(double vehicleSize, boolean govtCar, int capacity){
this.vehicleSize = vehicleSize;
this.govtCar = govtCar;
setCapacity(capacity);
}
public double getVehicleSize() {
return vehicleSize;
@ -14,4 +16,15 @@ public abstract class Vehicle {
public boolean isGovtCar() {
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));
}
}