【问题标题】:What are Abstract data types in algorithms and why do we need them?什么是算法中的抽象数据类型,我们为什么需要它们?
【发布时间】:2015-06-05 19:49:12
【问题描述】:

我还想引用我读过但无法理解的来源。

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

为了简化解决问题的过程,我们将 dataStructures 与其操作结合起来,并将其称为 AbstractDataType。

谁能解释一个很好的例子以及现实世界的背景? 为什么需要它们?

来源 Narasimha Karumanchi 书籍 DataStructures and Algorithms

【问题讨论】:

标签: java abstract-data-type


【解决方案1】:

好问题!

在应用程序基础架构和设计方面,抽象数据类型很有用,以便拥有清晰易懂的类和数据模型层次结构。 正如您所要求的一个实际示例,以任何使用数据库的应用程序为例:例如在线电子商店。 原始数据类型很有用,当然,假设我们使用双精度数来存储价格,使用整数来存储商品数量,使用字符串来显示和存储商品名称/描述,但是我们如何处理购物篮/购物车呢?最简单且最推荐的方法是通过一个单独的类(例如 shoppingCart)创建购物车的抽象表示,该类将包含其属性:

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

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

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

将您创建的任何抽象数据类型视为您自己的对象,以及它们自己的方法等等。

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

 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
}

另一位开发人员想要创建一种新型车辆(比如“飞机”),因此他现在可以看到他必须无论如何都要实现这两种方法。

希望能帮到你。

【讨论】:

    猜你喜欢
    • 2020-04-03
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2011-01-15
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多