忙しいのに、なんでこう、興味をそそられるエントリを上げるんだ!!(苦笑)
ネタもと→オブジェクト指向 01 定義
まず、「私」の立ち位置をはっきりさせないと。私が「実行ファイル」になっちゃったら、私こそ考えられるべきオブジェクトになっちゃうよ。
私はプログラム(n)の外にいて、全体を俯瞰しながらプログラム(v)しないと。その「プログラムする」という行為において、どのように考えるか。つまり、オブジェクトというものを重視した(oriented)プログラム(v)を行うのが「オブジェクト指向プログラミング」です。
No2のコメントでbiacさんが言われている LT 資料には、「oriented を「指向」と訳したのは誰だ」と書かれています。「oriented」は、上の段落では「~を重視する」と訳しました。その他、「(知的・情緒的に)方向づけられた,…志向の,…本位の,…を重視する;〔…に〕関心[興味]がある」という意味があります。この、「方向付けられた」が、「指向(ある一定の方向をめざして進むこと。また、その方向へ向かわせること。)」という訳に繋がったのですかね。おっと、「志向」の説明にはこうあります。「「指向」とも書かれるが、本来的な用法ではない。「指向」は単に物理的な方向をいう。」。うむ。「オブジェクト志向(意識や思考がある対象に向かうこと。)」が、本来の意味として正しいようです。
はてさて。それじゃ、「オブジェクト」って、なに?
.NET Framework の BCL には、Object クラスがあります。この Object クラスは、全てのクラスの派生元となっています。むっはー!object には、名詞の他に、動詞の意味もありますね。語源は、「~に向かって(ob)投げられた(ject)もの」「注意を喚起させるもの」なんだそうです。そして、「オブジェクト」(ジェにアクセント)という発音は、どちらかというと動詞。名詞の時は「アブジクト」(アにアクセント)のようです。動詞には「反対する。抗議する。異議を唱える。」という意味があります。名詞の場合は「もの。物体。目的。(コンピュータ上で処理の対象となる)ひとかたまりのデータ。」といった意味があります。
ちうもく~。「処理の対象となるひとかたまりのデータ」です。データの塊であれば、なんだって「オブジェクト」なのです。つまり、「オブジェクトとは何か?」ではなく、「何かをオブジェクトにする」のです。ということは、「1」という数値もオブジェクトですし、「文字」という文字列もオブジェクトです。そして、実行ファイル自身もオブジェクトであり、実行ファイルが動いているコンピュータもオブジェクトです。
さて、オブジェクトが定義できました。もう一度、「私の立ち位置」を検証します。「オブジェクト志向プログラミング」において、「私」は「実行ファイル」すなわち「プロセス」なのでしょうか?
私はこれに、「NO!」と答えます。
「オブジェクト志向プログラミング」です。「プログラミング」なのです。「program」は、それだけで名詞でありながら、「ing」がついています。ここでの「programing」は、「program」という動詞に接尾子「ing」が付けられて名詞になっているのです。つまり、動作を表しています。できあがったコードがオブジェクトを志向しているのではなく、プログラムを作るという行為がオブジェクトを志向するのです。
そうすると、オブジェクトを志向するのはプログラム、つまり実行ファイルではなく、プログラムを行っている開発者である、ということになります。
「私」が、オブジェクトを志向しながらプログラムを作るので、全てのものが「オブジェクト」となります。全てのものを「オブジェクト」として、プログラムの中に投影できます。したがって、「実行ファイル」もまた、「オブジェクト」です。
そうすると、お題「私が犬に鳴けといったら、犬がワンと鳴いた。」はどうなるか。私は、プログラムにおいて表現される(あるいは、アプリケーションに要求される)「犬」というオブジェクトを、クラスとして設計します。設計した犬を、コードに落とします。「犬のインスタンスを作る」ように、コードを書きます。出来た犬インスタンスに「鳴け」と命じることを、コード化します。結果、実行時に犬がワンと鳴きます。
「犬がワンと鳴く」のはオブジェクト志向プログラミングの結果であり、「犬にワンと鳴かせる」方法を、オブジェクトを念頭に置きながらプログラミングします。
クラス |
犬 |
クラスのインスタンス |
クラスを実体化させたものの一つ |
オブジェクト |
犬、犬クラスの実体 |
開発者 |
私 |
プログラム (実行ファイル) |
オブジェクトが存在するコンピュータ上の世界 私(あるいは顧客)の頭の中にある要求を実現したもの |
設計図書 |
私(あるいは顧客)の頭の中にある要求を、プログラム化できるように体系化したもの |
投稿日時 : 2008年12月18日 22:06