(load "send.scm") ; Enthält die Definitionen von no-method, get-method und send ;;; SIGNATUR ;;; make-point: number number -> point ;;; ERKLÄRUNG ;;; Konstruktorfunktion für Objekte der Klasse point. Die Argumente sind die ;;; x- und y-Koordinate des Punktes. ;;; Die Klasse kennt folgende Methoden: ;;; move: number number -> point ;;; (send p 'move dx dy) ändert die Koordinaten des Punktes um den ;;; Verschiebungsvektor (dx, dy) und liefert p zurück. Das Objekt p wird dabei ;;; verändert! ;;; x-of: -> number ;;; Liefert die x-Koordinate des Punktes zurück ;;; y-of: -> number ;;; Liefert die y-Koordinate des Punktes zurück ;;; DEFINITION (define make-point (lambda (x y) (lambda (message) (case message ((move) (lambda (this dx dy) (set! x (+ x dx)) (set! y (+ y dy)) this)) ((x-of) (lambda (this) x)) ((y-of) (lambda (this) y)) (else (make-no-method 'point message)))))) (define p (make-point 10 20)) (send p 'x-of ) (send p 'y-of ) (send p 'move 3 7) (send p 'x-of ) (send p 'y-of )