ソフトウェア開発では、欠かせないオブジェクト指向ですが、
今回そのオブジェクト指向についてまとめてみました。
オブジェクト指向とは
オブジェクト指向は、オブジェクト(Object)つまり、物という意味から
ネット上では、現実世界の物を例えて説明するサイトが多いです。
しかし、オブジェクト指向は、現実世界の物に例えると
むしろこんがらがります。
では、ソフトウェア開発の全体をカバーするオブジェクト指向はどのように捉えれば
いいのかというと、あくまでデジタル、プログラミングの世界で成り立つ規則と捉えれば
わかりやすいです。
オブジェクト指向を一言でいうと
「業務分析から要求定義、設計、プログラミング、開発プロセスまでをカバーする
ソフトウェア開発の総合的な技術である」
[1]より引用
ということになります。
プログラミングにおけるオブジェクト指向とは
オブジェクト指向プログラミング(Object Oriented Programming)、略してOOPは、
「クラス」、「ポリモーフィズム」、「継承」の3つの仕組みを利用することで
今までのプログラミングをさらに使いやすくした仕組みと言えます。
そこで、これらの3つの便利な仕組みを順にみていきたいと思います。
1. クラス
クラスには、便利な仕組みが3つあります。
関数と変数をまとめる仕組み。クラスの内部だけで使う変数や関数を隠す仕組み。
一つのクラスからインスタンスをたくさん作る仕組み。
まず、関数と変数をまとめる仕組みですが、OOPでは、クラスにまとめられた関数を「メソッド」、グローバル変数を「インスタンス変数」といいます。
メソッドとインスタンス変数にまとめることで複数の関数とグローバル変数をまとめることが
できるのでより簡素なコードを書くことができます。
次に、クラスの内部だけで使う変数や関数を隠す仕組みですが、クラス内の変数にprivateと
指定することでクラス内のメソッドのみしかアクセスできない変数を定義することができます。
同様に、メソッドも他のクラスから隠すことができます。また、publicと他のクラスからでも
呼び出せる変数、メソッドを定義することも可能です。このように、変数やメソッドにアクセスできる
範囲を限定することでよりわかりやすいコードを書くことができます。
最後に一つのクラスからインスタンスをたくさん作る仕組みですが、一つのクラスを定義するだけで
同種の情報を同時に扱えるようになります。
つまり、OOPでは配列などを使って変数領域を複数用意することなくインスタンスを生成させることが
できるのです。これもまた、コードの解読性を高めることができます!
2. ポリモーフィズム
ポリモーフィズムは、関数における概念の逆で、呼び出される側が増えても呼び出す側を変更
しなくて良い仕組みです。つまり、ポリモーフィズムを使うことにより多種の関数に対応した
コードを書くことができます。
3. 継承
継承とは、
「変数とメソッドをまとめた共通クラスを作って、その定義を丸ごと拝借できる仕組み」という。
[1]より引用
継承を使うとき、共通に使いたいメソッドとインスタンス変数をスーパークラスと定義し、
利用したいクラスはそのスーパークラスを継承します。この時利用したいクラスは、
サブクラスと呼びます。よって、継承はクラス定義の共通部分を別クラスにまとめることで
コードの重複を排除できる仕組みです。
まとめ
オブジェクト指向は、プログラミングに置いて3つの要素(クラス、ポリモーフィズム、
、継承)に分かれることがわかりました。これらは、かつての関数とグローバル変数のみを
使用したコードの複雑性を解消することに貢献しています。より簡素なコーディングを
目指す上で必須の知識と言えるでしょう!