オブジェクト指向を学ぶにあたってまず注意すべきこと
前回オブジェクト指向は「抽象的な事象から具体的な事象を定義し、モノを書き表す方法論」と述べました。もう少し砕けた言い方をすると「モノの特徴や関係性をプログラミングのコードで表す」思想です。前回はオブジェクト指向の本質について簡単に触れましたが、これから更に学習を進めるにあたって、いくつか知っておくべき注意点を解説します。
オブジェクト指向に明確な定義はありません
まず「オブジェクト指向」に明確な定義はありません。むしろ定義がしにくいと言ったほうがより適切です。オブジェクト指向について他のサイトや書籍を読み比べると分かりますが、同じ概念を説明しているのにも関わらず、それぞれ少しずつ辻褄が合わず「しっくりこない」と感じるはずです。なぜ解説内容が変わるのでしょうか。
例えば哲学者や科学者、文学者や宗教者などの思想が万人に受け入れられないのと同様に、オブジェクト指向の解説もひとつには定まりません。現実をどう認識しているかは人によって各々違う哲学的な問題です。オブジェクト指向の「モノの特徴や関係性をプログラミングのコードで表す」という方法についても、元になるモノの「認識と概念」がまず捉えどころのない哲学的な問題です。
プログラミング言語によってオブジェクト指向の定義が異なります
プログラミング・パラダイムの記事で解説しましたが、言語には人の考え方を規定する特性があります。→関連記事【プログラミング・パラダイム~視野を広く保つために~】オブジェクト指向を取り入れたプログラミング言語は多々ありますが、言語によって少しずつオブジェクトに関する捉え方が異なります。これもオブジェクト指向をより複雑にする一因です。
オブジェクト指向の本質はシンプルだが、解説を定義することは難しい
このように、人間の世界認識が人によって異なる難しさ、それに加えて、そのモノをプログラミング言語として記述することの難しさ、更にプログラミング言語によってオブジェクト指向の定義が異なるという複雑さ、これら3つの理由からオブジェクト指向の解説を定義することは難しいと言えます。オブジェクト指向を語るということは、「オブジェクト指向とはこういうものだ」と本人が思うことを語っているに過ぎません。話半分で「何かのためになればよい」と聞いておく程度が丁度良いのです。もちろん鷹の目ワークも例外ではありません。
プログラム言語で使えることが大切
オブジェクト指向について一定の理解や見解が持てるようになるのは「オブジェクト指向的なプログラミング」がある程度できるようになってからです。オブジェクト指向言語による学習の前に、オブジェクト指向をなんとなく理解しておくことが大切です。オブジェクト指向についての理解は以下の学習順で進みます。
(1)オブジェクト指向をなんとなく理解する
(2)特定の言語でオブジェクト指向プログラミングを学ぶ
初めから完璧な理解を求めず、まずは「なんとなく」理解しましょう。(2)へ繋げる為には基礎のイメージさえあれば十分です。
まとめ
オブジェクト指向は「人や言語によって定義が違う」「捉えどころがない」ものであり、実践的にオブジェクト指向プログラミングを行うエンジニアも「試行錯誤を続けている」という現状です。これもまた、1つのパラダイムだと言えるでしょう。→関連記事【プログラミング・パラダイム~視野を広く保つために~】
初学者がオブジェクト指向を学習する一歩として、まず「現実世界のモノの関係性をオブジェクト指向的に置き換える」という練習があります。「どういうイメージで描けるか?」に慣れることを目的として行いますが、この練習だけならば、誰でも簡単に実行することができます。オブジェクト指向に慣れることは決して難しくありません。次回は実際にオブジェクト指向のイメージについて解説していきます。ぜひ最後までお付き合いください。
NEXT→オブジェクト指向を説明しよう(第3回/全5回)男女の恋愛で分かるカプセル化
BACK→オブジェクト指向を説明しよう(第1回/全5回)本質はシンプル