北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

オブジェクト指向(1)

なぜ、オブジェクト指向なんだろう?



オブジェクト指向はいいと刷り込まれ、なんでもオブジェクト指向にしている今日この頃ではあるが、普通に手続き指向で書いた方が処理の流れが分かりやすいと言う例に何度も遭遇した。そこで、オブジェクト指向にする意味ってなんなのか、ちょっと考えてみた。



まず、オブジェクト指向のメリットって何かと考えたときに、真っ先に上がるのが「再利用性」。では、なぜ再利用性が高まるのかと言うと、「カプセル化」があげられるだろう。今まで、ばらばらに存在していた手続きが、「主語」を手に入れることによって、一カ所に集まることができるのだね。



例えば、「歩く」、「挨拶する」、「座る」、が「私」や「彼」の周りに集まる。これにより、「私」「彼」と言うクラスが形作られ、それを図に並べることによって静的なモデルが可視化され、人間にわかりやすい状態になる。これが、一般的なオブジェクト指向の利点だろう。



それでは、なぜオブジェクト指向なのにわからないと言う事態が起こるのか。自分がよく見かける例だと、オブジェクト指向が分かりにくいときは、主語が適切ではないことがほとんどだ。例えば、安易に「神」を主語にしてしまう場合。「神」が、「私を歩かせる」「彼を歩かせる」。「神」クラスは万能なので、作るのはとっても楽なのだが。



  • 「神」の存在により、「私」は存在していない(モデルによる可視化が不可能)
  • 私が歩くためには、「神」が必要(再利用性が低い)
  • 私が走るようにするには、「神」を変える必要があるので、世界の存続に危機を及ぼす(拡張による影響が大きい)
  • 「神」の役割を全て把握するのは不可能だ(意味のことなる機能が集中する)




と、全然オブジェクト指向が生かされていない。



適切な主語の選択が、関連性の高い述語の集中を促進し、それらが協調動作することで人間が理解しやすいアプリができるってのが、オブジェクト指向でやる意味になるんだろうね。