Step 8 (S-10689)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/556/step/8

Step 8 (S-10689) 1.png

[00:00 - 00:18] для того чтобы избежать подобного рода ошибок можно применять следующие критерии критерии называется принцип подстановки барбарис и по английски лизка посетителям принципов иногда сокращает как этот критерий гласит что если есть функции работающие с базовым классом


Step 8 (S-10689) 2.png

[00:18 - 00:33] то такие функции должны иметь возможность работать с объектами то есть по классам не знаю об этом с если есть некоторый код написан в теме базовый класс и мы вместо базового класса


Step 8 (S-10689) 3.png

[00:33 - 00:48] подставим туда объекты природно вопроса то данный код должен сохранить работоспособность и корректно этот принцип является важнейшим критерием при принятии решения о наследовании то есть если вы решаете


[00:48 - 01:04] можно ли унаследовать 1 класса другого то 1 делом надо применить этот принцип посмотреть корректно ли наследовании в данном случае аналогично если вы решаете применять наследование агрегацию 1 делом стоит промерить а корректно ли наследование данном случае


[01:04 - 01:19] у данного принципа существует множество различных формулировок данная формулировка не является оригинальной регионально автоматизированной а давайте рассмотрим еще пару формулировок для того чтобы этот принцип стал более понятен


[01:19 - 01:36] можно сказать в терминах по видео чтоб поведения на следующих классах не должно противоречить поведения задан базовым классом то есть это означает что если есть некоторый код который ожидает от объектов


Step 8 (S-10689) 4.png

[01:36 - 01:53] данного класса определенного поведения то девкам подставить туда объекты производного класса их поведение не будет противоречить базовым классом то он будет работать коллег говорят более подробно можно сказать что


Step 8 (S-10689) 5.png

Step 8 (S-10689) 6.png

[01:53 - 02:13] класс не должен требовать от вызывающего кода больше чем базовый класс то есть он не должен напрягать какие то дополнительные ограничения на вызывающий код и одновременно с этим он не должен предоставлять вызывающему коду меньше чем базовый класс


Step 8 (S-10689) 7.png

Step 8 (S-10689) 8.png

[02:13 - 02:28] то есть если базовый класс предоставляет какие то данные какую то функциональность то производные классы должны предоставлять эти же данные эту функциональность и не могут запретить например если у вас заказ был какой то


[02:28 - 02:44] метод который можно было вызвать и этом он выдавал какой то разумный ответ нельзя сделать так чтобы в производном классе этот метод не работу или например выдавал себя ошибку это будет нарушение потому что мы таким образом


[02:44 - 02:58] поведения на следующего класса делаем противоречащим поведения задан базу класс ну или в терминах этой формулировке мы предоставляем вызывающему коду меньше чем базовый класс


Step 8 (S-10689) 9.png