目次へ戻る 下へ↓
13、初歩のオブジェクト指向とアドレス帖アプリケーション2
作成者:Fumitaka Makino 更新日:2003-04-14 10:23

・再利用の概念

クラスの再利用というのはオブジェクト指向プログラミングを行う理由の一つです。一度作ったソースコードを何度も打ち込みなおしたり、作り直していたら非常に無駄です。そのため一度作ったものは再利用する考え方が重要になってきます。ではどのようなプログラムが再利用性が高いかというと、下記のようなことが言えます。

目的を抽象化して具体的な振る舞いは末端で実装する。

やはり話に具体性がなくよくわからないかもしれません。別な言い方をすると

「特定の環境に依存するようなコードは最後まで書くな!」
「ロジック部分を入出力から分離せよ。」

という意味です。まだよくわからないと思います。ここに自動販売機が2種類あると思ってください。1つは「ジュースの自動販売機」、もう1つは「タバコの自動販売機」だとします。自動販売機ですから、それぞれお金の投入口があり、お金が本物かどうかを調べるユニットがありますこれを仮に料金ユニットという表現をしましょう。この2つの自販機を考えたときに「ジュースの自動販売機の料金ユニット」、「タバコの自動販売機の料金ユニット」というように別々に作りこむよりも、まず「自動販売機の料金ユニット」を作り、これを「ジュースの自動販売機」と「タバコの自動販売機」にはめ込んでやるほうが労力も減りますし、新しい自動販売機を作ったときも開発の手間が省けます。つまりこれは料金計算のロジック部分を、タバコの自販機やジュースの自販機といった特定の環境に依存しない形で分離したと言うことです。

例:自動販売機の簡易モデル

この場合タバコの自販機もジュースの自販機も料金ユニットを自分専用に開発しているために相互に使いまわすことはできない。そのため新しい自販機を設計するときは、やはりそれ専用の料金ユニットを設計する必要がある。すると毎回毎回似たような機能の料金ユニットを再設計しなおす必要があるため非常に非効率的になる。
 
しかし、このように共通の料金ユニットを設計してしまいどの自販機でも同じ料金ユニットを利用するようにしてしまえば開発コストや手間が非常に低くなる。当然新しい自動販機を設計するときも料金ユニットの部分は既に完成しているので考慮する必要がない。

また今回のアドレス帖アプリケーションであれば、「名前で検索」や「一覧表示」、「番号で取得」といったようなメソッドの部分で直にSystem.out.println()してはいけないと言うことです。なぜかと言うと、アドレス帖の内部で標準出力に書き出す機能を実装してしまうとHTMLに出力したり、アドレス情報のインスタンスを返すというような仕様に変更したときにアドレス帖自体に変更が必要になるからです。

例:アドレス帖の簡易モデル

 

・アドレス帖の改善

前回はカプセル化されたアドレス情報のクラスを作り、これをmainメソッド内部で配列化し追加したり一覧表示したりと言うような動作を行っていました。今回はもう一つのクラスであるアドレス帖クラスを作ってみましょう。アドレス帖クラスを作るにあたって考慮しなければいけないことは、おおまかに

  • 出力先、入力元に依存しない
  • 内部にアドレス情報を保持しておく
  • 内部のアドレス情報に対する操作はメソッドにより制限する

の3つです。これらを考慮して「アドレス情報を加える」、「アドレス情報を削除する」、「アドレス情報一覧を取得する」、「名前でアドレスを取得する」等の機能を実装してください。実際の出力や入力はmainメソッドを持つ別なクラスで行うと良いでしょう。

アドレス帖クラスのソースJavaDoc

 

 
↑上へ 目次へ戻る