Абстракция VS Сокрытие информации VS Инкапсуляция

ОП обновил свой вопрос несколькими encapsulation цитатами, которые он нашел, а abstraction именно в article by Edward V. Berard titled, "Abstraction, Encapsulation, and Information Hiding". Я повторно публикую encapsulation слегка расширенную и переформатированную ooad версию обновления OP, поскольку information-hiding это должен быть ответ сам ooad по себе.

(Все цитаты взяты ooad из статьи, упомянутой выше.)

Абстракция:

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

Скрытие информации:

«Его интерфейс или определение было выбрано, чтобы раскрыть как можно меньше информации о его внутреннем устройстве». - [Парнас, 1972b]

«Абстракцию можно […] использовать как метод определения того, какая информация должна быть скрыта».

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

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

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

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

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

Заключение:

«Абстракция, скрытие информации и инкапсуляция - очень разные, но тесно связанные концепции. Можно утверждать, что абстракция - это метод, который помогает нам определить, какая конкретная информация должна быть видна, а какая - скрыта. Инкапсуляция - это метод упаковки информации таким образом, чтобы скрыть то, что должно быть скрыто, и сделать видимым то, что должно быть видимым ".

encapsulation

abstraction

glossary

ooad

information-hiding

2022-11-03T02:58:17+00:00