(load "ub9-5a.scm") ;;; SIGNATUR ;;; make-colored-point: number number color -> colored-point ;;; ERKLÄRUNG ;;; Konstruktorfunktion für Objekte der Klasse colored-point, die eine ;;; Unterklasse von point ist. Die Argumente sind die x- und y-Koordinate ;;; sowie die Farbe des Punktes. ;;; Zusätzlich zu den Methoden von point kennt diese Klasse folgende Methoden: ;;; update-color: color -> colored-point ;;; (send p 'update-color c) ändert die Farbe von p zu c und liefert p zurück. ;;; Das Objekt p wird dabei verändert! ;;; color-of: -> color ;;; Liefert die Farbe des Punktes zurück. ;;; DEFINITION (define make-colored-point (lambda (x y color) (let ((super (make-point x y))) (lambda (message) (case message ((update-color) (lambda (this c) (set! color c) this)) ((color-of) (lambda (this) color)) (else (get-method super message))))))) (define p (make-colored-point 10 20 (make-rgb 1 0 0))) (send p 'x-of ) (send p 'y-of ) (let ((c (send p 'color-of))) (list (rgb-red c) (rgb-green c) (rgb-blue c))) (send p 'move 3 7) (send p 'x-of ) (send p 'y-of ) (send p 'update-color (make-rgb 0 1 0)) (let ((c (send p 'color-of))) (list (rgb-red c) (rgb-green c) (rgb-blue c)))