Как реализовать абстракцию данных в Java?

Опубликовано: 2022-05-17

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

Оглавление

Что такое абстракция данных?

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

Проще говоря, абстракция данных отображает важные элементы для пользователя, скрывая при этом второстепенные элементы.

Мы используем ключевое слово «абстрактный» для реализации абстракции с помощью классов и интерфейсов. У нас могут быть как абстрактные, так и конкретные методы в абстрактных классах.

Что такое абстрактные классы?

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

Его синтаксис:

общедоступный абстрактный класс Name_of_Class

{

открытый абстрактный Name_of_Method();

}

Пример реализации абстрактного класса:

//абстрактное именование классов

абстрактный класс DemoClass

{

//абстрактное именование методов

абстрактная пустота disp();

}

//продолжаем работу с абстрактным классом

открытый класс MainClass расширяет DemoClass

{

//определение тела метода абстрактного класса

пустой дисплей ()

{

System.out.println("Вызван абстрактный метод.");

}

public static void main (аргументы String [])

{

Объект основного класса = новый основной класс ();

// вызов абстрактного метода

объект.дисплей();

}

}

Чтобы перечислить точечно:

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

Что такое абстрактные методы?

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

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

Преимущества абстракции данных в объектно-ориентированном программировании

  • В объектно-ориентированном программировании абстракция снижает сложность разработки программы и процесса ее реализации в программном обеспечении.
  • Основное преимущество реализации абстракции в программировании на Java заключается в том, что пользователи могут легко организовывать классы на основе сходства, например, братьев и сестер, и, следовательно, наследование данных и миграция данных становятся простыми и выполнимыми.
  • Возможно наследование. Например:

/* Имя файла: DemoAbstract.java */

открытый класс DemoAbstract {

public static void main(String [] args) {

/* следующее не может быть записано и вызывает ошибки */

сотрудник e = новый сотрудник («Питер Д.», «Хартфорд, Коннектикут», 35 лет);

System.out.println("\n Используйте ссылку на сотрудника и вызовите MailCheck–");

электронная почтаПроверить();

}

}

Это показывает следующую ошибку:

Employee.java:46: Сотрудник является абстрактным; не может быть создан

сотрудник e = новый сотрудник («Питер Д.», «Хартфорд, Коннектикут», 35 лет);

^

1 ошибка

Поэтому мы используем использование абстрактного класса как:

/* Имя файла: employee.java */

сотрудник публичного абстрактного класса {

частная строка N;

добавление частной строки;

частное целое число;

публичный сотрудник (строка N, добавление строки, целое число) {

System.out.println("Создание сотрудника");

это.имя = N;

этот.адрес = Добавить;

это число = число;

}

общественное двойное вычисление_pay () {

System.out.println("Внутри сотрудника calculate_pay");

вернуть 0,0;

}

публичный недействительный Mailcheck () {

System.out.println("Отправка чека по адресу " + this.name + " " + this.address);

}

общедоступная строка toString () {

вернуть N + ” ” + Добавить + ” ” + N;

}

публичная строка getName () {

вернуть Н;

}

публичная строка getAddress () {

вернуть Добавить;

}

public void setAddress (строка newAddress) {

Добавить = новый адрес;

}

публичный интервал getNumber () {

вернуть число;

}

}

Когда мы используем абстрактный класс или абстрактные методы?

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

Следовательно, форма может быть аналогична абстрактному классу, а различные типы фигур могут быть обозначены как конкретные классы.

Вот реальный сценарий для объяснения абстрактных классов:

// Java-программа для демонстрации абстракции

форма абстрактного класса {

Цвет струны;

абстрактная двойная область();

общедоступная абстрактная строка toString();

// абстрактный класс может иметь конструктор

общественная форма (цвет строки)

{

System.out.println("Вызван конструктор формы");

this.color = цвет;

}

// это конкретный метод

public String getColour() { возвращаемый цвет; }

}

