オブジェクト指向語彙分類

オブジェクト指向関係の言葉を整理しておきます。

クラスは、データ構造をメソッドを定める抽象的な分類概念(変数型に似ている)ですが、それに属する具体的エンティティーは、オブジェクトという場合と、インスタンスという場合があります。特にクラスで決められた構造の具体化であるという趣旨が強い文脈ではインスタンスと呼び,普通はオブジェクトと呼ぶことにします。Mopsマニュアルでは、クラスとオブジェクトで通しているようです。

オブジェクトの実体は、一般にはもっと小さいデータオブジェクトの集まりです。ひとつのオブジェクトの構成部分となっているオブジェクトはインスタンス変数といいます。IVARと略されます。

オブジェクトに対して、適当な働きを要求するのがメッセージです。メッセージは、入力としてのパラメタとメソッドを特定するためのセレクタから成り立っています。これに対応して、実際に行われる処理がメソッドです。パラメタはメソッドへの入力となるわけです。セレクタとしては、メソッド名が使われます。メソッド名(つまりセレクタも)は、コロン":"で終わっている必要があります。
メッセージ=パラメタ+セレクタ

セレクタ=メソッド名   ---   :で終わらなければならない

オブジェクトに対するメッセージを特定のメソッドと結びつけて、オブジェクトの"属性"であるデータに関連づけたりすることを、バインド(束縛、結合)といいます。コードを読み込んだときに既にそれを実施してしまうやり方は静的束縛、実際にコードが実行されるときになってからそれを実施するやり方は動的束縛といいます。

Mopsでは、動的束縛を利用するには、メッセージの送付をそのような構文で書けば十分で、"バーチャル"などのような特別なダミーを用意する必要はありません。別々のクラスのオブジェクトに同じメッセージを送り、クラスに応じて具体的な処理内容を違えることができることを多態性(Polymorphism)をもつといいます。Mopsでは、パラメタと戻り値(出力)の性質を合わせた同じ名前のメソッドを別々のクラスに定義し、動的束縛を行うだけで実現できます。

Mopsにはクラスメソッドという観念はありません。ですから、オブジェクトの特定なしに、クラス自体にメッセージを送ることは通常考える必要はありません。

オブジェクトが生成されるときに、その属性としてのデータの値を初期化する関数はコンストラクタと呼ばれ、特別視されます。MopsではCLASSINIT:というメソッドを書くことによってそれが実装されます。このメソッドはオブジェクトの生成時に自動的に送られます。

他にもありますが、それらはもっと後述べます。


関連項目:






最終更新:2019年03月11日 18:03