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

Опубликовано: 2021-02-09

Оглавление

Введение

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

Кроме того, концепция ООП, такая как наследование, обеспечивает расширяемость кода. Эти концепции полезны для определения абстрактных классов, обновления ранее реализованных кодов, реализации приложения для реальных сценариев.

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

Сначала давайте быстро пройдемся по понятиям абстракции и инкапсуляции.

Абстракция

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

Например, предположим, что нам была поставлена ​​задача создать портал для регистрации на онлайн-курсы, и нам доступны следующие поля данных: {имя, возраст, текущая профессия, название колледжа, название курса, способ оплаты, имя брата или сестры, семейное положение, транспортное средство количество}.

Изучив доступные поля данных, мы поймем, что некоторые из полей не являются обязательными для портала регистрации на курс, такие поля, как {имя брата, сестры, семейное положение, номер транспортного средства} не требуются для регистрации на курс.

Итак, нам нужно быть конкретными и выбирать только релевантные данные. Теперь необходимые поля: {имя, возраст, текущая профессия, название колледжа, название курса, способ оплаты}, это пример абстракции в ООП, потому что мы сопроводили выбранную информацию из целых данных.

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

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

Абстрактный класс отличается от абстракции, абстрактные классы/методы создаются с намерением реализовать их в дочернем классе или подклассе. Принимая во внимание, что абстракция просто скрывает данные и показывает только соответствующие данные с использованием спецификаторов доступа, таких как public, protected, private.

Инкапсуляция

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

Возможно, мы использовали некоторые классические методы в классе, такие как set и get, где метод set используется для обновления или присвоения значения переменной, а метод get используется для чтения или извлечения значения переменной. Здесь мы можем напрямую обращаться к переменным, используя объект этого класса, но если мы хотим сделать переменную частной, мы должны использовать эти настройки и получить методы.

Концепция проста, мы сделаем методы set и get общедоступными, а переменные — приватными. Таким образом, к переменным можно получить доступ только через общедоступные методы вне класса, поскольку частные объекты недоступны вне класса, но доступны внутри класса. Эта концепция связывания или связывания переменных с методами называется инкапсуляцией.

Давайте посмотрим на простую программу Java, чтобы лучше понять это.

класс CourseRegistration {
частная строка имя_студента;
частная строка имя_курса;
публичная строка getName () {
вернуть имя_ученика;
}
public void setName (имя строки) {
это .student_name=имя;
}
общедоступная строка getCourse () {
вернуть имя_курса;
}
public void setCourse (строковый курс) {
это .course_name=курс;
}
}
общественный класс и pGrad {
public static void main (String [] args) {
CourseRegistration c= new CourseRegistration();
c.setName ( «митхун» );
c.setCourse ( «Наука о данных» );
System.out.println(c.getName());
System.out.println(c.getCourse());
}
}

В приведенном выше коде мы создали класс CourseRegistration, где переменные-члены имя студента и название курса являются частными, но мы обращаемся к нему в другом классе, используя имя набора и функции получения имени. В основном классе мы создали объект типа CourseRegistration. Мы инициализируем и получаем доступ к переменным-членам, используя функции set и get.

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

Преимущества абстракции

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

Преимущества инкапсуляции

  • Это помогает связать данные-члены с функциями-членами.
  • Повышает эффективность и удобство анализа ошибок.
  • Предоставляет программисту гибкость в управлении доступностью и прозрачностью данных.

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

Определение

  • Абстракция скрывает детали и реализацию кода.
  • Инкапсуляция скрывает данные и контролирует видимость кода.

Фаза

  • Абстракция — это процесс уровня дизайна.
  • Инкапсуляция — это процесс уровня реализации.

Ключевая способность

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

Вариант использования

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

Как реализовать

  • Абстракция может быть достигнута с помощью классов и интерфейсов в java.
  • Инкапсуляция также реализуется с использованием классов, а контроль над конфиденциальностью данных достигается путем указания спецификаторов доступа, таких как protected, public, private.

Изучайте онлайн -курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Заключение

Мы рассмотрели важность концепций ООП, поняли определение абстракции и инкапсуляции. Прошелся по примерам абстракции и инкапсуляции. Мы также рассмотрели преимущества использования таких концепций ООП, как абстракция и инкапсуляция. И, наконец, мы рассмотрели разницу между абстракцией и инкапсуляцией.

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

Если вам интересно узнать больше о Java и разработке полного стека, ознакомьтесь с программой Executive PG upGrad и IIIT-B по разработке программного обеспечения с полным стеком, которая предназначена для работающих профессионалов и предлагает более 500 часов интенсивного обучения, 9+ проектов. и задания, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.

Что такое абстракция в объектно-ориентированном программировании?

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

Как классы и объекты работают в программировании?

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

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

Абстракция — это метод удаления ненужных деталей в коде и сосредоточения внимания на важных частях. Например, вместо того, чтобы писать функцию, которая умножает два числа, мы можем написать функцию «умножить» и использовать ее для умножения любого числа на любое число. Абстракция — это способ представления некоторых конкретных данных. Инкапсуляция — это способ скрыть сложность чего-либо и показать только те части, которые вы хотите показать. Например, если у вас есть класс с одним или несколькими закрытыми полями, которые вы используете для хранения данных, то вы находитесь в инкапсуляции. Класс содержит данные и имеет методы, предоставляющие общедоступные данные.