Man kann das mit dem Motor auch anders darstellen
Delphi-Quellcode:
IBetriebsstoffQuelle = interface
function GetBetriebsstoffArt : Integer;
procedure Entnehme( AMenge : Single );
end;
IMotor = interface
procedure Tanken( AQuelle : IBetriebsstoffQuelle );
end;
Jetzt kann der Motor prüfen, ob die Quelle den richtigen Betriebsstoff liefert und sich die benötigte Menge entnehmen.
Kaum macht man's richtig - schon funktioniert's

Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)