@oop_ru

Страница 315 из 785
Sergey
15.08.2017
09:02:55
Неа
контракт != интерфейс.

это намного более широкое понятие

сигнатуры, системы типов и т.д. это способы задавать контракт в коде

но это не описывает полностью пре/пост условия и инварианты класса

Google
Виталий
15.08.2017
09:04:06
Принцип Лисков не запрещает менять логику

Sergey
15.08.2017
09:04:39
Вообще если переопределить публичный метод и поменять там логику, то при вызове из закрытого может оказаться совсем не то, что задумывалось автором исходного класса.
вот когда там оказывается не то что задумывалось - ты переопределил поведение и тем самым нарушил принцип подстановки

Принцип Лисков не запрещает менять логику
этот принцип соблюден только и только тогда когда ты можешь любого "наследника" подставить на место базового класса и не париться о том что "что-то не то что задумывалось" произойдет

Виталий
15.08.2017
09:06:48
Это верно " снаружи", когда клиент использует класс. А у нас ситуация, когда закрытый метод использует открытый. В закрытом каким боком наследники?

Sergey
15.08.2017
09:09:33
поведение не должно поменяться

Денис
15.08.2017
09:09:58
А что плохого в том, что закрытый метод обращается к открытому?

Sergey
15.08.2017
09:10:05
вот если мы говорим о приватных методах - там другая история, там как ты верно сказал и наследование ни причем и к контрактам они не имеют никакого отношения

А что плохого в том, что закрытый метод обращается к открытому?
ничего плохого в этом нет, просто есть шанс что это симптом другой проблемы

но если все хорошо с точки зрения принципа единой ответственности и принципа сегрегации интерфейсов то все должно быть ок

Виталий
15.08.2017
09:12:06
ты вызваешь публичный метод, а значит тебе без разницы кто его вызывает.
Но в приватном методе ты априори знаешь поведение класа и можешь делать предположения. Которые могут поменяться из-за переопределения.

Sergey
15.08.2017
09:12:19
Это верно " снаружи", когда клиент использует класс. А у нас ситуация, когда закрытый метод использует открытый. В закрытом каким боком наследники?
просто поясню мысль. Ты когда вызываешь публичный метод из приватного - ты как бы всеравно его вызываешь "снаружи"

Ivan
15.08.2017
09:12:51
class Calculator { public function add($a, $b) { return $a + $b; } public function sub($a, $b) { return $this->add($a, -$b); } }

Google
Ivan
15.08.2017
09:13:06
ok?)

Ivan
15.08.2017
09:13:17
почему мне это кажется некрасивым

Sergey
15.08.2017
09:13:43
просто пример слишком простой)

ну и у тебя тут всеравно нет приватных методов)

Но в приватном методе ты априори знаешь поведение класа и можешь делать предположения. Которые могут поменяться из-за переопределения.
поведение публичного метода и то как оно влияет на внутренне состояние всеравно не должно от этого меняться. Да и делать такие предположения не очень хорошо

Ivan
15.08.2017
09:14:49
да я неправильно спросил, не из приватного, а из любого

Sergey
15.08.2017
09:15:10
Aleh
15.08.2017
09:32:50
ну да, объекту вызывать свои методы и менять свои приватные свойства вообще нормально, он для этого и создан)

Den
15.08.2017
09:39:33
ты походу вообще не понял о чем там речь///
Может и так. Вот только нахера прямоугольнику хранить width и height я тоже не вдупляю. Я, как и говорил, никогда бы не стал делать такой глупости...

Aleh
15.08.2017
09:47:01
так опиши, как бы ты сделал

Виталий
15.08.2017
09:48:33
Den
15.08.2017
09:59:57
Aleh
15.08.2017
10:00:04
да

Sergey
15.08.2017
10:00:15
он походу через соотношение сторон, флоты и все такое

ну мол он про какие-то коэффициенты там выше говорил

и то же самое провернуть с квадратами

и кружками и овалами - так что бы веселее было

Google
Den
15.08.2017
10:02:33
да
2 свойства - *длина* и *отношение* описывают все квадраты и прямоугольники точно так же как *длина* и *ширина*

Площ?

Артур Евгеньевич
15.08.2017
10:03:30
То есть что будеи длиной а что шириной

Aleh
15.08.2017
10:03:46
Не точно. Непонято отношение чего к чему
прямоугольника к твоему говнокоду

Sergey
15.08.2017
10:03:53
)))

Ivan
15.08.2017
10:04:14
)

F01134H
15.08.2017
10:04:33
))

Артур Евгеньевич
15.08.2017
10:04:34
))

