
Andrey
06.05.2017
14:35:21
Так вот опять к исходному вопросу тогда: почему нельзя квадрат от прямоугольника? )) все возможные косяки из-за не корректного проектирования, которое можно исправить выделив левое поведение в подкласс

f4rt~
06.05.2017
14:36:03
класс же должен дополнять а не менять поведение родительского

Артур Евгеньевич
06.05.2017
14:36:10
???

Aleh
06.05.2017
14:36:30

Google

Andrey
06.05.2017
14:36:39

Aleh
06.05.2017
14:36:41
Есть то, что отвечает сейчас требованиям

Aliaksandr
06.05.2017
14:36:51
Квадрат это прямоугольник. Для него не нужен новый класс.

Andrey
06.05.2017
14:37:44
Иначе опять все неявное будет, опять косяки ловить будем
У нас была реализация платежки, где вносимая сумма на счёт и сумма, которую надо было за это заплатить была в одном поле. А потом надо было вносить больше чем платишь и я замучался искать где что значит. Было бы сделано даже одним полем, но чтобы оно получалось через разные методы - было бы все легко и просто. А так из-за неявности только проблем себе создали

Aliaksandr
06.05.2017
14:51:25

Andrey
06.05.2017
15:03:03
Квадрат как раз это и будет гарантировать ) иначе вообще можно скатиться до того, что работать будем напрямую с "фигурой". А че за фигура - фиг его знает. Главное, чтобы у неё количество сторон и углы были корректными

Алексей
06.05.2017
15:05:32

Aliaksandr
06.05.2017
15:07:20

Алексей
06.05.2017
15:08:39

Aliaksandr
06.05.2017
15:09:58

Алексей
06.05.2017
15:12:30

Google

Like
06.05.2017
15:13:22
Да что спорить, блин
Фигура: сущность
Сущность - класс
Просто парень вбил себе в голову, что здесь должно быть наследование (хер пойми почему)

Алексей
06.05.2017
15:15:15

Andrey
06.05.2017
15:24:04

Like
06.05.2017
15:28:25

Sergey
06.05.2017
15:28:56
попробуй теперь пофиксить "метабализм"
ну мол например у тебя механическая птица

Like
06.05.2017
15:29:30

Sergey
06.05.2017
15:29:33
она и летать не может и не жрет

Like
06.05.2017
15:29:46

Sergey
06.05.2017
15:30:03
но тогда у тебя ифов будет много
короч там замута вся в том что бы добиться полиморфизма и при этом не нарушить LSP
тогда if-ов становится намного меньше

Like
06.05.2017
15:31:01

Sergey
06.05.2017
15:35:04
по опыту могу сказать что если даже ты нарушил специально - оно быстро аукнется

Andrey
06.05.2017
15:35:36
Насколько часто жертвуют lsp ? )
Недавно лекцию видел, там говорили что apple на него в какой-то вьюхе вроде забили. Типа у всех можно альфа сделать, а именно у этой нельзя и то ли ошибка будет, то ли поведение какое-то фиговое

Sergey
06.05.2017
15:36:21

Google

Sergey
06.05.2017
15:36:24
ну мол BC нарушится

Aleh
06.05.2017
15:37:24
Выделяется интерфейс
И пилятся пара адаптеров

Sergey
06.05.2017
15:38:51
ну тут надо уже детали курить

Aleh
06.05.2017
15:39:18
Ну да

Andrey
06.05.2017
15:40:35

Aleh
06.05.2017
15:41:31

Andrey
06.05.2017
15:45:09
Ну я просто на механическую птицу ответил, мне ни мёртвые, ни живые не нужны ))) а вообще хотел бы исходный пример понять. Вот выше написали, что пример проблему не отражает, это все объясняет )

da horsie
06.05.2017
18:39:59
Квадрат это прямоугольник. Для него не нужен новый класс.
Квадрат это прямоугольник. У них нет поведения. А у классов Square и Rectangle есть. Классы, представляющие объекты из реального мира, это не то же самое, что сами объекты. Поэтому классы подчиняются другим правилам, сообразно своему поведению. LSP именно об этом.

Sergey
06.05.2017
18:40:32
попробуй выразить ту же мысль не используя слово "класс"

Sergey
06.05.2017
18:41:10
замени на "тип"
хотя бы

da horsie
06.05.2017
18:42:31
Ты не по адресу придираешься ;)

Evgeniy
06.05.2017
18:43:05
как может класс представлять объект?)
может наоборот объект это частный случай класса ( с конкретным состоянием)

Sergey
06.05.2017
18:43:41
эта трактовка как по мне приносит намного больше вреда чем какой либо пользы

Andrey
06.05.2017
18:44:20

Google

Sergey
06.05.2017
18:44:24

Evgeniy
06.05.2017
18:44:40

da horsie
06.05.2017
18:44:58
Блин

Aleh
06.05.2017
18:44:58

Evgeniy
06.05.2017
18:45:14
о сейчас ФП ворвется)

da horsie
06.05.2017
18:49:10
Ок, не класс. Назовем это "поведение".

Sergey
06.05.2017
18:49:25

Алексей
06.05.2017
18:49:34

Sergey
06.05.2017
18:49:38

Admin
ERROR: S client not available

Sergey
06.05.2017
18:49:51
поведение будем представлять в качестве типов

da horsie
06.05.2017
18:50:09
И не из реального мира, а воплощение некоей идеи в коде

Sergey
06.05.2017
18:50:12
"подтип" - это объект который по другому реализует "такое же" поведение.

da horsie
06.05.2017
18:50:35
Я не о том говорил вообще

Evgeniy
06.05.2017
18:50:42
сколько людей не вижу у всех свои взгляды на ооп и каждый в чем то прав)
надо сделать большой словарь терминов)))
чтобы не путаться и все на одном примерно говорили)

da horsie
06.05.2017
18:51:21
А о том, что требования к буковкам кода на ооп-языке отличается от требований к идеям, которые эти буковки должны представлять

Sergey
06.05.2017
18:51:48

Google

Sergey
06.05.2017
18:51:55
ну то есть и да и нет

Алексей
06.05.2017
18:52:04
Они уже есть. Для обьектов, типов и классов. Проблема в более высокоуровневых концепциях

da horsie
06.05.2017
18:52:46

Sergey
06.05.2017
18:52:56
когда ты говоришь "квадрат это такой прямоугольник у которого все стороны равны" ты не декларируешь иерархию типов. Ты описываешь различия по которым можно отличить квадрат от прямоугольника.
по сути это два абсолютно разных объекта которым просто повезло иметь некоторые схожие характеристики которые делают их визуально похожими

da horsie
06.05.2017
18:53:53
И дядя боб или кто там приводит пример с адвокатами, представляющими мужа и жену, которые разводятся в суде
Сами адвокаты при этом не муж и жена и не разводятся

Sergey
06.05.2017
18:54:25
хм... хороший пример

Evgeniy
06.05.2017
18:54:38
опять квадрат vs прямоугольник)

Sergey
06.05.2017
18:54:58
ладно, я согласен с @f3ath

Alex Фэils?︙
06.05.2017
18:56:30

Evgeniy
06.05.2017
18:56:51
это треугольник, расходимся)
а если серьезно я не знаю
я просто програмист)

da horsie
06.05.2017
19:00:11
Когда именно - зависит от конкретного поведения объектов

Sergey
06.05.2017
19:01:01
требуемого*

Aliaksandr
06.05.2017
19:01:02
Может, ожидаемого?
Ну или так.

da horsie
06.05.2017
19:05:16

Sergey
06.05.2017
19:05:42
зачем нам поведение объекта которое нам не нужно?