2008年2月2日土曜日

2 Elements of CLOS Programs


  • 前説

    • CLOSの構成要素は、classes、instances、generic functions と methodsであり、これらが密接に関係している。

  • 2.1 CLASSES AND INSTANCES

    • CLOSプログラミングはclassの定義からはじまる。
    • a class は a COMMON LISP typeである。そのclassのオブジェクトをinstanceという。
    • CLOSのinstanceのアイデンティティの考え方は、そもそものLisp objectsのそれと合致している。

  • 2.2 SLOTS

    • classの構造はslotsで表現される。slotsはaccessorでread/writeされる。
    • slotsには、local slots と shared slots がある。

  • 2.3 SUPERCLASS

    • classからclassを作る。元のclass(component class)をsuperclassという。できたclassは、structureとbehaiviorを継承する。
    • superclassの対義語はsubclass。
    • superclass、subclassの関係は数珠繋ぎにできる。直近のsuperclassをdirect superclassという。

  • 2.4 GENERIC FUNCTIONS

    • instanceを操作するときは、generic functionsを用いる。
    • generic functionsは、利用者からみると、通常のCL関数と同じようである。
    • generic functionsがインターフェイスを定め、実装はmethodsでやる。この点が通常のCL関数と異なる。
    • どのmedthodを呼ぶかを判断する機構は、generic dispatchと呼ばれる。

  • 2.5 METHODS

    • 前章とおなじ。

  • 2.6 METHOD ROLES

    • メソッドにはrolesがある。
    • メソッドには、primary methodsとauxilaly methodsがある。
    • auxilaly methodsには、before-methodsとafter-methodsとaround methodsがある。
    • primary methodsが主たる機能を担う。
    • auxilaly medhodsは副作用を担うことが多い。
    • methodsは継承される。
    • 継承と、primary,auxilalyの兼ね合いとが、methods間の作業分担を形成する。

  • 2.7 THE CONTROLLER OF INHERITANCE

    • 2つのsuper classes が競合する特徴をもっていた場合、inheritanceはどうなるか?
    • a class precedence list に従って、precedenceが決まり、それがinheritanceを決める。
    • a class precedence list は、class定義のあり様によってきまる。
    • more specific なら more prior。

  • 2.8 SUMMARY OF THE CLOS MODEL

    • 特になし。

  • 2.9 HOW CLOS EXTENDS COMMON LISP

    • defstructとCLOSの比較。
    • 良好な接続。classesはtypesと同じように扱える。
    • CLOSの方が柔軟。

0 件のコメント: