Добрый день, вот уже не первый раз оставляю комент под видео) Спасибо большое за понятное объяснение) Вот смотрел видео по поводу Абстрактных классов, есть антагонист абстрактных классов это протоколы, очень хотелось бы послушать видео на эту тему, а также сравнения протоколов с абстракцией
и да в С/C++ а Джаве тем более - если у кода есть доступ до бинарного представления объекта то сокрытие в этом смысле нет - Сокрытие это как и статические типы в компилируемых языках - сервис который предоставляется компилятором а не рантаймом(интрепретатором расширяющим хост машину нужными свойствами времени исполнения) для более раннего контроля - ваще этикет(а протоколы доступа это и есть этикет взаимодействия с инфо-сущьностями) тем и полезен, что уменьшает возможное пространство состояний - всё по классике из goto considered harmfull :)
До изучения ООП в python всегда тоже думал, что инкапсуляция связана именно с сокрытием данных. Скорее всего сказалось обучение в универе, где на курсах по плюсам, шарпу и джаве именно про это и говорилось. И это казалось логичным, так как в голове я всегда представлял инкапсуляцию от in capsule - то есть в капсуле, защищенной от внешних воздействий. Но получается, что это не совсем так, и в принципе инкапсуляция позволяет просто упаковать данные и интерфейс так, как это задумывается, с учетом тех данных и методов, которые не задумывались как общедоступные для рядового пользователя (поправьте, если ошибся, пожалуйста) Вообще я всегда думал, что инкапсуляция это что-то против злых людей, которые хотят данные узнать или нашкодить, но походу это не совсем так
всё верно, мне тоже во время учёбы в универе казалось, что мы скрываем данные от каких-то "злоумышленников")) на самом деле мы скрываем не сами данные, а внутреннюю логику реализации всего класса, чтобы полностью контролировать процесс взаимодействия с объектом, вы всё верно расписали
терминологически Агрегация предшествовала и когда и АТД (clu привет) ужо были. ведь инкапсуляция (в ру предшественик капсуль в известно чём да и капсула с чем либо либо капсула спускаемого аппарата тож намекает какбе) - ООП хайп при той ещё хрупкой мат опоре - даже структурное программирование (да да теорема Боема-Якопини) за несколько десятилетий дало и культ и норм инженерную практику - ща вон наследование везде той же агрегацией лучшие дома рекамендуют замещать ваще Сокрытие оно бывает полезным в первую очередь для снижения графа связности
извиняюсь, можно ли подробнее объяснить смысл слова "интерфейс"...? (для новичков...) по смыслу его можно заменить на слово "описание" или это все же скорее шаблон для реализации методов в классах-наследниках?
в самом широком смысле интерфейс это просто набор описаний всех поведений класса (имена методов плюс количество аргументов в них), в более узком смысле можно трактовать имеено так, как вы написали, шаблон для реализации
интересно, но все же более интересует момент, а как думают сами разработчики пайтона (например в вашем отделе)? если я на собеседовании скажу, что инкапсуляция это не только сокрытие, а нечто больше, но что инкапсуляция включает в себя сокрытие, со стороны человека, который будет меня собеседовать, это будет как больше плюс или как минус ? Собственно говоря в чем вопрос мой, есть такие вещи над которыми разработчики могут спорить постоянно и единого ответа нет, а есть все же вещи, на которые есть единый правильный ответ. Инкапсуляция относится к первому или ко второму ?
и к первому, и ко второму) я рекомендую пользоваться более широким определением в стиле "предоставление интерфейса для работы с данными", и дополнительно пояснить, что сюда входит и сокрытие данных тоже, несмотря на то, что в пайтон оно номинальное на интервью наша цель всё-таки пройти интервью, лучше бить по площади))
Хм... теперь понятно, почему питон не любят безопасники. Я вот базист, пишу на PL/SQL, и у меня в пакете (во многом аналог объекта) может скажем быть приватный метод, который делает что-то серьёзное, например, очищает/перезаливает таблицу, заданную в параметре. А зовётся он из публичной процедуры, которая проверяет к примеру, что запрошенная таблица у меня в списке разрешённых. И вот я даю права на исполнение такого объекта некоторому пользователю. У меня чётко прописано что достучаться до очистки можно только через проверку. Иначе у пользователя, которому выданы эти права, не выйдет. А в питоне, получается, таких гарантий нет, и любой кулхацкер сотворит что угодно. Нет?
В пайтон такую же ситуацию спокойно можно организовать, возможность получить куда-то доступ мимо инкапсуляции всегда есть только у программиста, как уж он напишет, так и пользователь потом будет ходить. А безопасники могут не любить пайтон, потому что он интерпретируемый, можно легко исходники программы восстановить.
это хороший вопрос, я бы советовал в целом так и говорить - инкапсуляция это принцип хранения всех параметров объекта в рамках одного контейнера и предоставление интерфейса для взаимодействия с параметрами/контейнером, этот интерфейс определяет способы взаимодействия и в том числе сокрытия данных но вообще я к процессу интервью подхожу демократично, лично мне можно что угодно говорить)
@@pythonclinic ну вот про сокрытие данных это же не так)))) скрываем то реализацию, мы предостовляем api к примеру с методом calc_distance, а как эта дистанция считается не показываем Или еще один пример висят часы на стене показывают время, а как это время считается никто не знает кроме производителя
Наконец-то я увидел понятное видео про инкапсуляцию, спасибо большое!)
всегда пожалуйста)
Добрый день, вот уже не первый раз оставляю комент под видео)
Спасибо большое за понятное объяснение)
Вот смотрел видео по поводу Абстрактных классов, есть антагонист абстрактных классов это протоколы, очень хотелось бы послушать видео на эту тему, а также сравнения протоколов с абстракцией
добавил в свой список)
и да в С/C++ а Джаве тем более - если у кода есть доступ до бинарного представления объекта то сокрытие в этом смысле нет - Сокрытие это как и статические типы в компилируемых языках - сервис который предоставляется компилятором а не рантаймом(интрепретатором расширяющим хост машину нужными свойствами времени исполнения) для более раннего контроля - ваще этикет(а протоколы доступа это и есть этикет взаимодействия с инфо-сущьностями) тем и полезен, что уменьшает возможное пространство состояний - всё по классике из goto considered harmfull :)
До изучения ООП в python всегда тоже думал, что инкапсуляция связана именно с сокрытием данных. Скорее всего сказалось обучение в универе, где на курсах по плюсам, шарпу и джаве именно про это и говорилось. И это казалось логичным, так как в голове я всегда представлял инкапсуляцию от in capsule - то есть в капсуле, защищенной от внешних воздействий. Но получается, что это не совсем так, и в принципе инкапсуляция позволяет просто упаковать данные и интерфейс так, как это задумывается, с учетом тех данных и методов, которые не задумывались как общедоступные для рядового пользователя (поправьте, если ошибся, пожалуйста)
Вообще я всегда думал, что инкапсуляция это что-то против злых людей, которые хотят данные узнать или нашкодить, но походу это не совсем так
всё верно, мне тоже во время учёбы в универе казалось, что мы скрываем данные от каких-то "злоумышленников")) на самом деле мы скрываем не сами данные, а внутреннюю логику реализации всего класса, чтобы полностью контролировать процесс взаимодействия с объектом, вы всё верно расписали
терминологически Агрегация предшествовала и когда и АТД (clu привет) ужо были. ведь инкапсуляция (в ру предшественик капсуль в известно чём да и капсула с чем либо либо капсула спускаемого аппарата тож намекает какбе) - ООП хайп при той ещё хрупкой мат опоре - даже структурное программирование (да да теорема Боема-Якопини) за несколько десятилетий дало и культ и норм инженерную практику - ща вон наследование везде той же агрегацией лучшие дома рекамендуют замещать
ваще Сокрытие оно бывает полезным в первую очередь для снижения графа связности
👍👍👍👍
извиняюсь, можно ли подробнее объяснить смысл слова "интерфейс"...? (для новичков...) по смыслу его можно заменить на слово "описание" или это все же скорее шаблон для реализации методов в классах-наследниках?
в самом широком смысле интерфейс это просто набор описаний всех поведений класса (имена методов плюс количество аргументов в них), в более узком смысле можно трактовать имеено так, как вы написали, шаблон для реализации
@@pythonclinic спасибо!
интересно, но все же более интересует момент, а как думают сами разработчики пайтона (например в вашем отделе)? если я на собеседовании скажу, что инкапсуляция это не только сокрытие, а нечто больше, но что инкапсуляция включает в себя сокрытие, со стороны человека, который будет меня собеседовать, это будет как больше плюс или как минус ? Собственно говоря в чем вопрос мой, есть такие вещи над которыми разработчики могут спорить постоянно и единого ответа нет, а есть все же вещи, на которые есть единый правильный ответ. Инкапсуляция относится к первому или ко второму ?
и к первому, и ко второму) я рекомендую пользоваться более широким определением в стиле "предоставление интерфейса для работы с данными", и дополнительно пояснить, что сюда входит и сокрытие данных тоже, несмотря на то, что в пайтон оно номинальное
на интервью наша цель всё-таки пройти интервью, лучше бить по площади))
Хм... теперь понятно, почему питон не любят безопасники.
Я вот базист, пишу на PL/SQL, и у меня в пакете (во многом аналог объекта) может скажем быть приватный метод, который делает что-то серьёзное, например, очищает/перезаливает таблицу, заданную в параметре.
А зовётся он из публичной процедуры, которая проверяет к примеру, что запрошенная таблица у меня в списке разрешённых. И вот я даю права на исполнение такого объекта некоторому пользователю.
У меня чётко прописано что достучаться до очистки можно только через проверку. Иначе у пользователя, которому выданы эти права, не выйдет.
А в питоне, получается, таких гарантий нет, и любой кулхацкер сотворит что угодно. Нет?
В пайтон такую же ситуацию спокойно можно организовать, возможность получить куда-то доступ мимо инкапсуляции всегда есть только у программиста, как уж он напишет, так и пользователь потом будет ходить. А безопасники могут не любить пайтон, потому что он интерпретируемый, можно легко исходники программы восстановить.
скину своему другу "старообряднику", который именно так и говорит слово в слово "Python не поддерживает ООП, в нём же нет инкапсуляции".)
начиная с версии 3.0 Python и ООП это синонимы)
Как на интервью тебе рассказать, что такое инкапсуляция???
это хороший вопрос, я бы советовал в целом так и говорить - инкапсуляция это принцип хранения всех параметров объекта в рамках одного контейнера и предоставление интерфейса для взаимодействия с параметрами/контейнером, этот интерфейс определяет способы взаимодействия и в том числе сокрытия данных
но вообще я к процессу интервью подхожу демократично, лично мне можно что угодно говорить)
@@pythonclinic ну вот про сокрытие данных это же не так)))) скрываем то реализацию, мы предостовляем api к примеру с методом calc_distance, а как эта дистанция считается не показываем
Или еще один пример висят часы на стене показывают время, а как это время считается никто не знает кроме производителя
хорошая формулировка, вы приняты))