- - PR -
プログラムは,オブジェクトになりますでしょうか?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-07-21 01:09
オブジェクトという言葉の定義について
質問がございます. プログラムは,オブジェクトになりますでしょうか? 個人的な意見としては,オブジェクトになる気がします. 理由は, プログラムというモノ(オブジェクト)に何らかの指示を与えれば、 プログラムは共通の振舞いをするからです. つまり,プログラム自体,内部でデータを持っていて, プログラムを動かすという指示を外部から与えれば, プログラムの内部の挙動や操作を意識することなく, 使うことができるから と考えたからです.いかがでしょうか? プログラムをオブジェクトの例にあげるのは あまりよくないでしょうか? | ||||
|
投稿日時: 2006-07-21 07:20
バーチャル感がぬぐえませんが、へたにテレビや哺乳類を例にするよりはずっといいかもしれない。 でも、継承が難しいかも。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||
|
投稿日時: 2006-07-21 09:00
プログラムというのが何を指すのかがよくわかりませんが、手続き(procedure)などを表すのなら、デザインパターンのコマンドパターンはまさに手続き自体をオブジェクトとみなしたものといえるでしょう。
また、オブジェクト指向にはADT(抽象データ型)由来の部分(C++)と、仮想的な分散環境(オブジェクト=仮想的な小さなコンピュータ)を目指した部分(Smalltalk)があります。 ADTとしてはデータを核としないオブジェクトは違和感があるでしょうが、仮想的な分散環境を目指した部分としてはプログラム自体をオブジェクトとしてもおかしくは無いでしょう。 ですから、特にデザインというフェーズでは、プログラム自体をオブジェクトとしても、おかしくはないと思います。 前提となっている条件や、プログラム自体を抽象化したオブジェクトにどのような責務を持たせるのかよくわからないので、はっきりとは言えませんが。 | ||||
|
投稿日時: 2006-07-21 09:27
↑ちょっと観点がずれてますね。(^^; すみません。
プログラム自体をオブジェクトの例に挙げるのは雑学としては問題ないでしょうが、新人プログラマに教える時の例としてはまずいかもしれません。 「データとそれを扱う処理」がオブジェクトのはずですが、プログラムという言葉の印象が「処理」に偏重するからです。 処理に偏重した「プログラムオブジェクト」と、データに偏重した「データベースオブジェクト」を作られては、データと処理が分離した、オブジェクト指向からかけ離れたプログラムになるでしょう。 逆に、例えば「ワープロ文書ファイル」をオブジェクトにしたほうが良いかも。 この場合、「ワープロプログラム」がクラスになってくれるでしょう。 この線で説明できそうなことを挙げてみます。 ・オブジェクトが複数あっても、クラスは一つでよい ・クラスの役割の一つは、オブジェクトを作り出すこと ・隠蔽(バイナリファイルは触りにくいでしょうし、おかしくなり易いですよね) ・(発展的にリフレクションやメタを扱うなら)クラスもオブジェクトになりうる事。(ワープロプログラムファイルもファイルですよね) ・オブジェクトのリンクと、クラスの関連 ・ちょっと苦しくなりますが、「印刷する」というメソッドで、多態すること。(全てのファイルが印刷できるわけでもないことから、全てのクラスのオブジェクトが同じメッセージを受け取るわけでもないこと) | ||||
|
投稿日時: 2006-07-21 12:29
プログラムをオブジェクトとして見るのはありだと思いますが
Elleさんのおっしゃられているような <quote> 前提となっている条件や、プログラム自体を抽象化したオブジェクトにどのような責務を持たせるのかよくわからないので、はっきりとは言えませんが。 </quote> ここが同意です。 ちなみにオブジェクトの説明をするとき私が良く使うのは「車」です。 [プログラム]をオブジェクトとして捕らえるとき まず、[プログラム]ってなーに? というところから入ってしまうと思います。 [プログラム]とう単語はちょっと抽象的過ぎて 扱いづらいと思います。 <quote> つまり,プログラム自体,内部でデータを持っていて, プログラムを動かすという指示を外部から与えれば, プログラムの内部の挙動や操作を意識することなく, 使うことができるから </quote> を引用するならば [プログラム]というオブジェクトは [プログラム]を継承したクラスがデータや挙動を持つような まさに抽象クラスとなる位置づけと見えそうです。 |
1