Example: Object


(defclass ship ()
   ((latitude    :type real)
    (longitude   :type real)
    (x-velocity  :type real)
    (y-velocity  :type real)) )

(defmethod speed ((s ship))
  (with-slots (s)
    (sqrt (+ (expt x-velocity 2)
             (expt y-velocity 2))) ))

(defmethod speedup ((s ship))
  (with-slots (s)
     (setf x-velocity (* x-velocity 2))
     (setf y-velocity (* y-velocity 2))
     s ))

In this example, a method speedup is defined; with frames, this was not possible because speedup is not associated with a slot. The frame example showed range restrictions on the values of latitude and longitude; the object representation doesn't handle this.

Contents    Page-10    Prev    Next    Page+10    Index