класс Circle расширяет форму {

двойной р;

публичный круг (цвет строки, двойной (r)

{

// вызов конструктора формы

супер(цвет);

System.out.println("Вызван конструктор круга");

это.г = г;

}

@Переопределить двойную область()

{

вернуть Math.PI * Math.pow(r, 2);

}

@Переопределить общедоступную строку toString()

{

вернуть «Цвет круга» + super.getColor()

+ «и площадь: » + площадь();

}

}

класс Rectangle расширяет форму {

двойная длина;

двойная ширина;

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

двойная ширина)

{

// вызов конструктора формы

супер(цвет);

System.out.println("Вызван конструктор прямоугольника");

это.длина = длина;

this.width = ширина;

}

@Override double area() { возвращаемая длина * ширина; }

@Переопределить общедоступную строку toString()

{

return «Цвет прямоугольника » + super.getcolor()

+ «и площадь: » + площадь();

}

}

открытый класс Тест {

public static void main (аргументы String [])

{

Форма s1 = новый круг («Красный», 2.2);

Форма s2 = новый прямоугольник («Желтый», 2, 4);

System.out.println(s1.toString());

System.out.println(s2.toString());

}

}

Этот сегмент кода является модифицированной версией того, что здесь .

Фрагмент кода программы, в которой используется абстракция данных в Java:

// Абстракция в Java

абстрактный класс ElecBill

{

//абстрактный метод

абстрактный float compBill();

}

класс Comm расширяет ElecBill

{

поплавок compBill () {

возврат 1,00*100;

}

}

класс Внутренний расширяет ElecBill

{

поплавок compBill () {

возврат 0,50*75;

}

}

Вывод

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

Если вы хотите углубленно изучить ООП и приобрести первоклассные навыки программирования, мы рекомендуем пройти связанную с работой сертификацию PG в области разработки программного обеспечения от upGrad, которая предназначена для того, чтобы помочь студентам приобрести навыки в области Java, OODAP, DSA, HTML5, CSS3. , JavaScript, MERN, AWS, базы данных SQL и NoSQL, Spring Boot и т. д. Пятимесячный курс охватывает две специализации — специализацию MERN Stack и облачную специализацию, а также предоставляет доступ к сеансам карьерного консультирования upGrad 360°.

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

Что такое полиморфизм? Чем это отличается от абстракции данных?

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

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

ИНКАПСУЛЯЦИЯ - 1. Инкапсуляция скрывает данные (информацию), тогда как абстракция скрывает детали (скрытие реализации). 2. Абстракция объектно-ориентированного программирования решает проблемы на уровне проектирования. 3. В целях безопасности инкапсуляция подразумевает сокрытие внутренней информации или механики того, как объект что-то выполняет. АБСТРАКЦИЯ - 1. В то время как инкапсуляция связывает вместе данные и методы, которые с ними работают, абстракция данных связана с раскрытием пользовательского интерфейса при сокрытии деталей реализации. 2. Решается на уровне реализации за счет инкапсуляции. 3. В Java абстракция данных позволяет сконцентрироваться на том, что должен включать в себя информационный объект.

Каковы отличительные черты между интерфейсом и абстрактным классом?

Интерфейс - 1. Только абстрактные методы оказываются частью интерфейса. 2. Поддерживается множественное наследование. 3. Он не может предложить реализацию абстрактного класса. 4. В интерфейсе разрешены только общедоступные абстрактные методы. 5. В интерфейсе можно использовать только одну общедоступную статическую конечную переменную. Абстрактный класс - 1. Абстрактные, как и неабстрактные методы, могут быть найдены в абстрактном классе. 2. Множественное наследование не поддерживается. 3. Он способен реализовать интерфейс. 4. В абстрактном классе возможны как защищенные, так и абстрактные общедоступные методы. 5. С любым спецификатором доступа абстрактный класс может иметь переменные final, static или static final.