---
# System prepended metadata

title: Chapter10 オブジェクト指向設計の学び方と教え方
tags: [ISBN-978-4-7741-9087-7]

---

# Chapter10 オブジェクト指向設計の学び方と教え方

- オブジェクト指向の基本を理解し、オブジェクト指向の考え方とやり方をチームで共通理解にするための学習方法を説明する。

## オブジェクト指向を学ぶハードル 

### オブジェクト指向の説明は意味が不明

- オブジェクト指向の考え方とやり方をチームで実践するにはメンバー全員がある程度知識と経験を持っていることが必要。
  - しかし、現実にはオブジェクト指向に不慣れなメンバーや、ソフトウェア開発の経験そのものが不足しているメンバーも居る。
- 筆者が最初にオブジェクト指向を学んだ時、内容が全く理解できず、また次のような言葉が何を指しているか推測すらできなかった。
  - オブジェクト
  - クラス
  - インスタンス
  - カプセル化
  - 多態（ポリモーフィズム）
  - 継承（インヘリタンス）
  - インターフェース
- 次のようなオブジェクト指向の説明も釈然としなかった。
  - オブジェクト動詞の相互作用としてシステムの振る舞いを捉える考え方
  - 操作の手順よりも操作の対象に重点を置く考え方。

### なぜオブジェクト指向で設計すると良いのかがわからない

- オブジェクト指向の良さについて、次のような説明を目にする。
  - コードの塊を部品化して再利用できる
  - 拡張や修正が容易になる
  - バグが少なく品質が安定する。
    - 「なぜそうなるのか？」「どれだけの効果を期待できるか？」といった具体的な説明は無い。
- 2，3クラスを試しに書いたり、数行のコードをオブジェクト指向らしく修正しても良さは実感できない。
- オブジェクト指向の良さを実感するにはある程度の規模が必要。そして何度も修正や拡張を繰り返す機会が必要。
  - しかし、そのような機会は少ないのが現実。
    - 最初のリリースのために開発には参加したが、それ以降のソフトウェアの改善作業は別の人が担当して、自分の開発したソフトウェアの改善経験が無い
    - 既存コードの改善作業を担当しているが、目先の個々の修正要求をこなすことだけをお止められていて、クラスやメソッドを抜き出して設計改善をする機会がない。

### オブジェクト指向をどうやって学ぶか

- 既存のコードを改善しながらオブジェクト指向設計を学ぶ
- やや極端なコーディング規則を使ってオブジェクト指向らしい設計を体で覚える

## オブジェクト指向の考え方を理解する

- オブジェクト指向らしい設計に慣れたら「なぜ、そうするのか？」という考え方を学ぶことで、より深く体得できる。
- おすすめの書籍は以下
  - 実装パターン
  - オブジェクト指向入門
  - ドメイン駆動設計

## 第10章のまとめ 

- オブジェクト指向は言葉による説明より、具体的なコードで学ぶのが実践的
- 『リファクタリング』を参考に、既存のコードを改善してみる
- 「オブジェクト指向エクササイズの9つのルール」で練習してみる
- オブジェクト指向らしい設計に慣れたら、より深く学ぶために『実装パターン』『オブジェクト指向入門』『ドメイン駆動設計』を読むと良い。
- 特に『ドメイン駆動設計』は、オブジェクト指向設計を現場で実践するための素晴らしい手引き

###### tags: `ISBN-978-4-7741-9087-7`
