Это может быть повторяющийся вопрос, но я еще не нашел ответа.
Инкапсуляция:
Инкапсуляция — это метод, позволяющий сделать поля в классе приватными.
и предоставление доступа к полям с помощью общедоступных методов. Если поле
объявлен закрытым, к нему не может получить доступ никто, кроме класса,
тем самым скрывая поля внутри класса. По этой причине инкапсуляция также называется скрытием данных
Инкапсуляция:
«Это […] относится к созданию капсулы, в случае концептуального барьера, вокруг некоторой коллекции вещей». — [Wirfs-Brock et al, 1990]
«Как процесс, инкапсуляция означает действие по включению одного или нескольких элементов в […] контейнер. Инкапсуляция, как объект, относится к пакету или вложению, которое содержит (содержит, включает в себя) один или несколько элементов».
«Если инкапсуляция была« тем же самым, что и сокрытие информации », то можно утверждать, что« все, что было инкапсулировано, также было скрыто ». Это не очевидно, не правда «.
С кем мне пойти? Или я неправильно понял определение?
Главное, что это не имеет значения. Любой может определить термин немного по-другому, и, как правило, разные авторы адаптируют значение к различным контекстам, в которых они используют эти термины.
Вы не получите никакого просветления, пытаясь понять, кто из них «прав», а кто «неправильн». Цитаты, вырванные из контекста, особенно неинформативны.
Важным моментом является понимание основополагающих идей без ссылки на словарный запас, используемый для их обозначения.
Существует разногласие относительно того, должно ли определение инкапсуляции включать скрытие данных, так что это будет ответ исключительно с точки зрения мнения. Я считаю, что последние определения являются более правильными, поскольку сокрытие данных не является уникальным для ОО-программирования. Это отдельная функция, которая не исключает инкапсуляцию, которая заключается в связывании функций / методов с набором переменных. Фактически, сокрытие данных было отличительной чертой раннего модульного программирования в таких языках, как C и Pascal.
Первое определение очень ориентировано на Java. Второй более общий. Оба верны. Что касается того, с кем идти, это субъективный вопрос. Так как оба верны, я бы предложил пойти с тем, который вы предпочитаете …
Инкапсуляция — это больше, чем просто сокрытие данных. Это разъединяет внутреннее представление данных а также реализация из открытого интерфейса. Благодаря инкапсуляции, до тех пор, пока вы не нарушите контракт интерфейса, вы можете изменить внутреннюю реализацию так, чтобы об этом никто не знал. Так что я бы сказал, инкапсуляция = скрытие данных + скрытие реализации.