next up previous
Next: 16 探索プログラム例 Up: ソフトウェア第三 講義資料 クロージャ,スコープ,遅延評価,オブジェクト,立体モデル Previous: 15 Euslispのオブジェクト指向

プログラミング例題

  1. create-universe1,create-universe2を走らせてみよ.
  2. create-universe2のcrashedしているかどうかはどのように判定してい るか.また,クラッシュした後のパーティクルの運動を考慮して状態を変更す るようにメソッドを再定義せよ.
  3. 以下の問いに応えよ.
    
    (defun demo1 nil
      (defclass test0 :slots (a b c))
      (defmethod test0
        (:init () (setq a 1 b 2 c 3) self)
        (:a () a)
        (:set-a (v) (setq a v))
        (:b () b)
        (:set-b (v) (setq b v))
        (:c () c)
        (:set-c (v) (setq c v))
        )
      (setq t0 (instance test0 :init))
      (defclass test1 :super test0 :slots (d))
      (defmethod test1
        (:set-d (v) (setq d v))
        (:d () d))
      (setq t1 (instance test1 :init))
      (defclass test2 :super test1 :slots (e))
      (defmethod test2
        (:init () (setq a 1 b 4 c 9 d 4) self)
        (:set-a (v) (setq a (* v v)))
        (:d () (* d d)))
      (setq t2 (instance test2 :init))
      )
    
    という定義を行ない,(demo1)を実行した. 以下の各答えが何になるかそれぞれ答えよ.
    
    <cl> (send t0 :c) 答え(1)
    
    <cl> (send t1 :c) 答え(2)
    
    <cl> (send t2 :c) 答え(3)
    
    <cl> (send t1 :d) 答え(4)
    
    <cl> (send t2 :d) 答え(5)
    
    <cl> (send t1 :set-d 5)  答え(6)
    
    <cl> (send t1 :d)        答え(7)
    
    <cl> (send t2 :set-d 6)  答え(8)
    
    <cl> (send t2 :d)        答え(9)
    
    <cl> (send t1 :set-a 10) 答え(10)
    
    <cl> (send t2 :set-a 10) 答え(11)
    
    <cl> (send t1 :a)        答え(12)
    
    <cl> (send t2 :a)        答え(13)
    
    <cl> (send t0 :a)        答え(14)
    
    <cl> (send t0 :d)        答え(15)
    


generated through LaTeX2HTML. M.Inaba 平成18年5月7日