オブジェクト指向とは何か

「オブジェクト指向とは何か」この根源的な問いの答えはなかなか難しいものです。ここではその難しく哲学的な問題に真っ向から挑んでみたいと思います。

まとめ

オブジェクト指向とはつまり機能とかプログラムとかはとりあえず忘れて実世 界についてを考えよう、という方法です。実世界で使われる概念を「オブジェ クト」としてきちんと定義して、それがどんなものかを明確にしようという考 え方です。いったん概念が明確になってしまえば、その間の関係や機能や動作 はすらすらと出てきます。オブジェクトは「機能のまとまり」ではありません。 「概念のまとまり」なのです。「機能」はとりあえず忘れよう、というのが合 言葉であることを忘れてはいけません。

オブジェクト指向に限らず、システムはシンプルイズベストです。問題を領域 に分け、その領域の中で必要かつ十分な定義をします。慣れてくると実世界を より精密にモデリングしようとたくさんのオブジェクトを含んだ図を書いてし まいがちですが、それが対象領域(ドメイン)にとって本当に必要なのかを取捨 選択しなければなりません。たくさんオブジェクトを定義して複雑なモデルを 作るより、少ないオブジェクトでシンプルな定義をする方がずっと有用なので す。

最後に、まだオブジェクト指向がうまくイメージできない人のために、一つ提 案をしましょう。

目的のものをいきなりプログラムコードで書いてしまわないで、まずは自分が 一番書きやすいと思う何かで一度書いてみましょう。それは図でも文章でも落 書きでも(はたまた別のプログラミング言語でも)何でもいいです。まあ普通の 人は図が一番わかりやすいと思います。

「何か」で書いてみたら、次にはその書いたものをそのままデータ構造にして、 どうやったらそのデータ構造を使って動作を実現するかを考えてみましょう。

大げさに言えば、目的のアプリケーションを一番記述しやすいようなプログラ ミング言語を自分で新しく作ってしまいましょう、ということです。