[奇妙なクラスと実世界]
2.銀行アプリケーションの事例
2.2 奇妙なクラスの存在
前述の銀行モデルを「果たして現実世界をそのまま表現しているだろうか?」という観点から改めて眺めてみましょう。
すると、ずいぶんとおかしな点が多いことに気づきます。
まず「カード」クラスです。
このクラスは、内部に「暗証番号」を属性として保持しており、暗証番号の検査に責任を持っています。
クラス図には陽に定義してありませんが、「暗証番号の検査」メソッドは、おそらくユーザーから入力された暗証番号を引数として受け取り、検査を実行して、その結果を真偽値で返すのでしょう。
これを私たちが実際に持っている銀行カードと比べてみましょう。
財布に入っている銀行カードに「この暗証番号で取引してもいいですか?」と聞いたとします。
当然返事が返るはずもありません。(もっとも返事よりも、そんな風にカードに話しかけたことを誰かに見られなかったかどうかを心配した方がいいと思いますが...)
もし「いいよ」とか「だめ」などと答えが返ってきたら、それは大変なことです。
しかし現代において、そんなことが起きるのは「ドラエもん」か「不思議の国のアリス」の中ぐらいでしょう。
「カレンダー」クラスはどうでしょう?
このモデルで表現されるカレンダーは、日数計算をしてくれたり、休日判定をしてくれたりと、とても便利なもののようです。
しかもこのカレンダーは、内部に「カレンダー情報」として、休日や月ごとの日数や、うるう年などの情報を保持しており、しかもそれをプライベートな情報として隠蔽しているのです。
つまり壁にはカレンダーが掛けてあるのですが、そのカレンダーには音声認識装置とスピーカがついているだけで、何も文字が書いてないのです!いったいこんなカレンダーが現実世界のどこにあるというのでしょう?
この他にもこのモデルに登場するのは、「お金を何円くれ!」というと勝手にお金が出てくる財布や、「印字しろ!」というと自動的に取引内容を印字してくれる「通帳」など、非現実的な奇妙なものばかりです。
オブジェクト指向アプローチが描くのは、こんな奇妙な世界なのでしょうか?
© 1999 OGIS-RI Co., Ltd. |
|