[513] Re:マルチプルインスタンス
投稿者:kei
2007/02/20 02:13:25
前橋さんが紹介してくださった、まつもとひろゆきさんの日記の「アイデンティティ」という言葉を眺めていて、自分の中で少し整理ができてきました。
>int main()
>{
> int i = 0, j = 0;
> return 0;
>}
>
>これはオブジェクト指向か? ってことになるです(それ以前に全く意味のないプログラムであることに突っ込んじゃダメ)。
>int 型のマルチプルインスタンスを実現しているし、i と j は識別可能です。
>マルチプルインスタンス「だけ」では、オブジェクト指向とは思えないのですが…
>静的だろうが動的だろうが「データ」があって、そのデータの「責務」が明確になっているとき、それはオブジェクト指向、ではないのかな。
おそらく、重要なのは
(1) データ構造や振る舞いを、特定の名前に紐付けて定義できる
(2) 定義したオブジェクトを、複数生成できる
(3) 生成されたインスタンスは、それぞれが個別の状態を持つ
(4) それぞれのインスタンスの違いが、識別可能である
ということだと思うんです。
いわゆる手続き型言語でも、(1)はそれほど難しい話ではないでしょう。
そしてそれが、CESさんのおっしゃる「責務の明確化」なんだと思います。最初に774RRさんがおっしゃっていた、「自分にできることを自分自身が知っている」というのも(1)でしょう。
でもその責務を持った単位が、
・ 複数生成できて、それぞれが状態を持ち、かつそれぞれが識別可能(つまり、(2)と(3)と(4))
ということでなければ、それは、「オブジェクト」とは言えないのではないでしょうか。
で、いわゆる手続き型言語では、それらを実装するのが容易ではない、ということなんだと思います。