44 lines
1.1 KiB
Plaintext
44 lines
1.1 KiB
Plaintext
use Vehicle.Car;
|
|
use Vehicle.Engine;
|
|
|
|
Car/Equinox -> hasEngine {
|
|
String model;
|
|
Integer year;
|
|
Decimal fuelEfficiency;
|
|
Boolean isRunning;
|
|
Decimal fuelLevel;
|
|
Decimal mileage;
|
|
|
|
fn on_create(String model, Integer year) -> [Null] {
|
|
my.model.set(model);
|
|
my.year.set(year);
|
|
my.fuelEfficiency.set(28.5);
|
|
my.isRunning.set(False);
|
|
my.fuelLevel.set(100.0);
|
|
my.mileage.set(0.0);
|
|
rtn Null;
|
|
}
|
|
|
|
fn startEngine() -> [Boolean] {
|
|
Boolean engineStatus.set(Boolean.and(my.isRunning.not(True), my.fuelLevel.gt(0.0)));
|
|
my.isRunning.set(engineStatus);
|
|
rtn engineStatus;
|
|
}
|
|
|
|
fn calculateFuelConsumption(Decimal distance) -> [Decimal] {
|
|
Decimal consumption.set(distance.divide(my.fuelEfficiency));
|
|
rtn consumption;
|
|
}
|
|
|
|
fn checkMaintenance() -> [Boolean] {
|
|
Boolean needsMaintenance.set(my.mileage.gte(50000.0));
|
|
rtn needsMaintenance;
|
|
}
|
|
|
|
+fn drive(Decimal miles) -> [Null] {
|
|
my.mileage.add(miles);
|
|
my.fuelLevel.subtract(my.calculateFuelConsumption(miles));
|
|
rtn Null;
|
|
}
|
|
}
|