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

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

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

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

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

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

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

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

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

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

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

Абстракция против Инкапсуляции с таблицей сравнения

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

Резюме

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