Smalltalk-80のMOP
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/06 12:23 UTC 版)
「メタクラス」の記事における「Smalltalk-80のMOP」の解説
Smalltalkのメタオブジェクトプロトコルは(右図参照)(A)継承ルーツ(図左側の4×2ブロック)と、(B)インスタンス化ルーツの(図右側の縦5ライン)に分けて解釈できる。 (A)では、Object classが、Objectの子孫クラスClassを継承して関係ループしている(上位型がその下位型の値を継承している)。これはLambda-P=依存型に相当し、即ちSmalltalkのMOPは述語論理に準拠している。従ってそこでの継承は必要条件と十分条件の関係で、インスタンス化は存在記号と全称記号の関係で考えると分かりやすくなる。 (B)では、MetaclassとMetaclass classのインスタンス化関係がループしている。また、MetaclassはObjectの子孫クラスClassDescriptionを継承している。 Objectはあらゆるユーザー定義クラスのスーパークラスになり、Metaclassはあらゆるユーザー定義クラスのメタクラスになる。そこまでの継承関係を下に示す。 Object - 全オブジェクト共通のデフォルト振る舞いの情報 Behavior - コンパイル済みメソッドとオブジェクトの生成/実行の情報、オブジェクト分化の最低限 ClassDescription - ClassとMetaclassから見た抽象クラス。クラス変数の名前とコメントの情報Class - Objectの大元スーパークラス性質はここから Metaclass - クラス変数の初期化、インスタンス生成メッセージの情報
※この「Smalltalk-80のMOP」の解説は、「メタクラス」の解説の一部です。
「Smalltalk-80のMOP」を含む「メタクラス」の記事については、「メタクラス」の概要を参照ください。
- Smalltalk-80のMOPのページへのリンク