Saab95.java
/**
* Utfärdat av Durim Miziraj
* Kontakt: gusmizdu@student.gu.se
*/
package lab3;
import lab3.interfaces.Car;
import lab3.interfaces.TurboChargable;
import java.awt.geom.Point2D;
import static java.awt.Color.RED;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import static org.apache.commons.lang3.builder.ToStringStyle.MULTI_LINE_STYLE;
public final class Saab95 extends Vehicle implements Car, TurboChargable{
private boolean turboOn;
public Saab95() {
super(
/* Number of doors */ 2,
/* Engine power */ 125.0d,
/* Vehicle Color */ RED,
/* Vehicle model */ "Saab95",
/* Point */ new Point2D.Double(0.0d, 0.0d)
);
turboOn = false;
}
public void setTurbo(final boolean state) { turboOn = state; }
private double speedFactor() {
return getEnginePower() * 0.01d * (turboOn ? 1.3d : 1.0d);
}
@Override
protected double increasedSpeedFactor(final double speedIncrease) {
return getCurrentSpeed() + speedFactor() * speedIncrease;
}
@Override
protected double decreasedSpeedFactor(final double speedDecrease) {
return getCurrentSpeed() - speedFactor() * speedDecrease;
}
@Override
public String toString() {
return ReflectionToStringBuilder.toString(this, MULTI_LINE_STYLE);
}
}