[1283] Re:疑い深い・・・
投稿者:(ぱ)こと管理人
2009/05/22 02:16:37
横から口を出しますけど、
>>そもそも OO (というか継承-派生というシステム) のおいしいところは
>>・「基底クラスを使う人」と「派生クラスを作る人」が分離できる
>>・基底クラス(のメンバー)を使う人は、派生クラスについて知らなくていい
>>・派生クラスを作る人は、基底クラス側で期待している動作(=契約)に反しない限り、
>> 自動的に正しく使ってもらえる、と判断してよい
>これが利点ですか?ちょっと他人に説明するのが難しいです。
前回私が例に出したLoggerクラスで考えると、
>>・「基底クラスを使う人」と「派生クラスを作る人」が分離できる
「Loggerクラスを使う人」は、logger.write()のようなメソッドを単に呼べばよく、
「ログをファイルに出力するFileLoggerクラスを作る人」と分離できる。
>>・基底クラス(のメンバー)を使う人は、派生クラスについて知らなくていい
「Loggerクラスを使う人」は、logger.write()のようなメソッドを単に呼べばよく、
FileLoggerクラスについては知らなくていい。
>>・派生クラスを作る人は、基底クラス側で期待している動作(=契約)に反しない限り、
>> 自動的に正しく使ってもらえる、と判断してよい
「FileLoggerクラスを作る人」は、基底クラス側で期待している動作(=契約)に
反しない限り、自動的に正しく使ってもらえる、と判断してよい
わけで、私から見れば、774RRさんはごく普通にオブジェクト指向の利点を
挙げていると思うんですけど。
もちろん、何にでも利点と欠点はあるものですし、その重み付けは用途によって
変わります。SEさんの過去の業務で実装継承がすごく役に立ったのなら、
それはそれで興味深いことです。
だからこそ、実際に役に立ちそうな現実的な例を挙げていただきたいと思いますし、
上記774RRさんが挙げられたような利点をあまり重視しておられないように見える割に、
[1260]のUpperStackにおいて、getUpper()のようなメソッドを作らずにget()を
オーバーライドしていたり、
[1270]で
>>「要素をgetする側は、大文字が欲しいとき、そのことを意識しないで済む」
>>ということにしたいのでしょうか?
という問いに対して
>そうです。
と答えていたり、
同じく[1270]で
new LinkedHashMap<String, String>()の戻り値を
Map<String, String>型の変数に代入したりしている
意図がさっぱりわからないわけです。