Volvo240.java

/*
 *  Utfärdat av Durim Miziraj
 *  Kontakt: gusmizdu@student.gu.se
 */

package lab3;

import static java.awt.Color.BLACK;

import lab3.interfaces.Car;

import java.awt.geom.Point2D;

import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import static org.apache.commons.lang3.builder.ToStringStyle.MULTI_LINE_STYLE;


public final class Volvo240 extends Vehicle implements Car{

	private static final double TRIM_FACTOR = 1.25d;

	public Volvo240() {
		super(
      /* Number of doors */ 4,
      /* Engine power    */ 100.0d,
      /* Vehicle color   */ BLACK,
      /* vehicle model   */ "Volvo240",
      /* Point           */ new Point2D.Double(0.0d, 0.0d)
     );
	}

	private double speedFactor() {
		return getEnginePower() * 0.01d * TRIM_FACTOR;
	}

  @Override
	protected double increasedSpeedFactor(final double speedIncrease) {
    return Math.min(getCurrentSpeed() + speedFactor() * speedIncrease, getEnginePower());
	}

	@Override
	protected double decreasedSpeedFactor(final double speedDecrease) {
    return Math.max(getCurrentSpeed() - speedFactor() * speedDecrease, 0.0d);
	}

  @Override
  public String toString() {
    return ReflectionToStringBuilder.toString(this, MULTI_LINE_STYLE);
  }
}