: プロトタイプとクローン
: オブジェクトベース言語
: オブジェクトベース言語
- もっとも簡単な形として、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日