Инкапсуляция против DataHiding?

Это может быть повторяющийся вопрос, но я еще не нашел ответа.

Ссылка 1

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

Инкапсуляция — это метод, позволяющий сделать поля в классе приватными.
и предоставление доступа к полям с помощью общедоступных методов. Если поле
объявлен закрытым, к нему не может получить доступ никто, кроме класса,
тем самым скрывая поля внутри класса. По этой причине инкапсуляция также называется скрытием данных

Ссылка 2

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

«Это […] относится к созданию капсулы, в случае концептуального барьера, вокруг некоторой коллекции вещей». — [Wirfs-Brock et al, 1990]

«Как процесс, инкапсуляция означает действие по включению одного или нескольких элементов в […] контейнер. Инкапсуляция, как объект, относится к пакету или вложению, которое содержит (содержит, включает в себя) один или несколько элементов».

«Если инкапсуляция была« тем же самым, что и сокрытие информации », то можно утверждать, что« все, что было инкапсулировано, также было скрыто ». Это не очевидно, не правда «.

С кем мне пойти? Или я неправильно понял определение?

1

Решение

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

Вы не получите никакого просветления, пытаясь понять, кто из них «прав», а кто «неправильн». Цитаты, вырванные из контекста, особенно неинформативны.

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

3

Другие решения

Существует разногласие относительно того, должно ли определение инкапсуляции включать скрытие данных, так что это будет ответ исключительно с точки зрения мнения. Я считаю, что последние определения являются более правильными, поскольку сокрытие данных не является уникальным для ОО-программирования. Это отдельная функция, которая не исключает инкапсуляцию, которая заключается в связывании функций / методов с набором переменных. Фактически, сокрытие данных было отличительной чертой раннего модульного программирования в таких языках, как C и Pascal.

2

Первое определение очень ориентировано на Java. Второй более общий. Оба верны. Что касается того, с кем идти, это субъективный вопрос. Так как оба верны, я бы предложил пойти с тем, который вы предпочитаете …

1

Инкапсуляция — это больше, чем просто сокрытие данных. Это разъединяет внутреннее представление данных а также реализация из открытого интерфейса. Благодаря инкапсуляции, до тех пор, пока вы не нарушите контракт интерфейса, вы можете изменить внутреннюю реализацию так, чтобы об этом никто не знал. Так что я бы сказал, инкапсуляция = скрытие данных + скрытие реализации.

0
По вопросам рекламы [email protected]