(load "ub9-5-0.scm") (load "ub9-5b.scm") ;;; SIGNATUR ;;; make-new-colored-point: number number color -> colored-point ;;; ERKLÄRUNG ;;; Konstruktorfunktion für Objekte der Klasse new-colored-point, die eine ;;; Unterklasse von colored-point ist. Die Argumente sind die x- und ;;; y-Koordinate sowie die Farbe des Punktes. ;;; Die Methode move von colored-point wird überschrieben durch ;;; move: number number -> new-colored-point ;;; (send p 'move dx dy) ändert die Koordinaten des Punktes um den ;;; Verschiebungsvektor (dx, dy) und invertiert die Farbe von p. Rückgabewert ;;; ist das Objekt p, das durch den Aufruf von p verändert wird. ;;; DEFINITION (define make-new-colored-point (lambda (x y color) (let ((super (make-colored-point x y color))) (lambda (message) (case message ((move) (lambda (this dx dy) (send super 'move dx dy) (send this 'update-color (invert-color (send super 'color-of))) this)) (else (get-method super message))))))) (define p (make-new-colored-point 10 20 (make-rgb 1 0 0))) (send p 'move 3 7) (send p 'x-of ) (send p 'y-of ) (let ((c (send p 'color-of))) (list (rgb-red c) (rgb-green c) (rgb-blue c)))