Абстракция и инкапсуляция

Anonim

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

Что такое абстракция?

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

Давайте рассмотрим реальный пример абстракции. Давайте рассмотрим случай транспортного средства, которое в данном случае является вашим автомобилем. Механик пытается ремонтировать ваш автомобиль или, скажем, определенную часть вашего автомобиля. Здесь вы являетесь пользователем, и вы не хотите вникать в специфику своего автомобиля или какую часть на самом деле сломалась. Вы на самом деле не заботитесь об этих вещах; вы просто хотите, чтобы ваш автомобиль вернулся в исходное состояние, не беспокоясь о деталях. Итак, вы на самом деле сказали механику, что хотите, разделив часть реализации. Это абстракция. Вы сосредоточены на самой важной вещи, которая фиксирует ваш автомобиль, а не фокусируется на специфике.

Что такое инкапсуляция?

Инкапсуляция - еще одна концепция ООП, которая связывает данные и функции в единый компонент, ограничивая доступ к некоторым компонентам. Это одна из основных фундаментальных концепций ООП, которая обертывает данные и информацию под единым блоком. С технической точки зрения, инкапсуляция означает скрытие атрибутов для защиты переменных от внешнего доступа, так что изменение одной части приложения не повлияет на другие части. Напротив, делая информацию более открытой, вы рискуете злоупотреблять данными. Он обеспечивает базовую целостность данных, защищая их от внешнего мира. Проще говоря, он скрывает дополнительные детали из внешнего мира.

Давайте возьмем пример мыши Bluetooth. Вам нужно только знать о поведении устройства, не беспокоясь о деталях реализации, например о том, какие датчики имеют мышь, беспроводны или нет, и т. Д. Каждая деталь описывает мышь, но независимо от деталей, это всего лишь мышь. Вам просто нужен интерфейс для использования мыши, который в этом случае является указателем мыши. Это инкапсуляция.

Разница между абстракцией и инкапсуляцией

Хотя оба являются фундаментальными понятиями, связанными с ООП, и они технически неотделимы, они по-прежнему имеют свои различия во многих аспектах.

  1. Различия в «определении» абстракции и инкапсуляции - Абстракция является фундаментальной концепцией ООП, которая подчеркивает все существенные аспекты объекта, скрывая нерелевантные детали для повышения эффективности и устранения сложности. С другой стороны, инкапсуляция представляет собой механизм скрытия данных, который обертывает данные и информацию в капсуле для ограничения доступа из внешнего мира.
  2. Различия в «Функциональности» абстракции и инкапсуляции- Абстракция - это механизм скрытия данных, который выделяет только основные функции, чтобы упростить сложные программы, а с другой стороны, инкапсуляция - это метод привязки данных и кодов к одному объекту. Идея состоит в том, чтобы защитить детали реализации от внешнего доступа.
  3. Различия в «реализации» абстракции и инкапсуляции Абстракция реализуется с использованием абстрактного класса и интерфейса, а инкапсуляция реализуется с использованием модификаторов доступа. Для инкапсуляции данных используются пять типов модификаторов: Private, Public, Internal, Protected и Protected Internal.
  4. Различия в «Концепции» абстракции и инкапсуляцииИдея абстракции заключается в том, чтобы сосредоточиться на чем, а не на том. Инкапсуляция скрывает внутреннюю механику. Например, когда вы управляете автомобилем, вы точно знаете, что делает педаль тормоза, но вы можете не знать весь механизм за ним, потому что данные инкапсулированы.
  5. Различия в «примере» абстракции и инкапсуляции - Давайте возьмем пример смартфона. Вы знаете, что он делает, но вы можете не знать, как он это делает. Вам только заботятся о экране дисплея и кнопках клавиатуры, а не беспокоиться о его внутренней схеме. Здесь смартфон представляет собой тезисы, в которых инкапсулируются внутренние детали реализации.

Абстракция против инкапсуляции с помощью таблицы сравнения

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

Резюме

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