Size: a a a

2021 October 19

МФ

Максим Федоров... in symfony
да, спор на сокрытии концентрируется

просто в википедии указали, что есть ряд программистов, которые выделили data hidding из инкапсуляции как отдельную штуку, и с этим доводом они (спорщики со мной)  противопсотвялют инкапсуляции, хотя это просто часть ее признаков и свойство

ну игнорируя в лоб "в капсулу"
источник

SP

Sergey Protko in symfony
Что бы скрыть нужна граница но границу можно провести не скрывая деталей
источник

SP

Sergey Protko in symfony
Ну то есть одно подразумевает другое но это не тождественные термины
источник

SP

Sergey Protko in symfony
А data hiding вообще оч странная штука
источник

МФ

Максим Федоров... in symfony
но я вот тут с твой границе и инкапсуляцией не согласен
границу провести — для меня это абстрагировать (то есть обозначить признаки)

но я тут утону в спорах чую 🙁
источник

SP

Sergey Protko in symfony
Не, просто тогда небыло бы "кривых границ")
источник

SP

Sergey Protko in symfony
Условно information hiding это "зачем/для чего" а encapsulation это "как"
источник

SP

Sergey Protko in symfony
Data hiding это шот невразумительное
источник

QQ

Qwert Qwertinsky in symfony
те кто про Data hiding - воспринимают инкапсуляцию как возможность на уровне языка объединить(инкапсулировать) данные и действия над данными.
условно во времена php 4 - инкапсуляция была - так как можно было инкапсулировать(объединить) в рамках класса данные (свойства) и  действия (методы).
А data hiding'a не было - так как private/protected - в язык не подвезли - и проблема скрытия данных решалась организационно - путем договоренности что private/protected методы/свойства - начинаются с подчеркивания
источник

МФ

Максим Федоров... in symfony
инкапсулировать — объединить, а точнее спрятать "за" некоторый интерфейс (инрерфейс в смысле интерфейс класса или интерфейс Interface, это вторично)
источник

МФ

Максим Федоров... in symfony
инкапсуляция _ довольно широкое понятие
эт оне только про методы и про модификаторы доступа
источник

МФ

Максим Федоров... in symfony
это еще и про абстракции, потому оно и идет в определении к ООП как важная составляющая
источник

МФ

Максим Федоров... in symfony
мы можем инкапсулирвоать целые абстракции: за фасады, за интерфейсы, за фабрики и много куда еще (за библиотеки целые)
источник

МФ

Максим Федоров... in symfony
скрывая целые слои, что уж там переменную класса скрыть или не скрыть
источник

МФ

Максим Федоров... in symfony
кстати, вы верно подметили "объединили" — это синоним абстракции, прячем (скрываем) детали, публикую только нужный интерфейс программы — существенные оставляем, несущественные прячем (всю механику по сути), очерчивая границы взаимодействия
источник

МФ

Максим Федоров... in symfony
да, для простоты, прячем не всегда супер-надежно
источник

QQ

Qwert Qwertinsky in symfony
любой термин - он имеет более или менее понятные смыслы в привязке к контексту. Темы про data hiding  и инкапсуляцию - традиционно всплывают в контексте ООП парадигм. В целом то что писал выше - это в контексте именно ООП.  Рассматривая термин инкапсуляция в рамках других контекстов(например слоев) - нужно сначала очерчивать границы, этих самых контекстов.

Если же говорить именно про ООП - то для понимания сторонников выделяющих data hiding  в отдельный термин - можно рассмотреть пограничные случаи , как привел пример выше  ->  php 4 - инкапсуляция на уровне языка  есть, а скрытия данных на уровне языка  нет.

Ну или js - инкапсулировать в объекте данные и действия - можно - и это заложено на уровне языка. А скрывать данные можно  только с бубном - так как явно указать privtate/protected нельзя.
источник

SP

Sergey Protko in symfony
ты про кастыли которые в плюсах сделали?
источник

МФ

Максим Федоров... in symfony
я с вами и согласен и понимаю о чем вы говорите, я не согласен отделения слова инкапсуляция от сокрытия, в общей поставноке

инкапсулирвоать (спрятать)
- можем целую абстракцию (Driver в DBAL спрят, но это абстракция и она есть),
- может инкапсулирвоать (спрятать)  поведение (в фабрику реквестов спрятали всю внутрянку создания Request),
- можем спрятать детали отправки почты, инкапсулировав все в абстракцию отправителя
- можем спрятать состояние (если можем) сущности например доктриновской

вот про последнее — решили отделить, то есть инкапсуляция данных не всегда возможна, чем мы не достигаем полной инкапсуляции в рамках определения сокрытия... и выделили этот момент с отдельным названием, ну ладно... понятно зачем, понятном почему

не понятно, почему от инкапсуляции, что есть сокрытие по своей сути в глобальном понимании отобрали слово "сокрытие" наши коллеги (при этом доебываются до слов, умничая, что мол "это не инкапсуляяяция, ты дурак")
источник

QQ

Qwert Qwertinsky in symfony
почему только в плюсах, костыли сделали и в php и java. Да и за давностью лет хрен поймешь, что костыль, а что нет. Кей вообще топил за то что природа ооп подхода - требует возможности обмена сообщениями между объектами , а на классы ему было как то эээ никак. А в итоге классы есть , а поддержки сообщений на уровне языка - нет. Считать ли ту же яву или пых костыльным языком из за этого хз .
источник