しばらく間を空けてしまいましたが、プログラミングの話を続けたいと思います。
これまで18回で、簡単なプログラムを作成するために必要な基礎知識はほとんどカバーできていると思います。あとは、秀丸マクロなどの言語の仕様を理解すれば、プログラムを作成できます。しかし、近年の高水準言語にはもう少し難解な考え方が取り入れられています。それが「オブジェクト指向(Object-oriented)」という考え方です。
秀丸マクロとは違い、Wordマクロ(VBA)、Java、C#などのプログラミング言語はオブジェクト指向をベースにしています。つまり、これらのプログラミングを理解するにはオブジェクト指向プログラミングを理解する必要があります。とはいえ、オブジェクト指向の考え方は非常に多岐に亘り抽象的で難解な部分も多いため、この講座では必要な部分だけを取り上げます。
オブジェクトとは
オブジェクト(Object)は事象の集合体を抽象化したものです。といってもピンとくる人はまずいないと思います。もう少しかみ砕くと、オブジェクトは、人や組織、生物や無生物、出来事や概念といった具体的な「モノ」を示します。
「モノ」にはその特徴と機能があります。例えば、車というオブジェクトにはサイズや色などの特徴、走る、止まる、運ぶなどの機能があり、猫には種類や毛色などの特徴、鳴く、食べるなどの機能があります。
分かりにくいと思いますが、現時点では「オブジェクトはそれ自身の特徴と機能で構成されている概念」としておきます。
分析と設計、プログラミングでは、このオブジェクトに対するアプローチが多少異なりますので、ここではプログラミングにおけるオブジェクトに限定して話を進めていきます。
オブジェクト指向プログラミングとは
これまで構造化プログラミングについて説明してきました。これは処理を大まかなブロックに分割し、さらにそれを機能ブロックに分割するモジュール方式によるプログラミング方法であり、データは記述された手順に従って処理されます(これを手続き型プログラミングと呼びます)。
オブジェクト指向プログラミングでは、この方式をさらに発展させ、処理を手順として考えるだけでなく、処理対象に対して何かをするという考え方をします。それまでのプログラミングでは、データと処理が別々に存在していましたが、オブジェクト指向では、データそのものが自分に対する処理を含んでいます。そのデータに対して処理を依頼するという形でプログラミングが行われます。
先に「オブジェクトはそれ自身の特徴と機能で構成されている」と説明しましたが、「オブジェクトは自分に対する処理を含んでいるデータ」であるとも言えます。ここで、特徴と機能はそれぞれオブジェクトが内含するデータと処理のことです。
Windows上ではファイルやフォルダ、アプリケーションがオブジェクトであり、そこに含まれる文書やシート、ボタンとバーといった画面の構成要素もすべてのものがオブジェクトです。この構成要素一つ一つに「特徴」と「機能」があります。このような構成要素に処理を依頼し、依頼を受け取った構成要素はその依頼に応じて処理を実行するのがオブジェクト指向プログラミングです。
説明が抽象的で分かりにくいと思いますので、以前投稿したWordマクロの記事も参考にしてください。
まとめ
この程度の説明でオブジェクトについて理解するのは難しいと思います。ここでは必要最小限の説明しかしませんが、本気で理解したい方はちゃんとした専門書を読むことをお勧めします。
次回からオブジェクト指向プログラミングの中身について説明していきます。その中で、オブジェクトとは何でどう使われるのかが理解できるかと思います。
今回覚えておいて欲しいのは次の2点です。
- オブジェクトはその「特徴」と「機能」で構成される
- データを処理するように手順をプログラミングするのが「手続き型プログラミング」、オブジェクトに対する処理の依頼をプログラミングするのが「オブジェクト指向プログラミング」
次回はクラスについて説明する予定です。難しい話が続き、説明力不足が際立ってくると思いますが、もうしばらくお付き合いくださいますようよろしくお願いいたします。
では、また。