next up previous contents
: クラスとメタクラス : Smalltalk : オブジェクト指向   目次

クラスベースとプロトタイプベース

オブジェクト指向言語にはクラスベースとプロトタイプベースの二種類がある。前者はクラスを定義し、それを元にインスタンスを生成するスタイルであり、後者は静的なクラスを持たず、新しいオブジェクトを既存のオブジェクトのクローンとして生成するスタイルである。クラスベースでは、インスタンスの仕様がクラスによって完全に決定するのに対し、プロトタイプベースでは、インスタンスオブジェクトが変数の数もメソッドも自分自身で管理することができる。なお、継承は特殊なスロットと呼ばれる、他フレームの参照やメソッドの格納に用いる引き出しのようなものに、別のフレームを参照することで行われる。

Smalltalkはクラスベースのオブジェクト指向言語であるが、Squeakで採用されているGUI構築フレームであるMorphicの特にeToysで扱うオブジェクトには、実装上プロトタイプベース的性格が要求される。即ちモーフに好きなスクリプトを組み込むなどの機能が必要となるため、SqueakのGUIは特殊な実装を行っている。これについては8章で述べる[5]。



Deguchi Lab. 平成20年3月5日