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

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

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

Видео: Разница между инкапсуляцией и абстракцией
Видео: ТВОЯ ГЛАВНАЯ ОШИБКА В ООП 2024, Июль
Anonim

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

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

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

Инкапсуляция - это процесс объединения данных и операций, которые над ними работают, в единый объект. По сути, это означает, что для доступа к данным должны использоваться определенные предопределенные методы. Другими словами, инкапсулированные данные недоступны напрямую. Это гарантирует сохранение целостности данных, поскольку пользователь не может напрямую обращаться к данным и изменять их по своему усмотрению. Пользователи будут получать или устанавливать значения данных только с помощью методов, которые общедоступны для пользователей. Эти методы обычно обеспечивают проверку данных, поэтому в поля можно вставлять только данные в соответствующем формате. Таким образом, преимущества инкапсуляции тройные. С помощью инкапсуляции программист может сделать поля класса доступными только для чтения или только для записи. Во-вторых, класс может иметь полный контроль над тем, что хранится в его полях. Наконец, пользователям класса не нужно беспокоиться о том, как хранятся его данные. В Java программист может объявить все переменные экземпляра закрытыми и предоставить методы get и set (которые являются общедоступными) для доступа и изменения закрытых полей.

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

Абстракция - это процесс отделения деталей презентации от деталей реализации. Это сделано для того, чтобы разработчик был избавлен от более сложных деталей реализации. Вместо этого программист может сосредоточиться на представлении или деталях поведения объекта. Проще говоря, абстракция фокусируется на том, как можно использовать определенную сущность, а не на том, как она реализована. Абстракция по существу скрывает детали реализации, так что даже если методология реализации изменится со временем, программисту не придется беспокоиться о том, как это повлияет на его программу. Система может быть абстрагирована на несколько слоев или уровней. Например, уровни абстракции низкого уровня раскрывают детали оборудования, а абстракции высокого уровня раскрывают только бизнес-логику объекта. Термин «абстракция» может использоваться для обозначения как сущности, так и процесса, что приводит к некоторой путанице. Как процесс абстракция означает извлечение существенных деталей при игнорировании несущественных деталей элемента или группы элементов, в то время как в качестве сущности абстракция означает модель или представление сущности только с существенными деталями. В Java программист может использовать ключевое слово abstract для объявления класса как абстрактной сущности, которая представляет основные определяющие характеристики сущности реального мира.

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

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

Рекомендуемые: