next up previous contents
Next: Objekt-spezifische Konfigurationen Up: Konfigurationsoptionen Previous: cset und cget

Vordefinierte Klassen

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)



Christoph Lueth
Wed May 29 14:12:28 MEST 2002