Абстракция и инкапсуляция - это базовые концепции объектно-ориентированного программирования (ООП), которые позволяют реализовывать объекты реального мира в программах и кодах. Хотя оба идут рука об руку, они сильно отличаются друг от друга. Хотя каждый метод является инкапсуляцией, он также является абстракцией. Проще говоря, когда вы объединяете разные вещи для создания сущности, вы фактически создаете концепцию - абстрактную. Хотя оба они технически неразделимы, они буквально не имеют ничего общего. Это почти правда, что каждая инкапсуляция является абстракцией, потому что они оба что-то скрывают, однако, у них есть своя справедливая доля отличий.
Абстракция - это базовая концепция ООП, которая фокусируется только на соответствующих данных объекта и скрывает все несущественные детали, которые могут относиться или не относиться к общему или специализированному поведению. Он скрывает детали фона и акцентирует внимание на основных моментах, чтобы уменьшить сложность и повысить эффективность. По сути, абстракция - это инструмент программирования для управления сложностью. Абстракция фокусируется на идеях, а не на событиях. Он скрывает детали на уровне дизайна, предоставляя пользователям функциональные возможности. Полученный объект также можно назвать абстракцией. Программист удостоверяется, что в названную сущность будут включены все существенные аспекты и ни один из не относящихся к делу.
Давайте возьмем реальный пример абстракции. Давайте рассмотрим случай транспортного средства, которое в данном случае является вашим транспортным средством. Механик пытается отремонтировать ваш автомобиль или, скажем, определенную часть вашего автомобиля. Здесь вы являетесь пользователем, и вы не хотите вдаваться в подробности своего автомобиля или того, что на самом деле сломалось. Вы на самом деле не заботитесь об этих вещах; Вы просто хотите вернуть свой автомобиль в исходное состояние, не беспокоясь о деталях. Итак, вы фактически сказали механику, чего хотите, отделив часть реализации. Это абстракция. Вы сфокусировались на самой важной вещи - ремонте вашего автомобиля, а не на специфике.
Инкапсуляция - это еще одна концепция ООП, которая связывает данные и функции в один компонент, ограничивая доступ к некоторым компонентам. Это одна из основных фундаментальных концепций ООП, которая объединяет данные и информацию в единое целое. С технической точки зрения, инкапсуляция означает скрытие атрибутов для защиты переменных от внешнего доступа, чтобы изменения в одной части приложения не влияли на другие части. Напротив, делая информацию более открытой, вы рискуете злоупотреблять данными. Он обеспечивает базовую целостность данных, защищая их от внешнего мира. Проще говоря, он скрывает дополнительные детали от внешнего мира.
Давайте возьмем пример мыши Bluetooth. Вам нужно знать только о поведении устройства, не беспокоясь о деталях реализации, таких как датчики мыши, беспроводная или нет, и т. Д. Каждая деталь описывает мышь, но независимо от деталей, это просто мышь. Вам просто нужен интерфейс, чтобы использовать мышь, которая в этом случае является указателем мыши. Это инкапсуляция.
Хотя оба являются фундаментальными понятиями, связанными с ООП, и они технически неразделимы, они все же имеют свои различия во многих аспектах.
абстракция | Инкапсуляция |
Он имеет дело только с соответствующими деталями, скрывая не относящиеся к делу, чтобы уменьшить сложность, тем самым повышая эффективность. | Он объединяет данные и информацию в единую сущность для защиты данных от внешних источников.. |
Это относится к идее сокрытия данных, которые не требуются для целей представления. | Он скрывает данные и код, чтобы ограничить нежелательный доступ. |
Основное внимание уделяется тому, что, а не как. | Он скрывает внутреннюю механику того, как он что-то делает. |
Он скрывает ненужные детали на уровне дизайна. | Это также скрывает детали, но на уровне реализации. |
Информация и данные отделены от соответствующих данных. | Информация скрыта внутри капсулы для близкого доступа. |
Это касается идей, а не событий. | Идея состоит в том, чтобы защитить данные от внешнего мира. |
Это реализовано с использованием абстрактного класса и интерфейса. | Он реализован с использованием модификаторов защищенного, частного и закрытого пакета доступа. |
Хотя оба понятия являются ООП, связанными с сокрытием данных, они довольно сильно отличаются друг от друга. Абстракция также относится к скрытию подобно инкапсуляции, но, хотя первое скрывает сложность, второе сохраняет данные, которые оно инкапсулирует, контролируя доступ к ним. Абстракция относится к концепции представления только необходимых функций путем сокрытия не относящихся к делу деталей, чтобы уменьшить сложность приложения и, таким образом, повысить эффективность. Инкапсуляция, с другой стороны, относится к концепции сокрытия всей внутренней механики программы, чтобы защитить информацию от нежелательного доступа. Он связывает данные и информацию в один компонент, ограничивая доступ к другим компонентам..