<輪読会>オブジェクト指向でなぜつくるのか -第4章 OOPは無駄を省いて整理整頓するプログラミング技術-

輪読会メンバー

  • Izumi Haruya

github.com

  • Sekine Yutaro

github.com

  • Abe Kaisei

github.com

第4章 OOPは無駄を省いて整理整頓するプログラミング技術

  • ポイント
    • OOPの基本的な仕組み
    • 以前と比べどこが優れているのか

OOPが持つ構造化言語にはない3つの仕組み

  • クラス、ポリモーフィズム、継承がある
    • 重複した無駄なロジックを排除し、必要な機能を整理整頓する仕組み
    • 3つの仕組みは、構造化言語で解決できなかった「グローバル変数」と「貧弱な再利用」という2つの問題を解決するためのものである

三代要素1ークラスに関わる3つの仕組み

  • クラスは「まとめて、隠して、たくさん作る」仕組み
    • サブルーチンと変数を「まとめる」
      • 結びつきの強い複数のサブルーチンと複数のグローバル変数を1つのクラスにまとめることができる
        • 部品の数が減る
        • メソッド(サブルーチン)の名前づけが楽になる
        • メソッド(サブルーチン)が探しやすくなる
    • クラスの内部だけで使う変数やサブルーチンを「隠す」
      • private、publicでアクセスする範囲を指定できる
        • private → クラスの外部からアクセス不可
        • public → クラスの外部からもアクセス可
    • 1つのクラスのインスタンスを「たくさん作る」

        // 従来の呼び出し方法
        クラス名
      
        // インスタンスが使用できるようになってからの呼び出し方法
        インスタンス名 = new クラス名
        インスタンス名.メソッド
      

三代要素2ー呼び出し側を共通化するポリモーフィズム

  • メソッドを呼び出す側を共通化すること
  • インターフェースの継承のこと

三代要素3ークラス定義の重複を排除する継承

  • 重複するクラス定義を共通化すること
  • 実装の継承のこと

    共通するクラスはスーパークラス、それを利用するのがサブクラスである

型にはめられるとプログラマは楽になる

  • 型を宣言する目的
    • コンパイラにメモリ領域の大きさを教えるため
    • プログラムのエラーを防止するため

クラスを型として利用する

  • OOPではクラスを型として扱える
  • 型付けには静的と動的の2つがある

さらに進化したOOPの仕組み

  • パッケージ
    • クラスをさらにまとめたもの
    • 関連する役割を持つクラスを集め、全体の見通しを良くできる
  • 例外
    • 戻り値とは違う形で、メソッドから特別なエラーを返す仕組み
    • 無駄を省くこと、間違いを防止することの2つの効果
    • コンパイルエラー(静的型付言語)や実行時エラー(動的型付言語)がある
  • ガベージコレクション
    • インスタンスを削除する処理をシステムが自動的に実行する仕組み

OOPを生かすも殺すも心がけ次第

品質が高く、保守に強く、再利用しやすいソフトウェア作成はOOPを使おう!

ただしOOPは手段であり、それらはプログラマの腕にかかっている

参考書籍

オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識 | 平澤 章 |本 | 通販 - Amazon.co.jp