ТВОЯ ГЛАВНАЯ ОШИБКА В ООП

preview_player
Показать описание
Обсуждаем главную ошибку новичков в ООП на собеседованиях, а именно инкапсуляцию, узнаем чем сокрытие данных отличается от инкапсуляции, а так же поговорим о модификаторах доступа

C (lang) код на GitHub

Книга Роберта Мартина "Чистая архитектура"

Ссылки
Рекомендации по теме
Комментарии
Автор

Да, тут должен быть какой то смешной комментарий, совсем забыл.
Ставь лукас, а то че как бивень


P.S.
3-е сентября пришлось вырезать, дядя Шуфутинский за 10-и секундную вставку бабок хочет

ExtremeCode
Автор

— Какие паттерны ООП вы знаете?
— Костылирование, Инкостыляция и Поликостылизм.

karfagen
Автор

Ничего не понял, но из-за того, что достаточно хорошо кивал головой, теперь учусь в стенфорде

niktosssa
Автор

Кароч, инкапсуляция - это объединение данных и методов работы с этими данными в одной упаковке («капсуле»).
Основа инкапсуляции (капсула) - КЛАСС.

anrybalka
Автор

ОБОЖАЮ когда ты приводишь по 20 аналогий ежесекундно

dudenarima
Автор

Чтобы понять в простых словах что такое инкапсуляция, стоит, возможно, понять, что является её нарушением. Нет, объявление полей объекта вместо приватных публичными - это не нарушение инкапсуляции.

Крайне распространённое нарушение И. - это уверенность в том, что какое-либо из состояний системы вам заранее известно.
- Если вы создаёте метод, держа в уме, что какая-то пропертя в памяти\базе\на фронте\на бэке будет именно такой;
- Если вы умело полагаете что, "в основном", данный метод вызывается лишь когда был вызван иной из другой части программы
- Если вы уверены что реализация слоя на ваш выбор всегда будет такой как сейчас
- И даже если вы наделяете переменную свойствами, которые ей не гарантированы - "эта переменная не может быть НУЛЛ" - "в этой строке по-любому можно вставить значение форматированием" - "пользователь не идиот и знает регекспы"
то вы нарушаете инкапсуляцию в каком-то очень глобальном масштабе.

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

wwlb
Автор

Суть такова, что тебе не нужно знать как работает автомобиль для того, чтобы пользоваться его интерфейсом (рулевым колесом, рычагом кпп, и педалями), т.к. внутреннее устройство инкапсулировано. Говорю этот пример на собесах и норм :)

IIEPEDO
Автор

Код, написанный на С в начале ролика, как пример НЕинкапсуляции, полностью удовлетворяет "понятному и полному" определению инкапсуляции данному на 8:22

MsRomanFed
Автор

Недопусти этой ошибки на собеседовании! "Не" с глаголами пиши раздельно!

P.S. Шучу. Не смог удержаться. :-D

grustnyia
Автор

можно не смотреть видео полностью, 8:14 мин главная суть.

getteg
Автор

тот случай когда до видео знал тему а после засомневался что знал из-за сложной подачи автором и остановил видео чтобы найти в интернете принципиальную схему котЭ ))

iceEnceladus
Автор

раньше я не очень-то понимал что такое инкапсуляция. Теперь понял, что вообще ничего не понимаю!

РоговТимур
Автор

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

andreyshostik
Автор

Чувак, как хорошо, что твое видео попало ко мне в рекомендации. Завтра иду на собеседование, теперь надеюсь, что меня спросят про инкапсуляцию. И только про нее:)

АнтонЛапин-ед
Автор

Оооо, сё, пойду пиздить препода по проге, который говорит, что инуапсуляция = сокрытие(вызовите скорую, пожалуйста, у меня дома рыбка живёт ещё)

vebyza
Автор

1:31 - Мое лицо, когда меня (15+ лет в деве), начинают спрашивать на собеседовании, что такое "инкапсуляция"... И делает это, какой-нибудь HR, которому "правильный ответ", написали на бумажке.

konstd
Автор

Всегда орал с людей, которые пытаются найти глубокий смысл там, где его нет.

ВаняЖуков-ль
Автор

Как-то столкнулся с таким же недопониманием Инкапсуляции на всоём первом собеседовании. Я тогда у Моженкова посмотрел видос об ООП и почерпнул этот дзен об Инкапсуляции у него. Решил блеснуть на собеседовании, но как-будто о стену ударился. Выпускайте, пожалуйста, видосики почаще!!!!

serhiyhrytsiuk
Автор

Пример на C если что и продемонстрировал, то только не отсутствие языковой поддержки ООП в C. Отладчик студия не дал доступа к полям структуры исключительно по меркантильным соображениям, и никакое ООП тут ни при чём. Зато он прекрасно показал "подкованность" автора в механизмах ООП, где последнее П – это Проектирование, а не программирование. Последующий пример на Шарпе окончательно добил. Эх... а как обнадёживающе начинался видос...

Qraizer
Автор

Сокрытие требуется чтобы не допустить некорректное обращения к методам и членам объекта. Например, в XRay есть вектор который надо инициализировать перед прочтением. Значит закрываем его protected, а get у него конечно public, и всё, никаких проблем не имеем. А если вектор будет так же public, то можем иметь ошибки которые могут быть достаточно трудно обнаруживаемые, если другой программист который не в курсе проблемы, будет использовать этот член объекта напрямую.

LithiumDeuteride-