複雑怪奇なプログラム

継承

オブジェクト指向の特徴の一つである、「継承」とは、次の通りです。(ウィキペディアより

既存オブジェクトのデータ構成とメソッド構成を引き継いで、新しい派生オブジェクトを定義する仕組みが継承と呼ばれる。引き継ぐ際には新たなデータとメソッドを自由に追加できるので、派生オブジェクトの構成は既存内容+追加内容になる。継承構造は、既存束縛で真になる式は派生束縛でも真になるというリスコフの置換原則を遵守する。オブジェクトはソースコード上ではクラスとして定義されるので、継承元の親クラスはスーパークラス、継承先の子クラスはサブクラスと呼ばれる。クラスは自身のスーパークラスを複数個指定する事もできる。一つのスーパークラスを継承するのは単一継承、複数のスーパークラスを継承してそれぞれの構成内容を引き継ぐのは多重継承と呼ばれる。継承とは本質的に異なるが、多重の仕組みは後述のインターフェースへの集約で重視されておりインターフェース分離の原則(英語版)を体現している。

はい。終了です。この内容を理解するよりも「継承って何が便利なの」という視点でみていきましょう。

プログラムの再利用!?

継承の機能を利用するとプログラムの再利用が可能と一般的に言われています。歴史を振り返りながら「再利用」について理解していきましょう。

社会人2年目のA君は、ある企業のシステム課で日々プログラミングを行っています。今日も新規プログラムの開発を始めました。「あれ?この機能って昨年作成したXプログラムとほとんどいっしょだ」以前作成したプログラムと8割までが同じことに気が付いたのです。対応として処理の共通化を考えましたが、時間がかかりそうです。しかたがないので、時間の許す限り一部の機能を共通化し、XプログラムをコピーしYプログラムを作成しました。

1週間後に新規のプログラムの作成依頼がありました。「なんで、まとめてこないんだよ・・・」Xプログラムと5割ほどが同じ機能です。Yプログラムと同じタイミングで依頼されていたなら、もっとうまく対応できたかもしれません。急がされていたので、Xプログラムをコピーし5割ほど書き換えZプログラムとしました。

もやもやとした気持ちのA君でしたが、日々の忙しさの中で、やがてこの出来事も忘れていきました。それから半年ほどたったある日に、上司からプログラムの修正依頼を受けました。A君はしばらく考え込みました。依頼の内容はX処理の修正だったのです。この部分を修正するということは、XプログラムをコピーしたY,Zプログラムも見直す必要があったのです。


頑張って残業しよー


・・・・時代は昭和でした。

タイトルとURLをコピーしました