はじめに
自分の中の「オブジェクト指向っておそらくこういう利点があるんじゃないか説」を記事にします、よろしくお願いします。
オブジェクト指向とそうじゃない指向の説明
よく見る「車」を例にあげて考えたいと思います。
車には車体、エンジン、タイヤなど多くの情報があります。
「オブジェクト指向」では車を「1つ1つの部品が組み合わせられたもの」として考えて作成しようとします。
部品を一つに組み上げるクラスを作って、車体を作るクラス、エンジンを作るクラス、タイヤを作るクラスなどそれぞれの部品を作るクラスをインスタンスとして呼び出すことで車を作ります。
対して「そうじゃない指向」では車を「全体で1つのもの」として考えて作成しようとします。
車という1つのものを作るので、車体、エンジン、タイヤなどのデータ作成をメソッドとして内蔵したクラスを1つ作ります。
オブジェクト指向の利点
どちらも「車を作る」ということには成功しています。
しかし、「そうじゃない指向」では、機能を追加する・改造するのにめちゃくちゃ手間がかかります。
例として、タイヤの大きさが違う車を作ることを考えます。
「そうじゃない指向」では部品が全て1つのクラスに入っているため、タイヤの大きさを変更できるようにする時、クラス全体に問題が起きていないかを確認する必要が出てきます。
タイヤメソッド内部だけでなく、クラス全体の確認までしなければいけないので非常に効率が良くありません。
しかし、「オブジェクト指向」では、それぞれの部品が独立したクラスで出来ています。
そのため、タイヤの大きさを変更できるようにする時、タイヤを作っているクラスを修正・確認すれば良いのです。
いくつもメソッドが入っている大きなクラスのテストより、タイヤを作るだけの機能しか持っていない小さいクラスをテストする方が簡単に済みます。
まとめ
オブジェクト指向を利用する利点を自分なりに考えてみました。
プログラムを作成していると、どうしても後から「ここを変更できるようにしたい」という改修点は出てきます。
そういった改修を容易にする手段としてオブジェクト指向があるのかな、と思います。