@oop_ru

Страница 284 из 785
Evgeniy
05.07.2017
08:19:30
так можно в классах имена полей придумывать каждый раз разное

Evgeniy
05.07.2017
08:19:42
потому что поле name хранится уже в одном классе

Sergey
05.07.2017
08:19:46
что в этом такого, это ж билдер

Google
Evgeniy
05.07.2017
08:20:43
все проще - поля не часть контракта
в java могут быть частью интерфейса а значит и контракта, в пхп не часть 100% согласен

Evgeniy
05.07.2017
08:21:46
в том что можно в конктракте знать что есть метод возвращающий что то с другим контрактом(интерфейсом) и вызывать что то у него

а может быть свойство с нужным интерфейсом обращаешься к свойству

Sergey
05.07.2017
08:22:16
в java могут быть частью интерфейса а значит и контракта, в пхп не часть 100% согласен
еще раз. каким боком в java проперти могут быть частью контракта?

andretshurotshka?❄️кде
05.07.2017
08:23:34
Что за LoD

Sergey
05.07.2017
08:24:16
Law of Demeter

Evgeniy
05.07.2017
08:24:53
ты типа LoD решил нарушить?
это уже програмисты будут нарушать

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

по хорошему я согласен с тобой и такое делать не надо

но опять же зависит от команды

когда у тебя группа из программистов и так исторически принято

Google
Evgeniy
05.07.2017
08:25:38
то ты в меньшинстве

и тебе надо объяснять почему это плохо

такова реальность

Sergey
05.07.2017
08:25:59
стой

ты опять начинаешь уходить от ответа

Evgeniy
05.07.2017
08:26:17
хорошо

Sergey
05.07.2017
08:26:24
вопрос - каким образом в java поля являются частью контракта?

публичные поля абстрактного класса?

Evgeniy
05.07.2017
08:26:44
в java в Interface могут быть объявленны fields (там их так называют, в php property но смысл один)

Evgeniy
05.07.2017
08:27:14
сейчас

andretshurotshka?❄️кде
05.07.2017
08:27:19
Блин, ООП сложнее ФП)

Myroslav
05.07.2017
08:27:31
Ребят, есть у кого может быть статейка нормальная как работают генераторы? В частности в php Сорри за оффтоп.

Sergey
05.07.2017
08:27:41
Блин, ООП сложнее ФП)
фп чуть-чуть проще но идеи примерно те же

Sergey
05.07.2017
08:30:39
то есть это константы по сути

Sergei
05.07.2017
08:30:51
Угу

Sergey
05.07.2017
08:30:56
ясно понятно

Google
Sergey
05.07.2017
08:31:05
ну я уже нагуглил

а то уж испугался

ну тогда это не может быть частью контракта

Pavel
05.07.2017
08:33:32
у кого тут контракт головного мозга?))) Можешь сказать откуда это понятие возникло, ну т.е. когда это решили и кто (назови имена!!! шучу))). Я как то гуглил не нашел.

Sergey
05.07.2017
08:33:58
ну можно попробовать назвать Барнтрана Мэйерса

86-ой год вроде или 88-ой

Sergey
05.07.2017
08:34:41
ну и в целом это развитие идей information hiding которые были еще в начале 70-хэ

Pavel
05.07.2017
08:34:55


во у меня на столе

Sergey
05.07.2017
08:35:29
а вообще можешь Хоара обвинить с его логикой)

во у меня на столе
а ты читал то ее?) а то про Мэйерса говорят что все цитируют но никто не читал)

Pavel
05.07.2017
08:36:49
читаю, она на английском - тяжко

Evgeniy
05.07.2017
08:39:42
давай пруфы
https://gist.github.com/29ccd964b5f8356869805b5f717fc01e

Sergey
05.07.2017
08:40:16
мы уже выяснили что это просто контстанты

а значит там нет поведения, не является частью контракта

Evgeniy
05.07.2017
08:41:19
String это объект

такойже как например ArrayList

внутри которого есть свои методы с поведением

как например такое https://gist.github.com/eecd9199c810e50af9a37f39980c09d4

Google
Evgeniy
05.07.2017
08:42:50
пихаешь туда любой mutable объект и творишь магию

Sergey
05.07.2017
08:42:53
String это объект
и каким образом это относится к контракту MagicInterface?

Evgeniy
05.07.2017
08:42:55
это все очень плохо

