Ich würde Daten
transport und Daten
aufbereitung strikt voreinander trennen.
Das bedeutet dass es eine Klasse für GPIB gibt die rein nur für den Datentransport zuständig ist
und eine weitere (Basis-)Klasse TMessGeraet die für die Aufbereitung der Daten verantwortlich ist.
Dabei
benützt die Klasse TMessGeraet ihren Kollegen TGPIB. (
Assoziation).
Es liegt also weder eine Vererbung vor noch benötigt man ein Interface.
Man könnte sogar eine weitere Klasse für das Datenprotokoll einsetzen falls ein einheitliches Protokoll wie CS-80 (Command Set 80) benützt wird.
Man kann diesen Ansatz mit folgender Kette vergleichen:
Code:
TDatabase <- TQuery <- TDBEdit
TDatabase sorgt für den Datentransport
TQuery entspricht praktisch dem Protokoll auf Datenbankebene und
TDBEdit repräsentiert die Daten auf Anwendungsebene.
Jede Klasse dient nur
einem bestimmten Zweck wobei die Klassen miteinander kollaborieren und in einer "benützt"-Beziehung stehen.
Wichtig ist noch die Pfeilrichtung der Abhängigkeiten zu beachten.
Die Klasse TGPIB darf die Klasse TMessGeraet nicht kennen; umgekehrt kennt und benützt aber TMessgeraet die Klasse TGPIB.