| 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);
}