Sergey
15.08.2017
10:04:41
Поставь корректнее вопрос - что большой?
тебе надо сделать программку которая определяет пролазит ли что-то в дверной проем

так проще?

Den
15.08.2017
10:04:57
Не точно. Непонято отношение чего к чему
Коэффициент отношения сторон. Понятно из того меньше ли чем 1 этот коэффициент.

Или больше

Sergey
15.08.2017
10:05:20
Коэффициент отношения сторон. Понятно из того меньше ли чем 1 этот коэффициент.
ты зациклился на том что у объекта внутри а посыл в том как его юзают

более того, 1.00000000001 === 1.000000000 не всегда даст тебе правдивый результат

так что определить по коэффициенту квадрат это или нет не выйдет

Den
15.08.2017
10:06:45
ты зациклился на том что у объекта внутри а посыл в том как его юзают
Возможно, Серег. Просто интересно, если бы старт был другим - сохранился бы посыл? ))

Google
Aleh
15.08.2017
10:07:28
оч удобно хранить будет)

Den
15.08.2017
10:07:28
3/11 или 11/3

оч удобно хранить будет)
Это другой вопрос

Я так делал для фронтэнда

Sergey
15.08.2017
10:11:06
???
как говоилось в этом видео что ты не досмотрел - "людей игогда сожают в тюрьму за сравнивание флотов на равество"

Sergey
15.08.2017
10:11:58
привыкаю к новой клавиатуре, сорян

Den
15.08.2017
10:12:31
Там есть русские буквы?

Sergey
15.08.2017
10:13:11
не, слепая печать и все такое, просто она типа механическая и чуть по другому тактильные ощущения, не привык пока.

Admin
ERROR: S client not available

Sergey
15.08.2017
10:20:19
Den
15.08.2017
10:25:20
А можно инфу о том, что кто-то добавился, за сообщение не считать, или это только админ группы может регулировать?

вот тебе задачка. У тебя есть куча прямоугольников и тебе надо выбрать из них самый большой
Это к чему вообще, Серег? Я тебе говорю, что если есть ширина и индекс, то легко можно вычислить высоту, и только после того - начать выполнять твое ТЗ )

Dmitriy
15.08.2017
12:10:16
что такое индекс ?

Den
15.08.2017
12:10:29
Количество хранимого не увеличилась - проблема решена )

F01134H
15.08.2017
12:10:30
места назначения ?

Den
15.08.2017
12:10:47
что такое индекс ?
Отношение сторон

Коэффициент

Dmitriy
15.08.2017
12:11:10
у круга это 1 ?

Google
F01134H
15.08.2017
12:11:14
коэффициент индекса

синус умножаем на площадь круга минус индекс средней температуры квадрата

Den
15.08.2017
12:11:47
у круга это 1 ?
Разговор только о квадрате и прямоугольнике

Dmitriy
15.08.2017
12:13:03
Точно ?

и кружками и овалами - так что бы веселее было

Den
15.08.2017
12:14:42
Точно ?
Ты - не знаю. Я - да. public function isSquare() { return $this->index === 1; }

Я бы ваще квадрат выкинул

Aleh
15.08.2017
12:15:25
Ты - не знаю. Я - да. public function isSquare() { return $this->index === 1; }
а чем твой вариант лучше хранения width и height?

Den
15.08.2017
12:17:08
Aleh
15.08.2017
12:17:35
ну ты сказал, что width и height это глупо и ты бы так никогда не сделал. Пытаюсь понять, чем твой вариант лучше

Андрэ
15.08.2017
12:17:37
А он должен быть лучше?
А если ширина и длина имеют значение - кто где?

Ну например, серверный шкаф нельзя наклонять

Den
15.08.2017
12:18:09
x и y - что раньше?

Rodion
15.08.2017
12:18:19
Андрэ
15.08.2017
12:19:00
Ну так-то да. Но зачем вводить какой-то индекс я тоже не могу понять ели честно. Я конечно может част дискуссии упустил, с чего началось

Rodion
15.08.2017
12:19:47
честно говоря, тоже не понимаю, зачем так изворачиваться)

Den
15.08.2017
12:22:00
Может быть так же что я, и правда, не вдуплил че там в видео, но, как мне показалось у чувака определенные проблемы из-за этого, и он объяснит как их решить в конце. Проблемы касаются "неудобства" наследования. Или нет?

Андрэ
15.08.2017
12:22:58
а, вон про что было. Наследовать ли квадрат и прямоуголльник от Figure типа?

ну или друг от друга

Den
15.08.2017
12:23:44
Я бы ваще квадрат выкинул

public function isSquare() { return $this->index === 1; }

Страница 315 из 785