Next: 11.4 Generic Function
Up: 11 データ指向型プログラミング
Previous: 11.2 クロージャによるオブジェクトと手続きの一体化
上のaccは,データと手続きを保存している構造をもっているオブジェクトの例に
なる.このオブジェクトに対して,メッセージを送るとそのメッセージに対応
する手続きを返すget-methodと,そのメッセージに対応する手続きを実行する
sendを定義すれば,
(defun get-method (object message)
(funcall object message))
(defun send (object message &rest args)
(apply (get-method object message) args))
のようになり,
> (send acc 'balance)
10.0
> (send acc 'withdraw 3)
7.0
> (send acc 'deposit 5)
12.0
> (send acc 'balance)
12.0
という具合に,
オブジェクトへメッセージを送るという形の使い方が可能となる.
generated through LaTeX2HTML. M.Inaba 平成18年5月7日