Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • AlexKud AlexKud 26 постов
  • StariiZoldatt StariiZoldatt 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Инкапсуляция

6 постов сначала свежее
260
ghazan
ghazan
1 месяц назад
IT-юмор

Если вас кто-то спросит, что такое враппер⁠⁠

IT юмор Инкапсуляция Обертка Пирог Тесто Начинка Видео Без звука Вертикальное видео Короткие видео
58
13
0sadchi
0sadchi
1 год назад
Лига Разработчиков Видеоигр

С++ основы: ТИПЫ, ССЫЛКИ, КЛАССЫ, СПЕЦИАЛЬНЫЕ ФУНКЦИИ, ИНКАПСУЛЯЦИЯ, НАСЛЕДОВАНИЕ, КВАЛИФИКАТОРЫ, СПЕЦИФИКАТОРЫ, ПРИВЕДЕНИЕ, ШАБЛОНЫ⁠⁠

C++ YouTube Ссылка Классы Инкапсуляция Наследование Видео
17
16
DELETED
4 года назад
Котомафия

IT-кот 10. Скрытность на 100⁠⁠

Человеки при всей их обычности обладают сильным колдунством - иначе как объяснить почему лоток снова опустел? IT кот готов передать власть над материей в руки простых котов. Вот это, конечно, да....

IT-кот 10. Скрытность на 100 IT, Кот, Образование, Инкапсуляция, Скрытность, Длиннопост

Для ЛЛ или тех кто не боится заклинаний на древней латыни (ну почти латыни) пример кода, использующийся в посте теперь буду выкладывать в верхней его части, выделив в рамочку (иначе его никто больше не выделит в рамочку). Пример колдунства лежит здесь.

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

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

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


Кто такая публика? Это либо другие разработчики, которые пытаются использовать ваш класс в своей работе, либо вы сами через пару месяцев, забыв что в вашем коде от чего зависит.

Первым шагом к инкапсуляции является выделение вышеобозначенных ролей. Для этого каждый элемент класса помечается модификаторами: public (для всех) и private (для частного использования). Также распространен модификатор protected, который позволяет использовать элемент класса самому этому классу, а также всем его потомкам. Если модификатор не указывать, то по умолчанию выставляется самый высокий модификатор (ограничивающий область использования больше всех) - private.

Итак, первая цель - защита чувствительных данных в классе.

Очевидно, что в случае с котом чувствительными данными будет имя - ведь ты не хочешь быть барсиком, когда ты сэр. Возьмем примеры из предыдущих постов (а именно из IT-кот 7. Классовое неравенство и IT-кот 9. "Му" говорит виртуальный кот) можно модифицировать, указав, что имя кота можно менять только в классе кот:

private string _name;

Теперь любая попытка обратиться к коту будет запрещена компьютером и ничего работать не будет. Хотя ладно, пусть обращаются, только с должным почтением, поэтому позволим получать наше имя в отдельном методе:

public string GetName()

{

return "его Величество, " + _name;

}

В отличие от прочих методов этот возвращает тип строку (для указания что конкретно необходимо возвратить используется ключевое слово return).

Ну и перепишем перечисление проживающих в доме котов:

Cat cat = animal as Cat;

Console.Write(cat.GetName());

Console.Write(", ");

Итого, мы смогли упростить метод перечисления (на одну строку), вынести способ обращения внутрь класса Cat и позволить тем самым котам самим определять то, как к ним обращаются.

Ну ладно, это все удобно, но IT-кот власть за счет сокрытия всего сущего. Как же этого добиться? С помощью личных методов. Очевидно, что личным методом котов является тыгыдык, опишем его так: private void DoTygydyk(). Теперь тыгыдык как бы есть, но его как бы нет совсем. Даже в методе Show (который знает, где кот, а где животное) не получиться кота попросить сделать тыгыдык.

Когда происходит тыгыдык? Всегда, но разве что не в момент создания кота. Поэтому перед каждым действием в классе Cat надо вызвать случайный тыгыдык.

IT-кот 10. Скрытность на 100 IT, Кот, Образование, Инкапсуляция, Скрытность, Длиннопост
Показать полностью 2
[моё] IT Кот Образование Инкапсуляция Скрытность Длиннопост
0
7
YaTozheNeRobot
YaTozheNeRobot
7 лет назад

Четыре кита ООП простыми словами⁠⁠

Это будет полезно тем, кто только начинает свой объектно-ориентированный путь.

Собственно, представим себе рядом стакан, кружку, чайник, кофемашину, велосипед и скейт. Что между ними всеми общего? Ну как минимум то, что они есть. То есть это - объекты, которые были созданы. Но как они были созданы? Скорее всего на заводе производителя по чертежам. Ок, чертежём назовём конструктор. Ну а класс? А что это такое? А его нет в нашей вселенной - эта сущность есть абстракция, что живёт лишь в наших мыслях. В реальном мире её нет и никогда не будет, такова уж физика - ей по барабану, что птицы и млекопитающие имеют дальних родственников - она лишь обеспечивает возможность естесственного отбора. А уж родственников друг другу находим мы, люди.


