[724] Re:オブジェクト指向「初」入門
投稿者:CES
2007/02/20 02:13:25
あといくつか、最初の方の書き込みに対するレス。
俺が「オブジェクトの is-a は LSP よりも優先されるべきだ」と言ったのは、「まずオブジェクトの is-a で判断し、次に LSP で判断すべきだ」という意味です。
その結果、最初に「is-a」とした判断が誤っていたというケースがあるのは既に言っています。
そのような場合でも、LSP を捻じ曲げて、断固、最初の「is-a」に固執すべきだと言った覚えはありません。
そして、まず「(常識的なオブジェクトの)is-a で判断する」のは、kit さんも同じであると [715] で書かれています。しかし、そう書かれたのはここが初めてです。
俺はてっきり「オブジェクトの is-a は問題にしなくていい。LSP だけで継承関係を判断すればいい」のだと思っていたのですが。
[713] では
> なぜ、オブジェクト自身の is-a 関係が継承関係の設計に使えない
> 場合があるのか、そのことを説明しているのが LSP です (ただし、
> 正方形や円のケースでは、LSP 以外にも、メモリ効率という別の理
> 由もあります)。継承関係の設計において、オブジェクト自身の
> is-a 関係は使えない場合がある弱い判断基準なわけですが、LSP
> は常に使える絶対的な判断基準なわけです。実はLSP(オブジェクト
> の振舞いに関する is-a) の方が、オブジェクト自身のis-aよりも
> むしろ本質的な原則なわけです。
と書かれています。
> オブジェクト自身の is-a 関係が継承関係の設計に使えない場合がある
のは事実です。
しかし、そういう「場合がある」のであって、「常に使えない」とは書かれていません。
事実、[715] では
> たとえば、「常識的に考えた is-a 関係に対して、継承を当てはめれば良
> い」というのは、正方形と長方形の例のようにうまくいかない例外もあり
> ますが、かなり使える原則です。
と書かれています。「is-a の関係は使えないわけではない」のですね。
にも関わらず、[713] では「is-a は役に立たない。LSP こそ基準にすべきだ」と書かれているように見受けられます。
そう読んでしまうのは、俺の読解力不足ですか?
[715] を境に、そちらの主張が切り替わっているような気がするのですが。