Object | Attributes | Operations |
Pump |
Fuel dispensed Price Hose status Trigger status Fuel type |
Activate Deactivate Deliver fuel Get fuel type Set fuel type Set maximum Get hose status Get trigger status |
Card reader |
Card number Card type Credit limit |
Read card Print receipt |
Fuel tank | Current fuel level |
Add fuel Remove fuel |
Communication system |
Number dialled Credit limit Card status |
Send card number Return card status |
System controller |
Card number Card type Max delivery Price table Fuel delivered |
|
Price table | Fuel prices |
Lookup Amend price |
The basic sequence of actions in the system controller is:
creditLimit = CardReader.readCard(cardNumber, cardType); cardStatus = CommunicationsSystem.checkStatus(cardType, creditLimit); // Actions taken when invalid card are not shown if (cardStatus == OK) { price = PriceTable.lookup(Pump.getFuelType()); maxDelivery = creditLimit / price; Pump.setMaximum ( maxDelivery ); while hose not removed or trigger off wait; Pump.activate(); while trigger on and maxDelivery not reached fuelDelivered = Pump.deliverFuel(); // Assume trigger goes off when car's tank is full. Pump.deactivate(); FuelTank.remove(fuelDelivered); CardReader.printReceipt(fuelDelivered * price); }