В чём разница между инкапсуляцией и сокрытием ?

23 ответов

7 просмотров
Fuhrerbox 360-[Xbox 360] Автор вопроса

Я не понял просто

Fuhrerbox 360-[Xbox 360] Автор вопроса

тип я понял, что сокрытие вроде часть инкапсуляции, но что там ещё есть я не вдуплил из определения и примера

Fuhrerbox 360 [Xbox 360]
тип я понял, что сокрытие вроде часть инкапсуляции...

Инкапсуляция это например публичные свойства, ты можешь с ними работать и взаимодействовать при этом не вдаешься в подробности реализации А сокрытие это приватные данные к которым у тебя нет доступа Хотя думаю сколько разрабов столько и пониманий того как это все работает

Fuhrerbox 360-[Xbox 360] Автор вопроса
Никита
Инкапсуляция это например публичные свойства, ты м...

Ещё интересная интерпретация - инкапсуляция - невозможность сломать класс извне

Fuhrerbox 360 [Xbox 360]
тип я понял, что сокрытие вроде часть инкапсуляции...

Инкапсуляция это обеспечение безопасного изменения данных, сокрытие закрывает изменение из вне - значит часть инкапсуляции

Fuhrerbox 360 [Xbox 360]
то есть инкапсуляция это свойства ?

Нет это я тебе как пример привел, по сути везде разное, кто-то утверждает что инкапсуляция это степень доступности данных/методов из других классов, кто-то про то что инкапсуляция это внутренняя валидация данных когда тебе могут в метод отправить условно любое число а он работает с диапазоном от 0 до 100 например

Fuhrerbox 360 [Xbox 360]
аа теперь понял

Инкапсуляция это про объединение данных и логики в единое закрытое целое, целостность состояния которого реализуется за счёт сокрытия

Sleeping Nope
Инкапсуляция это про объединение данных и логики в...

Сейчас ExtreamCode тебе как за сокрытие пояснят.

Александр
Инкапсуляция это обеспечение безопасного изменения...

Сокрытие для инкапсуляции не нужно, это не объязательно

Phantom
Сокрытие для инкапсуляции не нужно, это не объязат...

я и не говорил что обязательно, просто это один из вариантов инкапсуляции

Александр
я и не говорил что обязательно, просто это один из...

А сколько вариантов есть? И почему это вариант инкапсуляции?

Phantom
А сколько вариантов есть? И почему это вариант инк...

А что это тогда если не вариант инкапсуляции? В моем понимании есть разные виды инкапсуляции. К примеру, если ты обьявлешь локальную переменную внутри метода - ты её инкапсулируешь в рамках этого метода, тут сокрытие, никто из вне не может получить эти данные. Если говорить про ООП инкапсуляцию, у неё тоже разные варианты есть, к примеру валидация данных, чтобы X не был меньше 0, то же сокрытие private - protected. Ну есть и другие варианты инкапсуляции, по типу параметров доступа для класса, модификатора sealed, ключевых слов readonly, in (при передачи параметров в метод) и других. В моем понимании инкапсулиция - механизм обеспечения безопасности данных и правильного их использования. А сами эти механизмы бывают разные

Александр
А что это тогда если не вариант инкапсуляции? В мо...

Просто механизм сокрытия и статического анализа

Phantom
Просто механизм сокрытия и статического анализа

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

Александр
почему, обьясни?

Потому что, просто скрывая, ты не инкапсулируешь. Получается, если рандомно натыкаю private или все сделаю private, я молодец? Заинкапсулировал все? И сокрытие не часть инкапсуляции, это отдельный инструмент

Phantom
Потому что, просто скрывая, ты не инкапсулируешь. ...

В реализации большинства языков программирования (C++, C#, Java и другие) обеспечивается механизм сокрытия, позволяющий разграничивать доступ к различным частям компонента. Однако, некоторые языки (например, Smalltalk, Python) реализуют инкапсуляцию, но не предусматривают возможности сокрытия в принципе. Википедия. P.S я не говорил что просто скрывая, ты инкапсулируешь, значит ты невнимательно читал, я наоборот, считаю сокрытие самой простой и банальной версией инкапсуляции. Естественно если у тебя все поля будет private это не решит всех проблем, но если у тебя по дефолту поля private - то да, ты молодец

Phantom
chatgpt?

https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

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

Похожие вопросы

Обсуждают сегодня

Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
Привет, сталкивался кто с такой ситуацией? У меня есть модальное окно Bootstrap, в нем кнопка закрытия: <button type="button" class="btn-close" data-bs-dismiss="modal" aria-...
Виталий
3
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
что это и почему оно? executor.start_polling(bot, skip_updates=True, on_startup=on_startup, File "/usr/local/lib/python3.10/dist-packages/aiogram/utils/executor.py", line 4...
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
2
Окрошка! На квасе или кефире или на пиве?!
Akcium Сергей
4
Кто-то юзал insomnia? Удобная штука ужас
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
3
А что насчет FluentValidation? тоже ведь есть альтернатива у МС.
devman
13
Напомните пожалуйста, v1.1 работает на PHP 8.2?
Ross
7
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Ребят, всем привет) Кто юзал/юзает Postgres? Я на MySQL сделал простенький сайт для диплома, но я внезапно обнаружил условие что надо было на Postgres) Проблема в том, что я н...
Dororo Steeeve
4
Карта сайта