オブジェクトやクラスの選び方~オブジェクト指向開発の基本中の基本
オブジェクト指向開発に初めてチャレンジするとき必ず直面する問題が
- 「何をオブジェクトやクラスにしたらいいか?」
という問題だろう。
実はこの疑問、至極もっとな疑問なのだ。アリストテレスやカントなど昔の偉大な哲学者たちの時代からの疑問だから。
大学の授業で哲学を学習した時に、論理学を学ぶと思う。
その中で最初に学習するのが「概念」「範疇(カテゴリー)」と言った分類の知識。
この点をあいまいにして論理学は先に進めないからである。
この概念や範疇がオブジェクトやクラスの選び方と関係が深い。
アリストテレスが人間が認識する対象を「範疇」で分類し、「存在論」を述べている。
カントが後からから著書「純粋理性批判」の中でアリストテレスの範疇を断片的過ぎると批判しているから、まぁ昔から難しい話題だったわけだ。
カントは範疇(カテゴリー)を「量」「質」「関係」「様相」などに分類している。
アリストテレスが範疇を形式とみなしているが、カントの「認識論」は範疇を認識の構成原理として純粋な思考の形式とみなしている。
実はこの議論はオブジェクト指向の議論そのものなのである。(まぁ厳密に言うと少し違うところもあるし、オブジェクト指向のどの部分を議論するかによっても話が変わってくる。今回は最初の分析のところが話の対象。)
普段、開発者がはオブジェクト指向のクラスやオブジェクトの抽出に苦労するのは、これまで人間が物事をどのように分類、区分し認識しているかと言う点に共通のスケールを持っていなかったからだ。
そして、私達が物事をどのように分類、区分し認識しているかを理解し、整理してそれを踏まえて議論しない限り、人により分類、区分し認識する前提が異なるので、意見がバラバラになるからである。
ただし、昔の偉人さんたちも人間が何を認識の対象とし、どのように理解するのかということに悩み、議論して来たのだから、少しぐらいオブジェクトやクラスの選び方が難しくても仕方ない。
それでも、なぜオブジェクト指向がいいかと言うと、機能を土台にソフトウエアを開発しないから。機能をソフトウエアの構造に写像させる従来のSA/SD(StructuredAnalysis/StructuredDesign)では、要件で変更が多発する現在において機能変更要求があれば、土台がぐらつくことを意味する。
しかし、オブジェクト指向ではクラスやオブジェクトをソフトウエアの構造に写像させるので、多少の機能変更があっても耐えることができるというもの。
クラスやオブジェクトは開発対象の存在そのものなので、対象が消えて無くなることがまずないからだ。銀行のシステムの機能が変更になっても銀行が無くなることはない。
少々乱暴な展開だが簡単に言うとこういうことになる。
オブジェクト指向は、アリストテレスやカントなど昔の偉大な哲学者の存在論や認識論、集合論を一つの拠り所にしているから、オブジェクト指向を勉強する方は、普段馴染みのない哲学の本を読んでみると新鮮かもしれない。
残念なことに日本では哲学というと「なぜ人は生きるのか?」みたいな学問と思われている(笑)。
哲学は扱う対象が範囲が広いが、私達エンジニアには、(これまた少し乱暴だが)論理学を学習する学問と取らえた方がいいだろう。ヒルベルトやゲーテルへと進んでいくとよりコンピューターサイエンスに近い話に進んでいく。
さて、オブジェクト指向方法論の本で、このアリストテレス、カントが議論しているようなところから解説を始めるものもある。方法論提唱者としてはきちんとした知識体系をもって方法論を展開したいという人たちもいるから。
例えば、J.Odell一派などが該当するね。アナリシスパターンで有名なM.ファウラーもJ.Odellに影響を受けたコンサルタントだけど、雑誌の記事でオブジェクトのもつイアイデンティについて解説している。
この解説の中で多くの方が誤解している「物が存在すること」と「2つのオブジェクトが存在した時に全ての属性が同じケース」の違いについて解説していた。
オブジェクトやクラスの分離やカテゴリーについてはまた近いうちに機会を見つけて何らかの紹介をしたい。
=HSCI Takanari Hashimoto(URL:http://hsc-i.com/)=
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- 6つのテーマを同時並行作業(2019.07.05)
- すっかりご無沙汰してしましました(2018.05.27)
- CCCC(C AND C++CODE COUNTER)GUIランチャーの公開(2017.04.13)
- 作成したYicesのGUIからオプションを変えSMTを行う(2017.01.19)
- 『Yices』によるSMTソルバ(2017.01.18)
この記事へのコメントは終了しました。
コメント