首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抽象数据类型和接口之间有什么区别吗?

抽象数据类型和接口之间有什么区别吗?
EN

Software Engineering用户
提问于 2020-11-03 00:35:33
回答 1查看 645关注 0票数 1

据我所知,抽象数据类型基本上是一些数据,我们可以对这些数据做些什么(例如。包含一组数据和属性size以及函数get()set()sort()insert()remove()的列表。这是一种抽象数据类型,因为我们不知道内部的数据将是什么,也不知道get()set()sort()insert()remove()将如何实现。这基本上和接口是一样的吗?例如,在C++中

代码语言:javascript
复制
template <typename T>
class List{
private:
    int size;
    T* data;
public:
    T get(int index) = 0;
    void set(int index) = 0;
    T remove(int index) = 0;
    void sort() = 0;
    void insert(T obj) = 0;
};

这里的List会被认为是一种抽象数据类型吗?另外,如果属性是硬类型的,如下面的类所示呢?

代码语言:javascript
复制
class Person{
public:
    string name;
    int age;
    string gender;
};

谢谢

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2020-11-03 08:59:12

ADT有一个接口,但它们不是一回事。例如,对象与ADT有根本的不同(例如,关于简单的解释,请参见重新认识数据抽象 by 威廉·库克 ),但它们也有接口。

另外,单个ADT (或单个对象)可以具有多个接口,例如,一个List ADT可以是可迭代的,也可以是可索引的。

它也是可能的,虽然不明智的东西有一个接口泄漏它的内部表示,使它既不是一个ADT或对象,但仍然有一个接口。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/418622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档