Разница между абстракцией данных и процедурной абстракцией в java

Я пытаюсь понять разницу между абстракцией данных и процедурной абстракцией в java.

Я понимаю, что процедурная абстракция использует методы, которые принимают формальные параметры и скрывают реализацию от пользователя. Это имеет смысл в языке PL/SQL, поскольку у меня есть возможность создавать процедуры отдельно в языке PL/SQL.

Но я путаюсь между абстракцией данных и процедурной абстракцией, поскольку даже процедуры в Java реализованы как часть некоторого класса. И у каждого класса также могут быть некоторые статические методы (public static), которые может использовать любой другой класс в пакете.

Пожалуйста, может кто-нибудь дать четкое различие между этими двумя (с точки зрения java)


person avg998877    schedule 20.09.2016    source источник


Ответы (2)


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

public void printFibonacci(int n){
//your code to print Fibonacci numbers
}

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

С другой стороны, в абстракции данных классы используются для абстрагирования связанных значений с состоянием и связанных с ними поведений, что также называется абстрактным типом данных (ADT).
Например, в Java он состоит из:

  1. Классы интерфейса
  2. Допустимое поведение
person appsdownload    schedule 26.10.2017

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

Что касается процедурной абстракции, необходимой частью является «Что делает процедура, и игнорируя то, как она это делает». Большинство языков по умолчанию поддерживают его. В Java один класс может вызывать методы другого класса, не зная деталей его реализации. Это один из примеров процедурной абстракции.

person Sakalya    schedule 20.09.2016