「オブジェクト指向プログラミング」の版間の差分
削除された内容 追加された内容
→メタクラス: クラスベース継承において、(インスタンスとしての)クラスもまたオブジェクトとして扱おうとした時、クラスの属するクラス(=メタクラス)が仮定されます。 では、メタクラスの属するクラスは?・・・メタクラス自身もメタクラスのインスタンスです。 ここで「有向無サイクルグラフ」の仮定が壊れます。 メタクラスの位置づけは言語によって様々で、初期のSmalltalk(Smalltalk-76)では、Classという単一のクラスがメタクラスでしたが、Smalltalk(Smalltalk-80)では、すべてのクラスに独自のメタクラスがあり、それぞれのメタクラスは単一のMetaclass classのインスタンスです(メタのメタのメタ…の無限の連鎖は避けている)。少し想像すると判るように、メタクラスの操作は概念上のシフトが必要で、微妙で煩雑なものとなりがちです(パラドクスと言ってもいい)。 このような複雑さを解決するために、「クラスなんてなかった、インスタンスはインスタンスの複製によって生成して、複製を新たに修飾し目的を達成する」というアプローチが生まれました。 タグ: 2017年版ソースエディター |
MathXplore (トーク | 投稿記録) M added Category:プログラミング using HotCat |
||
169 行
== 脚註 ==
<references />
[[カテゴリ:プログラミング]]
|