Соглсно LSP, если S - подтип T, то объекты типа S могут быть безопасно подставлены вместо объектов типа T. Это одно из основных положений ООП.
Теперь, есть классическая задачка, в которой круг нельзя наследовать от эллипса, потому что нарушается LSP. Несмотря на то, что круг - частный случай эллипса.
На практике же получается, что у отношения общий случай <-> частный случай дофига общего кода, а самый лучший способ уменьшения дублирования - как раз наследование. В реальном коде (почти всём, который я когда-либо видел), на данный принцип жестко забивали. Например, если наследник не может реализовать какой-то метод (он не имеет для него смысла), метод реализуется выбросом исключения «из этого объекта нельзя вызывать этот метод!». Или наоборот, если метод имеет смысл только у наследника, похожая ошибка выкидывается в методе суперкласса, «извините, но перед использованием этот метод нужно переопределить!».
Можете поделиться, как разруливать такие ситуации с дублированием кода расово-верно? На примере того же эллипса и круга.
(Если это важно, подразумевается языки с ООП, аналогичном Java (или более свободные языки, с искусственно наложенными ограничениями для симуляции строгой явной статической типизации).
Ответ на:
комментарий
от Sectoid
Ответ на:
комментарий
от stevejobs
Ответ на:
комментарий
от Sectoid
Ответ на:
комментарий
от baverman
Ответ на:
комментарий
от baverman
Ответ на:
комментарий
от stevejobs
Ответ на:
комментарий
от stevejobs
Ответ на:
комментарий
от baverman
Ответ на:
комментарий
от jtootf
Ответ на:
комментарий
от Sectoid
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от malbolge
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Liskov substitution (2019)
- Форум Соблюдаете ли вы LSP? (2018)
- Форум $: bad substitution (2015)
- Форум [make] redirection & substitution (2012)
- Форум bash Bad substitution (2008)
- Форум test.sh: bad substitution (2008)
- Форум Principles of reactive programming (2015)
- Форум Principles of Reactive Programming (2013)
- Форум ksh, строки, bad substitution (2012)
- Форум The Talos Principle Public Test (2014)