С объектами и классами разобрались, а что же там с нашими стаканами и велосипедами. Мы уже поняли, что всё это объект, то есть грубо можно все объекты наследовать от какого-нибудь суперпредка, суперкласса, что и реализовано в некоторых языках. Но что другого общего между скейтом и стаканом, например? Конечно, можно углубляться и считать, что они все из молекул, и они все из твёрдых веществ. Однако это всё бред и СПГС, так что ответ прост - да ничего. То есть это совершенно разные объекты с совершенно разным функционалом. Более того - естесственно компьютерные модели и иерархии будут сильно отличатся от физик и химий. И это нормально, вопрос об адекватностях моделей ставиться лишь когда модель неадекватна, а до тех пор пилить можно что угодно, лишь бы работало.


Вот. У нас есть супер-предок Object, от которого дефолтно наследуются все объекты. Допустим, то что объекты состоят из атомов и есть то, что наследуют все объекты. Но все дополнения и правки - полиморфизм. Так, из атомов мы слепили колёса и приделали на доску - ок, это скейт. На него можно встать и катиться, а сильно извернувшись и полетать в трёх метрах над землёй, прямо таки излучая своё яркое эго. В то время как стакан - это мы слепили из атомов плотную ёмкость, из которой вода не выливается под действием силы тяжести. И прямое применение стакана - налив воды опрокинуть его над ртом, чтобы вода вытекла прямо в желудок. Так делают настоящие пацаны, не заботясь об икоте или страхе утонуть, так что вот - полиморфизм.


Однако что с остальным? У нас ещё абстракция, инкапсуляция и наследование. Ок, начнём с наследования, так оно наиболее близко. Вот что у нас общего между стаканом и кружкой? Ну в оба можно налить воду, но у кружки есть ручка чтобы держаться. То есть можно придумать некий общий класс - ёмкость. Однако что это за класс? Можно например за этот класс взять стакан, тогда все ёмкости по дефолту стаканы, а всё остальное - видоизменённые стаканы. Но кому-то больше нравяться кувшины, например некоторые чики насят их на голове, считая что это удобно. Ну и пусть носят, но как-то же решить надо, что главнее и идеальнее. Так вот - недостяжимый идеал и есть главный - это называется абстрактный класс. То есть ёмкость, что невозможно создать, для которого нет полного чертежа. А все чертежи, что дополнили до полного - есть наследованные классы от класса ёмкость.


Тут мы подошли к абстракции. Вот такое иерархическое наследование приводит нас к, возможно главной, идее ООП. Вот мы взяли и выделили всё, куда можно налить воду в отдельный класс, нарисовали общий чертёж, но специально не доделали его, оставив зазор для будущих творцов, и назвали чертёж - ёмкость. Тысячи лет изобретатили всех миров создают свои ёмкости, одна лучше другой. Для разных людей - по разному, конечно. Но каждый раз группировать молекулы стекла определённым образом - непростая задача. Поэтому ремесленники пошли на хитрость, они создали тайный совет ремесленников мира и решили делиться друг с другом своими наработками. То есть создавать мелкие чертежи и объявлять классом, например, извлистой ручки в форме ленты Мёбиуса, например. Возможно такая ручка удобно только инопланетным существам, но чертёж создан и к нему можно ссылаться при создании своего чертежа. Таким образом мы абстрагируемся от низкоуровневой задачи "формирования ёмкостей посредством перемещения молекул" к "конструированию ёмкости посредством совмещения деталей, элементов". Это и есть абстракция.


Но мы подошли к последнему пункту - инкапсуляция. Она неразрывна с абстракцией, и по сути благодаря ей она и работает. Инкапсуляция - это своеборазный клей (или синяя изолента), которым склеивают разные чертежи в один. То есть совмещение деталей для создания своей - это и есть инкапсуляция. Причём при совмещении мы можем не описывать детали этого совмещения (то есть члены класса могут быть приватными), таким образом помогая абстрагироваться тем, кто этот чертёж использует. Вот посмотрим на чайник - что это такое? Это стакан (или кружка) к которому снизу (а может внутри по середине?) приклеен нагревательный элемент. Пустив по нему ток, согласно инкапсулированному в нагревательный элемент закону Ома, будет выделяться тепло и нагреваться вода. А кофемашина? Это куда более сложное устройство, с множеством насосов, ёмкостей, шлюзов, измельчителей и чайников. И всё склееное клеем. А может синей изолентой. Это снова инкапсуляция.


Таким образом, абстракция невозможна без инкапсуляции и наследовании, как невозможен полиморфизм без, собственно, наследования. Ну а полиморфизм невозможен ещё и без инкапсуляции, которая банально бесполезна без наследования и полиморфизма. Вот такие тут треугольники с пирогами. Жаль только про пирог наврали. И про день рожденье.

Ссылка на комментарий: https://toster.ru/answer?answer_id=353361

Показать полностью
Ооп Программирование Полиморфизм Абстракция Наследование Инкапсуляция Класс Длиннопост Текст
2
slipperyoverlord
slipperyoverlord
8 лет назад

Инкапсуляция⁠⁠

Мобильному шиномонтажу тоже нужен шиномонтаж

Инкапсуляция Шиномонтаж, Фотография, Инкапсуляция
[моё] Шиномонтаж Фотография Инкапсуляция
4
1813
elDaniel
elDaniel
9 лет назад

Когда понимаешь, что твой код дерьмо⁠⁠

Когда понимаешь, что твой код дерьмо
[моё] Объявление Работа Безысходность Полиморфизм Наследование Инкапсуляция
62
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии