什么是算法中的抽象数据类型以及我们为什么需要它们?

时间:2015-04-01 08:29:19

标签: java abstract-data-type

我还想引用我阅读和无法理解的来源。

  

我们都知道默认情况下,所有原始数据类型(int,float等)都支持基本操作,例如加法和减法。系统提供原始数据类型的实现。对于用户定义的类型,我们需要定义操作。这些算法的实现是在我们使用它们时完成的。   这意味着,用户定义的数据类型与其操作一起定义。

     

为简化解决问题的过程,我们将dataStructures及其操作组合在一起,并将其称为AbstractDataType。

任何人都可以解释它的一个很好的例子,也可以解释现实世界的背景吗? 为什么你需要它们?

来源Narasimha Karumanchi着作“数据结构和算法”

1 个答案:

答案 0 :(得分:1)

好问题!

就应用程序基础结构和设计而言,抽象数据类型非常有用,以便拥有一个干净且易于理解的类和数据模型层次结构。 正如您要求的实际示例,请使用任何使用数据库的应用程序:比如在线电子商店。 当然,原始数据类型很有用,比方说我们使用双打来存储价格,整数来存储项目和字符串的数量以显示和存储项目名称/描述,但我们如何处理购物篮/购物车?最简单和最推荐的方法是通过一个单独的类创建购物车的抽象表示,比如shoppingCart,它将包含其属性:

class shoppingCart{
int numOfItems;
double totalPrice;
List<Product> products;
etc.
}

此外,我们需要类来表示产品和类别,例如:

class Product{
double price;
string name;
etc.
}

将您创建的任何抽象数据类型视为您自己的对象,并使用自己的方法等等。

我们将使用抽象类来定义扩展它们的某些子类的一般行为,例如:abstract class Vehicle和类Car,Bike,它们可以扩展Vehicle。 结构将是:

 abstract class vehicle{
public void drive();
public int getNumberOfWheels();
}

这样我们确保Car和Bike的所有实例都将实现抽象类车辆中列出的2种方法:

class car extends vehicle{
//we have to implement the 2 methods and provide an implementation for it
}

另一位开发人员希望创建一种新型车辆(比如说“飞机”),所以他现在可以看到 实施这两种方法无论如何。

我希望我能帮到你。