Für Konfigurationsoptionen, die für mehrere Objekte benutzt werden,
gibt es im Modul Configuration vordefinierte Klassen. Dies
ermöglicht u.a. eine einheitliche Namensgebung und die mehrfache
Verwendung einmal implementierter Methoden. Manchmal ist es aber auch
sinnvoll trotz unterschiedlicher Tcl-Syntax die Methoden einer solchen
Klasse zu überschreiben, um zumindest auf HTk-Seite eine einheitliche
(möglicherweise sinnvollere) Namensgebung zu erreichen.
Ein Beispiel (die Klasse HasSize, deren Instanz fast alle
Oberflächenobjekte sind):
class GUIObject w => HasSize w where width :: Distance -> Config w -- Breite setzen getWidth :: w -> IO Distance -- Breite abfragen height :: Distance -> Config w -- Höhe setzen getHeight :: w -> IO Distance -- Höhe abfragen size :: Size -> Config w -- Breite und Höhe setzen getSize :: w -> IO Size -- Breite und Höhe abfragen -- Implementierung der Klassenmethoden width s w = cset w "width" s getWidth w = cget w "width" height s w = cset w "height" s getHeight w = cget w "height" size (x,y) w = width x w >> height y w getSize w = getWidth w >>= \ x -> getHeight w >>= \ y -> return (x,y)