ConditionallyMovableVehicle.java
/**
* Utfärdat av Durim Miziraj
* Kontakt: gusmizdu@student.gu.se
*/
package lab2;
import java.awt.Color;
abstract class ConditionallyMovableVehicle extends Vehicle {
public ConditionallyMovableVehicle (
int nrDoors,
double enginePower,
Color color,
String modelName,
double x,
double y
) {
super(nrDoors, enginePower, color, modelName, x, y);
}
protected abstract boolean canMove();
@Override
public void move() { if (canMove()) super.move(); }
@Override
public void gas(double speedIncrease) {
if (canMove()) super.gas(speedIncrease);
}
protected abstract double speedFactor();
@Override
protected double increaseSpeedFactor(double increase) {
return getCurrentSpeed() + speedFactor() * increase;
}
@Override
protected double decreaseSpeedFactor(double decrease) {
return getCurrentSpeed() - speedFactor() * decrease;
}
}