C#によるオブジェクト指向入門その1 〜オブジェクト指向のきもちから理解する〜

はじめに

巷にはオブジェクト指向を解説するサイトが溢れています。しかしどのサイトを見てもオブジェクト指向はモノと設計図の関係だとか、車の例を出されて困惑することが多いと思います。私もこの説明がとてもわかりづらかったです。

それはプログラミングの話を別のもので例えようとすることに起因すると思うのです。プログラミング言語はプログラミング言語の用語を用いて説明した方がより正確に理解できます。そしてオブジェクト指向についてはそれが何であるかよりも、どうしてそのようにプログラムを書くのかを理解した方がはるかにわかりやすいと思うのです。

この記事を執筆する際には、++C++; //未確認飛行Cさんのサイトを大変参考にさせていただきました。とても参考になるのでオブジェクト指向やC#を学びたい方はぜひ見てみてください。

なぜオブジェクト指向なのか

まずオブジェクト指向とはプログラミングパラダイムの一つです。そもそもパラダイムとはある時代や場所における物事の見方や考え方の枠組みのことで、プログラミングパラダイムとはプログラミング言語における見方や考え方を指します。プログラミング言語は数多ありますが、その中でも記述の仕方やプログラムの組み立て方でいくつかの種類分けができます。C#やJavaなどは一般的にオブジェクト指向プログラミングに分類されます。他にもC言語は手続き型、統計で馴染みの深いR言語は関数型など、様々なのプログラミングパラダイムが存在します。余談ですがプログラミングに芸術を追求し、プログラミングは文芸であると主張した文芸的プログラミングというものもあるそうです。

では数あるプログラミングパラダイムの中でなぜオブジェクト指向で書くのかについて考えてみましょう。つまりオブジェクト指向にはどのような利点があるのかということです。以下にまとめました。

コードの可読性

オブジェクト指向はコードの可読性が高いです。そのため他の人が書いているコードが比較的理解しやすいです。また自分が過去に書いたコードの理解にも助かります。C言語などのプログラミング言語ではデータに対する処理を、基本的に処理する順番に並べて書きます。オブジェクト指向では繰り返し使われる処理やデータのまとまりを一つのオブジェクトとして管理します。そのことで人間の考え方の概念に近い形でプログラムを書くことができるのです。

修正がしやすい

プログラムにおいて繰り返し使われる処理に変更があった場合、全てを変更するのはとても面倒でヒューマンエラーも起こりやすいです。しかしオブジェクト指向では繰り返し使われる処理やデータのまとまりをあらかじめクラスとして定義しておきます。これにより処理やデータ変更の場合も個々の修正ではなく、大元のクラスを修正することで対応できます。このことから継続的に更新の必要があるプロジェクトに適していることがわかります。

分業に向いている

クラスやインターフェイスなどを先に定義することで、それらの詳細なプログラムを理解することなくその機能を使うことができます。そのため大規模なプロジェクトなど分業が必要な場面で、プログラムの全容を把握せずとも作業をすることが可能です。

オブジェクト指向にはこのようなメリットがあります。つまりなぜオブジェクト指向で書くのかについては、大規模プロジェクトの分業や、修正がしやすく今後も継続的に更新していくものに向いているからということになります。

まとめ

オブジェクト指向が何なのかを理解する前に、どうしてそのように書くのかを知った方がわかりやすいと思います。その答えとしては分業や修正作業に向いているからということです。裏を返せば一人で開発したり、一度作ればそれまでで、今後修正の予定がない場合はオブジェクト指向を使うメリットは享受しにくいでしょう。オブジェクト指向は万能で最強というわけではなく目的に応じて便利な場合があるということです。

次回予告

今回の説明でも度々登場したクラスについて説明したいと思います。オブジェクト指向ではクラスという機能がその中心を担っています。その他にもカプセル化や継承などといったオブジェクト指向が分業や修正作業に向いている理由はたくさんあります。それについてはまた次回以降の記事で書きたいと思います。

おしまい。


最後に宣伝なのですが、私が高校2年の夏に製作したゲームが公開されているのでリンクを貼っておきます。プレイした感想など気軽にコメントしてくださいね。

https://weja.jp/games/breakout2

この記事を書いた人:h13415

アバター