オブジェクト指向プログラミングa 第9回『クラスの継承 (中編)』~ 5.フレームワーク |
●アプリケーションフレームワーク
オブジェクト指向の考え方を理解していると,比較的簡単にソフトウェアの作成ができるようになる。
ここで,書類ベースのアプリケーションの作成を考えてみよう。
『書類ベースのアプリケーション(document based application)』とは,
・書類を開いて表示する
・書類を新規に作成して表示する
・書類を
編集する
・書類を印刷する
・書類を保存する
といった機能を持っているソフトウェアで,Microsoft Office のアプリケーションなど,
多くのアプリケーションがこのタイプのソフトウェアである。
ここでは,
機能1
「書類を開いて表示する」
だけを持っている場合を考えてみよう。また,
機能2「
複数の書類を同時に開いておける」
ようにしてみる。
【ステップ1】
書類にも
「テキスト書類」「ワープロ書類」「グラフィック書類」「表計算書類」
といった様々な書類があるが,それらをひっくるめて,書類一般を表すスーパークラス Document を考える。
先ほどの機能1,機能2にしぼって作成した Document クラスが下の List 3 (Document.java)である。
List 3![]() |
【解説】 |
【ステップ2】
次にアプリケーション本体を表すクラスを,先ほど決めておいた
機能1
「書類を開いて表示する」
機能2「
複数の書類を同時に開いておける」
だけにしぼって考えたのが,下中央の図(List 4)である。
List 3, List 4, 画像をクリックするとDocumentオブジェクトを配列に登録する処理の説明表示と交互に切り替わります。![]() |
DocumentBAsedApp クラスは,『書類データをファイルから読み込む』『書類データの内容をウィンドウに表示する』
といった,書類のデータ内容に係わる処理に関しては,すべて Document型オブジェクトのメソッドにお任せしている。
これは,『書類に関する動作について知っているのは書類を表すオブジェクト自身である』という考え方である。
オブジェクト指向では,このような『餅は餅屋』,つまり『専門家に任せるのが一番』という考え方でソフトウェアを
設計する。
そして,Documentクラスでは,書類に関する処理をメソッドとして定義している。
しかし,Documentクラスはあくまで書類一般を表すクラスで,各処理の内容は定義されていない。
そこで,実際に書類ベースのアプリケーションを作成する際には,Documentクラスのサブクラスを作成し,各メソッド
をオーバライドしてやれば良い。以下は,『テキスト書類』と『グラフィック書類』を表すサブクラスを作成した例である。
List 3, List 5
動作テスト用のクラスの例を以下に挙げる。
List 6
以上のクラスの関係をまとめると下図のようになる。
List 3, List 4, List 5, List 6
上図に書いてあるように,書類ベースアプリケーションの処理のほとんどが,この部分ですでに作成済みである。
このように,ソフトウェアのほとんどの部分を記述済みのクラスライブラリを,
フレームワーク
と呼ぶ。フレームワークは,スーパークラスを使って記述される。
フレームワークは市販されているものや,開発環境に元から付属しているものなどもあり,それらを利用することで
手軽にソフトウェアを開発できるようになっている。