【第2回オブジェクト指向講座】継承とかカプセル化とかの前に

オブジェクト指向講座目次

前回 【第1回オブジェクト指向講座】オブジェクト指向って結局何なのさ

こんにちはyoship1639です。

オブジェクト指向講座第2回になります。

前回は、オブジェクト指向の目的とか意識しなければいけないことを中心にお話ししました。

今回は、オブジェクト指向の目的を達成するための手段である継承とかカプセル化とかの前に考える大事なことの話をしようと思います。

テーマは「継承とかカプセル化とかの前に」です。

  • 手段と目的の話

いきなりですが、皆様は「手段」と「目的」についてどのようにお考えでしょうか。

もちろん、手段によって目的を達成する。目的は手段によって達成される。という関係が成り立ちますね。

私はこれに更に別の見方を入れています。

それは、「手段は目的に成り得る(逆も然り)」です。

「手段は目的に成り得る」の簡単な例として、魚を釣るために釣竿を買うを考えます。

当然、魚を釣るのが目的で釣竿を買うのが手段ですね。

少し手を加えます。

「〇〇漁港に出没した幻の魚を釣るために釣竿を買おう。しかし、釣竿にはそれぞれに良し悪しがあるため慎重に選ばないといけない。一体どれを選んだらいいんだろう。」

より良い釣竿を買うために慎重に選ぶという行動が追加されました。

これに手段と目的に当てはめると「より良い釣竿を買うという目的のために慎重に選ぶという手段」となります。

この様に「釣竿を買う」という行為は見方を少し変えると目的にも手段にも成り得てしまいます。

しかし、慎重に釣竿を選んでいる間に幻の魚は○○漁港から姿を消してしまいました。

この場合、本来の目的である幻の魚を釣る事が出来ず、慎重に釣竿を選ぶという別の目的が達成できました。

どう考えても意味ないです。幻の魚を釣ることが達成できないのですから。

 

さて、なぜこの話をするのかというと、巷のオブジェクト指向プログラミングにこれと似た状況が多発しているからです。

前回、人がプログラムを組み易く、変更し易く、拡張し易くするのがオブジェクト指向の目的で、継承・カプセル化・ポリモーフィズムはそのための手段とお話ししました。

継承とかカプセル化とかを使うことが目的になってはいけません。達成しなければならないのはプログラ厶を組み易く、変更し易く、拡張し易くすることです。

  • 継承とかカプセル化とかの前に知って欲しいこと

回りくどくオブジェクト指向の目的を念押ししました。

なぜそこまでしたかというと、これが言いたかったからです。

継承とかカプセル化とかの前に、自分が作りたいものが頭の中で整理できていないと、オブジェクト指向の恩恵は殆ど得られません。

つまり、設計力やオブジェクトの捉え方がオブジェクト指向の恩恵に直結します。

自分自身がオブジェクト指向プログラミングで作りたいものが、予め頭の中で整理整頓されているという「先読み」ができないと、いくら継承やらカプセル化やらをやったところでただのハリボテにしかなりません。

意味のないゲッターやセッター、継承になってしまうのです。

次回は、オブジェクト指向において設計や先読みがいかに重要かをプログラムの例を通して実感してもらいたいと思います。

「【第2回オブジェクト指向講座】継承とかカプセル化とかの前に」への2件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です