: オブジェクト指向言語のモデル化
: オブジェクトベース言語
: 特色(Trait):プロトタイプからクラスへの逆戻り?
- 多くのオブジェクトベース言語は、動的 delegation のような、動的な
特徴に依存している。静的タイプシステムでは(fully) 扱うことができない。
- 型なし手続き型言語では、このような極端な適応性は、適当な型システムを追
加することにより修復することができる。
- 2, 3 の型付きプロトタイプベース言語が、現在では注目されている。
- Cecil と Omega のようなプロトタイプベース言語での型付けは、動的な
特徴を極端に制限している。それらの型づけとクラスベース言語で使われたそ
れとの違いはあまりない。それゆえ、クラスベース言語でのタイプの議論(2 章
と 3 章) の多くは、静的に型付けされたオブジェクトベース言語に
適応する。
- しかし、独特な型づけ問題も残る。第一に(制限なしの動的継承とは反
対の)モードスイッチはむしろ簡単に型づけすることができる8。
- 第二に、オブジェクトベース言語のためのメソッド specialization
と Self タイプは考察が必要である。
- 節 2.7 と 2.8 では、クラスベース言語において、どのように メソッド
specialization と covariant Self を扱うかを議論した。
contravariant Self はより問題がある。節 3.5 では subsumption を
あきらめて、再帰型を protocols として定義しなければならなかった。
- 動的継承を持ったオブジェクトベース言語では covariant Self
も議論する必要がある(メソッドが update されるかもしれない)。
結果タイプ Self を持った updating メソッドを
許すことができることに驚くかもしれない。Contravariant Self は、
protocol メカニズムを用いて扱わなければならない。
- これらの問題は、Part II と III で広く議論する。
平成12年8月22日