Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package serie08;
- import java.util.Observable;
- import util.Contract;
- public class StdSpeedometerModel extends Observable implements SpeedometerModel {
- // ATTRIBUTS
- private double step;
- private double maxSpeed;
- private double speed;
- private SpeedUnit unit;
- private boolean isOn;
- // CONSTRUCTEURS
- public StdSpeedometerModel(double step, double max) {
- Contract.checkCondition(1 <= step, "step is too small");
- Contract.checkCondition(step <= max, "step is too big");
- maxSpeed = max;
- this.step = step;
- isOn = false;
- unit = SpeedUnit.KMH;
- speed = 0.0;
- }
- // REQUETES
- @Override
- public double getMaxSpeed() {
- return maxSpeed * unit.getUnitPerKm();
- }
- @Override
- public double getSpeed() {
- return speed * unit.getUnitPerKm();
- }
- @Override
- public double getStep() {
- return step * unit.getUnitPerKm();
- }
- @Override
- public SpeedUnit getUnit() {
- return unit;
- }
- @Override
- public boolean isOn() {
- return isOn ;
- }
- // COMMANDES
- @Override
- public void setUnit(SpeedUnit unit) {
- Contract.checkCondition(unit != null, "null unit");
- this.unit = unit;
- }
- @Override
- public void slowDown() {
- Contract.checkCondition(isOn, "contact is off");
- if(speed < step) {
- speed = 0;
- }
- else {
- speed -= step;
- }
- }
- @Override
- public void speedUp() {
- Contract.checkCondition(isOn, "contact is off");
- if((speed + step ) > maxSpeed) {
- speed = maxSpeed;
- }
- else {
- speed += step;
- }
- }
- @Override
- public void turnOff() {
- Contract.checkCondition(isOn, "contact is already off");
- isOn = false;
- speed = 0;
- }
- @Override
- public void turnOn() {
- Contract.checkCondition(!isOn, "contact is already on");
- isOn = true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement