>これは、オブジェクト指向とは言わないのではないでしょうか?
>あえて言うなら、オブジェクト指向の特徴の一つである『データ抽象化』でしか
>ないと思います。オブジェクト指向というには、『継承』の概念が実装されている
>必要もあると思います。
まあそうなのかもしれませんけど、「どこまでやってるとオブジェクト指向であるか」といった用語の定義的な議論は、既にずいぶん曖昧な定義で使われている「オブジェクト指向」という言葉については、不毛だと思います。
前にもあげたページだと思いますが
http://www.shiro.dreamhost.com/scheme/trans/reesoo-j.html
| オブジェクト指向というものが動く標的であるため、オブジェクト指向の熱心な
| 支持者はこのメニューのうちの適当なサブセットを気まぐれに選んで、それを以って
| 他の言語はオブジェクト指向ではないと説得しようとする。
私も以下のように書きました。
http://kmaebashi.com/programmer/object/intro.html
| ※2 「それは抽象データ型だ」という意見もあるかもしれませんが、抽象データ型は
| オブジェクト指向に至るためには必須の概念です。
Matzにっきより。
http://www.rubyist.net/~matz/20030729.html#p01
|「オブジェクト指向」のもっとも重要な概念は通常のプログラミングにも登場して
| いる。たとえば、Cで
| FILE *f = fopen(path, "r");
| という呼び出しは「pathにあるファイルをオープンして、ファイルオブジェクトを
| 得る」という処理そのものだ。別にオブジェクト指向は必要ない。CのFILE*には
| fprintf()やfclose()などのいくつかの「メソッド」がある。
>(ただし、Xtも単なる抽象データ型だったかも。継承を実装していたか記憶が
> 定かではありません。
継承は実現していましたね。たとえばMotifのRowColumnはManagerのサブクラスです。
# んで、JavaのレイアウトマネージャがComponentクラス階層の中になく、
# プラグイン的に突っ込むようになっているのを見て衝撃を受けましたとも。