6
円と楕円の問題は、関係を逆にすることで解決できますか?
持つCircle拡張Ellipse休憩にリスコフSubstition原理、すなわち、あなたはXとYが独立して楕円を描くように設定することができますが、Xは、常に円のためにYに等しくなければなりません:それは事後条件を変更するため、。 しかし、ここでの問題は、Circleを楕円のサブタイプにすることによって引き起こされたのではないでしょうか?関係を逆転させることはできませんか? ですから、Circleはスーパータイプです-メソッドは1つだけですsetRadius。 次に、setXとを追加して、楕円が円を拡張しsetYます。setRadiusEllipseを呼び出すと、XとYの両方が設定されます。つまり、setRadiusの事後条件は維持されますが、拡張インターフェースを使用してXとYを個別に設定できるようになりました。