java 中数据抽象和过程抽象的区别

Difference between Data abstraction and procedural abstraction in java

我试图理解 java 中数据抽象和过程抽象之间的区别。

我理解过程抽象是利用接受形式参数的方法并对用户隐藏实现。这在 PL/SQL 语言中完全有意义,因为我可以选择在 PL/SQL.

中单独创建过程

但我对数据抽象和过程抽象感到困惑,因为甚至 Java 中的过程也是作为某些 class 的一部分实现的。每个class也可以有一些静态方法(public static),包中的每个其他class都可以使用。

谁能把这两者区别清楚(java)

在面向对象编程中,抽象是主要支柱之一。在 Java 中,当涉及到数据抽象时,这意味着虽然 designing/defining 是 class 本身,但您只需要识别 class 的那些与该领域相关的属性.例如,如果Person是一个实体,它可以有名字、姓氏、薪水、配偶、年龄、身高、体重、血型等许多属性。但是,如果您正在为医疗保健领域开发应用程序,那么您只想选择那些与医疗保健相关的属性(例如身高、血型),而忽略其余的。另一方面,如果您正在开发社会调查应用程序,则不需要这些属性。这样,识别出需要的属性,忽略其余的就是数据抽象。

至于过程抽象,必须的部分是"What the procedure does and ignoring how it does it"。默认情况下,大多数语言都支持它。在 Java 中,一个 class 可以在不知道其实现细节的情况下调用另一个 class 的方法。这是过程抽象的一个例子。

在程序抽象中,方法用于捕获程序模式,对行为进行抽象。 例如,在 Java 中,您可以这样写:

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

这样一来,用户就可以很方便的使用程序,甚至不用去想函数内部到底发生了什么。你知道它将打印给定输入的斐波那契。

另一方面,在数据抽象中,类 用于抽象相关的有状态值及其相关行为——也称为抽象数据类型 (ADT)。
例如,在Java中,它包括:

  1. 界面类
  2. 允许的行为