プログラミング応用a 第11回 『継承の基礎1』 11-1. 製図ソフト作例による問題提起

【11-1. 製図ソフト作例による問題提起】

●これから学習する『継承』が,なぜ考案されたのか。その理由を解説する。

・柔軟性を失うプログラム

List 1, List 2, List 3, List 4, List 5, List 6
・▼HTMLアニメーションによる解説(右下に「クリック」と表示されたらクリックで次に進めます。ローカル再生版)
最初から再生

 ・プログラムを開発していく途中で,扱うべきデータ型(クラス)が,増えたらどうなるか?
   →そのままでは,追加された新しいクラス型のオブジェクトを扱えない
    (下の例では,drawYourself()メソッドはTriangle型しか受け取れないため)
   →そこで,追加された新しいクラス型を扱うメソッドをオーバロードして追加してみる。
   →一応,解決できたようだが,本当にこれでよいのか??

前掲のアニメーションの要点をまとめた図を以下に掲載する。

List 1, List 2, List 3, List 4, List 5, List 6



・新しいクラスが追加されるごとにそれを扱うメソッドをオーバロードで追加していくと,プログラムが柔軟でなくなってしまう。
  ※新しいクラスを扱うすべての箇所(プログラムによっては数百箇所になる)に新しいメソッドを追加していかなければならない
   (それらの内容はほとんど同じにもかかわらず)
   → プログラムが複雑化・巨大化し,その結果,理解しにくく誤りが入り込みやすくなるし,変更しにくくなる。
  ※一箇所でも書き忘れるとコンパイルエラーになる


そこで,オブジェクト指向は『クラスの継承』と『メソッド・オーバライド』という考え方でこの問題を解決している。


次へ進む