Мне очень трудно понять, как должны работать предварительные и постусловия, не нарушая Принцип замещения. Итак, давайте предположим, что у нас есть класс Rectangle
и Square
— как их связать? Какой из них должен быть подклассом?
Итак, я понимаю, что предварительные условия Subtype
могут быть слабее, это означает, что мы можем взять основной «набор» вещей в нашем подклассе, с другой стороны, постусловие может быть сильнее, чтобы мы могли вернуть второстепенный ' набор вещей. Как я могу применить эти правила в моем примере?
Я читал, что базовый класс должен «делать» меньше, чем подкласс, поэтому я думаю, что Square
должен быть нашим базовым классом, а Rectangle
подклассом. Таким образом, предварительное условие в Square
должно утверждать, что height == width
, но как насчет пост-условий и предварительных условий в Rectangle
?
Square
, иRectangle
являютсяsubclasses
изShape
. - person nafas   schedule 27.10.2015Square
являетсяRectangle
--›Rectangle
является суперклассомSquare
- person nafas   schedule 27.10.2015