но возможно

а еще в Java 8 в интерфейсе можно писать код который со своими ограничениями но возможно что то исполнять)

Sergey
05.07.2017
08:43:33
это не его часть

мне кажется твоя проблема в том, что "интерфейсы" != контракты

ну мол интерфейс объекта это не тоже самое что что-то с ключевым словом interface

Pavel
05.07.2017
08:45:24
а ты читал то ее?) а то про Мэйерса говорят что все цитируют но никто не читал)
Мейерс вводит понятия контракта не на публичный api, а на метаданные которыми метод может информировать внешний мир и обрабатывать на основе этой информации вхождения. Я так понял что его контраты не совсем те контракты о которых мы иногда говорим. Например в UML диаграммах интерфейсы являются контрактами но не имеются в виду Мейерские

Evgeniy
05.07.2017
08:45:36
интерфейс объекта это класс и его публичные методы и свойства

иногда от класса отходят и используют какой то интерфейс который реализует объект

и тогда интерфейс это набор методов в данной роли

ну так очень идеализированно

и с кучей допущений

Sergey
05.07.2017
08:46:31
ну то есть у тебя контракт

контрактом может быть только поведение какое-то

его можно характеризовать как раз таки прекондишенами, посткондишенами и инвариантами

именно по этой причине final static поля в джававских интерфейсах не могут быть частью контракта просто по одной причине - это не поведение.

Google
Java73
05.07.2017
08:47:31
Вся теория накладывается просто на конкретную реализацию в ооп языке интерфейсов и других способов использования объекта

Java73
05.07.2017
08:48:07
А мне паскал

Pavel
05.07.2017
08:48:14
Java73
05.07.2017
08:48:16
Теперь пинайте

Sergey
05.07.2017
08:48:47
хм, ну ладно согласен...вероятно ветер дует от него
ну тут такое, можно еще работы той же Барбары лисков попробовать порыть, там те же идеи

мэйерс просто слово контракт как мне кажется популяризировал но это не точно

Pavel
05.07.2017
08:49:13
Барбара там вродь над АТД мучались помоему

Sergey
05.07.2017
08:49:24
http://wiki.c2.com/?DesignByContract

там чуть больше истории

Pre- and postconditions were first supported natively in a language in BarbaraLiskovs CLU (circa 1974 - 1977).

Hoare's 1972 Acta Informatica paper described the use of representation invariants and abstraction functions to prove correctness of abstract data types.

Java73
05.07.2017
08:50:25
Интерфейсы как набор обьявленных методов и свойств как раз и придумали для того, чтоб пользователь объекта, который реализует этот интерфейс, знал, что именно реализует объект, и не знает как. Зато интерфейс стабилен, если даже объект меняется.

Pavel
05.07.2017
08:51:03
Hoare's 1972 Acta Informatica paper described the use of representation invariants and abstraction functions to prove correctness of abstract data types.
Да уж, точно походу дойдем что Иисус придумал и передал Лисков

Ну круто, теперь хоть что то

Java73
05.07.2017
08:51:35
Как это знание на практике поможет?

Pavel
05.07.2017
08:51:52
это чисто мне было интересно

что бы понять контракты, нужно стать контрактом, думать как контракт....Это я шучу, просто иногда на некоторые вещи интересно посмотреть со стороны имено авторов

Java73
05.07.2017
08:54:35
Иногда бывает так, что есть способы сделать что-то проще, но люди упрямо натягивают паттерны, пишут интерфейсы, и всё это из-за таких вот, кто написал "наследование зло и ведет в ад, хелперы зло, только композиция, ничего больше, только фабрика, только инверсия зависимостей... "

Три строки кода превращаются в три модуля с пятью лишними абстракциями

Но потом скажут ЗАТО ООООООП

Pavel
05.07.2017
08:56:04
Иногда бывает так, что есть способы сделать что-то проще, но люди упрямо натягивают паттерны, пишут интерфейсы, и всё это из-за таких вот, кто написал "наследование зло и ведет в ад, хелперы зло, только композиция, ничего больше, только фабрика, только инверсия зависимостей... "
Должен быть баланс, дядьки в книжках пишут все это юзайте в больших приложениях которые требуют гибкости и расширения. Вот там то к этому делу нужно относиться очень осторожно, шаг влево шаг в право и потом акунется

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