このブログは、ケイエックス パソコン教室のブログです。

lundi, septembre 17, 2012

オブジェクト指向とは

普通にプログラミングする手法ですけど。(笑)
Javaが流行りだした当初、たぶん、話題づくりに作った「造語」だと思います。
昔からプログラミングしていた人だと、新しい言葉なのでなんなのかわからないだけです。
ですが、名前は違いますが、普通に昔からやっていたことです。

電子計算機ができた当初、プログラミングは、直線的プログラミングと言われ、一つのブロックで1本のプログラムでした。つまり、「読み込み処理」も「計算処理」も分けることなく、つなげて一つのプログラムとして書かれていました。

少し進んだ時代に、構造化プログラミング、つまり、処理を細かくわけて、「読み込み処理」「計算処理」「書き出し処理」…などと分け、順にそれぞれを呼び出す方式に代わりました。「サブルーチン」や「関数」と呼ばれる、よく使われる処理を予め別に作っておくこともありましたが、その当時は主な使いかたではありませんでした。

で、オブジェクト指向の「オブジェクト」と呼ばれているのは、前述の「関数」や「サブルーチン」を少し発展させたものです。「関数」そのものだと言ってもいいです。なぜ「オブジェクト(物)」と言うのかの説明でよく出てくるテレビの話をここでも書いておきましょう。

テレビを操作するのに、中の回路がどうなっているかなど知る必要はない。ただ、操作方法と見たい番組がわかっていればいい。それでテレビを見ることができる。

Excelでよく使うSUM関数やAVERAGE関数と同じですね。範囲を与えれば、答えを返してくれる。関数のプログラムがどうなっているかは見ることもできない。実は、オブジェクト指向は、プログラムを「関数」ばっかりで作るという考え方です。昔からやっていることです。

オブジェクト指向の従来の関数と考え方が違って見えるところは、関数(メソッド)がオブジェクト(対象物)と組みになっているところです。よく使われるエクセルのVBAもオブジェクト指向言語です。セルの中に色を着ける場合と文字に色を着ける場合の記述は、それぞれ
range("a1").interior.color = rgb(255, 0, 0)
range("a1").font.color = rgb(255, 0, 0)
などと、オブジェクト(対象物=適用先)が先に書かれます。これは、メソッドであるcolorの中で対象を識別して動作を変えるプログラムを記述すると複雑になるから、対象物の定義の中に関数(メソッド)も組としてプログラムされているのです。
昔ながらのプログラムで関数として書くなら、
color(operand:=color of interior of range("a1"), color:=rgb(255, 0, 0)) とかと、関数の名前を書いて、引数として「どこの色か」を書く形になりますね。こうすると、どこの色なのかの判断を関数に入れるため、color関数が複雑になりますね。ですから、初めに「どこの色か」と組みにしておけば、colorという同じ名前でも別のプログラムとして書け、「どこの色」なのかがはっきりすっきりするのです。

Javaの場合、関数名を「クラス名」と呼び、使うときにその「クラス」を「オブジェクト」にコピー(「インスタンス」と言う)して使います。そこのところが、他の言語でプログラミングしていた人にはJavaがわかりにくいと言われるところです。

合同会社ケイエックスでは、サポート扱いですが、Javaもお教えしています。