オブジェクト指向
オブジェクト指向とは
一言で説明すると設計手法のひとつです。
設計とは分割と結合を考える行為
例えば、ランチェスターの2次法則 仕事の成果=量²✕質というものがありますがつまり同じ質を1とした場合、仕事の成果=量²です。単純に量をコストと考えると、、《100をそのまま作った場合》100作るにかかったコスト=100²=10,000《100を10に分割した場合》10を10個作るのにかかったコスト=10²×10=1,000
物事を分ければその分コストを下げることができます。【設計工程とは分割と結合を考えること=コストを削減するための作業】
オブジェクト指向の目的
オブジェクト指向設計とはランニングコストを下げるために考えられた設計
コストにはイニシャルコスト(初期工程)とランニングコスト(保守工程)があります。設計工程においてどのように考えるかでどちらのコストが下げられるかが違います。
- どうすれば簡単にコードが書けるか考える→イニシャルコストを下げるための設計
- どうすれば簡単に管理できるか考える→ランニングコストを下げるための設計
設計工程の違い
オブジェクト指向設計
- データの扱い方 → どんな処理をするのか
- メリット:仕様変更の際、処理の設計変更が最低限に抑えられる
- デメリット:必要な処理以外の部分まで考えながら作らないといけないので難しくなる
構造化設計
- どんな処理をするのか → データの扱い方
- メリット:処理から考えるため理解しやすくて作りやすい
- 仕様変更の際、処理側も変える必要がでてくるため仕様変更に弱い
仕様変更に強い設計
- 仕様変更の影響範囲がすぐに特定できること
- 仕様変更そのものの作業が楽であること
影響範囲の特定をしやすくするための考え方にデータ抽象があります。複数の関係するデータをまとめて、見分けを付けやすい単位をつける。【名前、売価、卸値、説明、製造年月日、賞味期限】 →食品についてのデータ群という想像がつく。仕様変更の際もどこを変更するか想像しやすい。
このデータを集めて、一つのオブジェクトとしてまとめておくことをカプセル化といいます。
オブジェクト指向4大原則
- カプセル化・・・関係するデータと、そのデータを必要とする処理を一つにまとめることで、影響範囲の特定を容易にし、仕様変更に強い設計の土台を作る。単純にアクセスメソッドを作ることではないので注意。
- データ隠蔽・・・カプセル化の維持が目的。フィールドをPrivateにする。
- 抽象化・・・共通部分だけをひと一括りにして単純化して、全体をシンプルに結合していくこと。多態性の設計をするときにも必要な考え方。
- 多態性
- 情報隠蔽・・・保守性を保つため、公開する情報と非公開の情報にわけて決められた変更しかできないようにすること。設計の劣化を防ぐ。
- データ隠蔽のためのアクセス修飾子
public
protected
default(アクセス修飾子を使わない)
private
- アクセス修飾子の設計では、アクセス修飾子なしをデフォルトとしている。これは保守性を保つためのデータ隠蔽の考えを基にしている。そのためアクセス修飾子は必要時以外は使わないのが基本となる。
オブジェクト指向まとめ
データと、そのデータを必要とする処理を一つにまとめた部品の最小単位をオブジェクトといいます。そのオブジェクトを組み合わせて、どのように仕様変更に強いプログラムを設計するか、どのようにその設計を維持して保守性の高いものにしていくか。それを考えるための設計手法の一つの考え方をオブジェクト指向といいます。
以上
← Go home