2016-08-30 4 views
0

Теперь я знаю, что есть море статей и вопросов, связанных с этим, и, пройдя большую часть этого, мне нужно знать, насколько я понимаю.Является ли мое понимание абстракции, инкапсуляции и их отношений правильными?

Абстракция: Способ решения сложностей. В основном мы определяем минимальные требования, а не несущественные детали. Упрощение.

Инкапсуляция: Процесс упаковки вещей в один черный ящик. Черный ящик предлагает разные услуги, но все привязано к одному блоку.

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

В терминах программирования: Интерфейсы и абстрактные классы используются для определения абстрактных концепций. Конкретным классом, который расширяет или реализует их, является наш черный ящик (инкапсуляция). Аксессоры, мутаторы и модификаторы используются для улучшения черного ящика. Итак, в основном, насколько хороша наша инкапсуляция, зависит от того, насколько хороша наша абстракция.

ответ

1

Ну, вы понимаете, что понятия кажутся мне полезными. Единственное, что я добавил бы, это то, что инкапсуляция не «сама по себе» обязательно связана с абстракцией. В ООП инкапсуляция относится к внутреннему состоянию объектов, даже если они не расширяют абстрактный суперкласс или не реализуют интерфейс.

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

Это означает, что инкапсуляция является требованием абстракции: если вы не «инкапсулируете» то, что хотите абстрагировать, это означает, что вы предлагаете конкретную реализацию, которая остается неизменной для всех объектов, которые расширяются/реализуем его, теряя при этом любую абстракцию.

Смежные вопросы