Remake Vehicle classes
- Abstract class CivilVehicle that implements Breakable and contains all common fields of vehicles. Now for example, Sedan <- CivilVehicle <- Vehicle ^ Breakable The breakable methods are mostly implemented in CivilVehicle Except getTimeToFix() which is defined in subclasses of CivilVehicle. - Breakable interface: The method collide() now returns instance of Accident instead of void Signed-off-by: HeshamTB <hishaminv@gmail.com>
This commit is contained in:
		
							parent
							
								
									1b8b05cbb5
								
							
						
					
					
						commit
						eb94de2754
					
				@ -5,7 +5,7 @@ public interface Breakable {
 | 
				
			|||||||
    int getTimeToFix();
 | 
					    int getTimeToFix();
 | 
				
			||||||
    boolean isBroken();
 | 
					    boolean isBroken();
 | 
				
			||||||
    boolean isInAccident();
 | 
					    boolean isInAccident();
 | 
				
			||||||
    void collide(Breakable car, Date time);
 | 
					    Accident collide(Breakable car, Date time);
 | 
				
			||||||
    void _break(Date time);
 | 
					    void _break(Date time);
 | 
				
			||||||
    void fix();
 | 
					    void fix();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										33
									
								
								src/Bus.java
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								src/Bus.java
									
									
									
									
									
								
							@ -1,11 +1,8 @@
 | 
				
			|||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Bus extends Vehicle implements Breakable {
 | 
					public class Bus extends CivilVehicle {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final int TIME_TO_FIX = 20; //in minutes
 | 
					    private final int TIME_TO_FIX = 20; //in minutes
 | 
				
			||||||
    private boolean broken;
 | 
					 | 
				
			||||||
    private boolean inAccident;
 | 
					 | 
				
			||||||
    private Date breakDownTime;//TODO: PDate
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Bus(double vehicleSize) {
 | 
					    public Bus(double vehicleSize) {
 | 
				
			||||||
        super(vehicleSize);
 | 
					        super(vehicleSize);
 | 
				
			||||||
@ -15,32 +12,4 @@ public class Bus extends Vehicle implements Breakable {
 | 
				
			|||||||
    public int getTimeToFix() {
 | 
					    public int getTimeToFix() {
 | 
				
			||||||
        return TIME_TO_FIX;
 | 
					        return TIME_TO_FIX;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public boolean isBroken() {
 | 
					 | 
				
			||||||
        return broken;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public boolean isInAccident() {
 | 
					 | 
				
			||||||
        return inAccident;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void collide(Breakable car, Date time) {
 | 
					 | 
				
			||||||
        //Make Accident here and change return type?
 | 
					 | 
				
			||||||
        // or make reference as property
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void _break(Date time) {
 | 
					 | 
				
			||||||
        broken = true;
 | 
					 | 
				
			||||||
        breakDownTime = time;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void fix() {
 | 
					 | 
				
			||||||
        broken = false;
 | 
					 | 
				
			||||||
        inAccident = false;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										58
									
								
								src/CivilVehicle.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/CivilVehicle.java
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					import java.util.Date;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public abstract class  CivilVehicle extends Vehicle implements Breakable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private boolean broken;
 | 
				
			||||||
 | 
					    private boolean inAccident;
 | 
				
			||||||
 | 
					    private Accident currentAccident;
 | 
				
			||||||
 | 
					    private Date breakDownTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public CivilVehicle(double vehicleSize) {
 | 
				
			||||||
 | 
					        super(vehicleSize);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean isBroken() {
 | 
				
			||||||
 | 
					        return broken;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean isInAccident() {
 | 
				
			||||||
 | 
					        return inAccident;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public Accident collide(Breakable car, Date time) {
 | 
				
			||||||
 | 
					        if (currentAccident == null) {
 | 
				
			||||||
 | 
					            Breakable[] cars = new Breakable[2];
 | 
				
			||||||
 | 
					            cars[0] = this;
 | 
				
			||||||
 | 
					            cars[1] = car;
 | 
				
			||||||
 | 
					            Accident accident = new Accident(time, cars);
 | 
				
			||||||
 | 
					            this.currentAccident = accident;
 | 
				
			||||||
 | 
					            this.inAccident = true;
 | 
				
			||||||
 | 
					            return accident;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void _break(Date time) {
 | 
				
			||||||
 | 
					        broken = true;
 | 
				
			||||||
 | 
					        breakDownTime = time;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void fix() {
 | 
				
			||||||
 | 
					        broken = false;
 | 
				
			||||||
 | 
					        inAccident = false;
 | 
				
			||||||
 | 
					        breakDownTime = null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Accident getCurrentAccident() {
 | 
				
			||||||
 | 
					        return currentAccident;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Date getBreakDownTime() {
 | 
				
			||||||
 | 
					        return breakDownTime;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,31 +1,14 @@
 | 
				
			|||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Sedan extends Vehicle implements Breakable {
 | 
					public class Sedan extends CivilVehicle {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final int TIME_TO_FIX = 15; //in minutes
 | 
					    private final int TIME_TO_FIX = 15; //in minutes
 | 
				
			||||||
    private boolean broken;
 | 
					 | 
				
			||||||
    private boolean accident;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Sedan(double vehicleSize){
 | 
					    public Sedan(double vehicleSize){
 | 
				
			||||||
        super(vehicleSize);
 | 
					        super(vehicleSize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public boolean isBroken(){ return broken; }
 | 
					 | 
				
			||||||
    public boolean isInAccident(){ return accident; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void collide(Breakable car, Date time) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void _break(Date time) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getTimeToFix(){ return TIME_TO_FIX; }
 | 
					    public int getTimeToFix(){ return TIME_TO_FIX; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void fix() { this.broken = false; this.accident = false; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user