: プロトタイプとクローン
: オブジェクトベース言語
: オブジェクトベース言語
- Emerald や簡単なクロージャベース言語のようなもっとも簡単な形で
は、オブジェクトの概念と動的 dispach を提供するのみである。
型づけをする際には、オブジェクトタイプ、サブタイプ、subsumption を提供
する。
- オブジェクトベース言語の基本的な特徴は、クラスがなく、各オブジェクト
を生成する construct が存在することである。
- 以下のように定義する。
ObjectType Cell is
var contents: Integer;
method get(): Integer;
method set(n: Integer);
end;
object cell: Cell is
var contents: Integer:=0;
method get(): Integer is
return self .contents end;
method set(n:Integer) is
self .contents:=n end;
end;
この object の定義により、タイプ
と名前
の単一オブジェクト
が生成される。
- クラスがなくても「手続き」により、同じ形のオブジェクト集合を
生成することができる(呼び出された時はいつでも新しいオブジェクトを返す)。
そのような手続きは引数を持ち、フィールドを初期化する。
procedure newCell(m: Integer):Cell is
object cell:Cell is
var contents: Integer:=m;
method get():Integer is
return self .contents end;
method set(n:Integer) is
self .contents:=n end;
return cell;
end;
var cellInstance: Cell:=newCell(0);
そのような生成手続きは、不思議と Simula のクラスに似ている(パラメータと
実行本体を持つ)。 newの役割は手続き呼び出しで実行される。
平成12年8月22日