Я не понял просто
тип я понял, что сокрытие вроде часть инкапсуляции, но что там ещё есть я не вдуплил из определения и примера
Инкапсуляция это например публичные свойства, ты можешь с ними работать и взаимодействовать при этом не вдаешься в подробности реализации А сокрытие это приватные данные к которым у тебя нет доступа Хотя думаю сколько разрабов столько и пониманий того как это все работает
то есть инкапсуляция это свойства ?
Ещё интересная интерпретация - инкапсуляция - невозможность сломать класс извне
Инкапсуляция это обеспечение безопасного изменения данных, сокрытие закрывает изменение из вне - значит часть инкапсуляции
аа теперь понял
Нет это я тебе как пример привел, по сути везде разное, кто-то утверждает что инкапсуляция это степень доступности данных/методов из других классов, кто-то про то что инкапсуляция это внутренняя валидация данных когда тебе могут в метод отправить условно любое число а он работает с диапазоном от 0 до 100 например
Инкапсуляция это про объединение данных и логики в единое закрытое целое, целостность состояния которого реализуется за счёт сокрытия
Сейчас ExtreamCode тебе как за сокрытие пояснят.
Сокрытие для инкапсуляции не нужно, это не объязательно
я и не говорил что обязательно, просто это один из вариантов инкапсуляции
А сколько вариантов есть? И почему это вариант инкапсуляции?
А что это тогда если не вариант инкапсуляции? В моем понимании есть разные виды инкапсуляции. К примеру, если ты обьявлешь локальную переменную внутри метода - ты её инкапсулируешь в рамках этого метода, тут сокрытие, никто из вне не может получить эти данные. Если говорить про ООП инкапсуляцию, у неё тоже разные варианты есть, к примеру валидация данных, чтобы X не был меньше 0, то же сокрытие private - protected. Ну есть и другие варианты инкапсуляции, по типу параметров доступа для класса, модификатора sealed, ключевых слов readonly, in (при передачи параметров в метод) и других. В моем понимании инкапсулиция - механизм обеспечения безопасности данных и правильного их использования. А сами эти механизмы бывают разные
Просто механизм сокрытия и статического анализа
да, а механизм сокрытия это часть инкапсуляции, потому что если ты от кого-то что-то сокрываешь = инкапсулируешь
Нет, и нет. Ты не прав
почему, обьясни?
Потому что, просто скрывая, ты не инкапсулируешь. Получается, если рандомно натыкаю private или все сделаю private, я молодец? Заинкапсулировал все? И сокрытие не часть инкапсуляции, это отдельный инструмент
В реализации большинства языков программирования (C++, C#, Java и другие) обеспечивается механизм сокрытия, позволяющий разграничивать доступ к различным частям компонента. Однако, некоторые языки (например, Smalltalk, Python) реализуют инкапсуляцию, но не предусматривают возможности сокрытия в принципе. Википедия. P.S я не говорил что просто скрывая, ты инкапсулируешь, значит ты невнимательно читал, я наоборот, считаю сокрытие самой простой и банальной версией инкапсуляции. Естественно если у тебя все поля будет private это не решит всех проблем, но если у тебя по дефолту поля private - то да, ты молодец
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 для работы с ним. Всё. Это и есть инкапсуляция.
Обсуждают сегодня