据我所知,抽象数据类型基本上是一些数据,我们可以对这些数据做些什么(例如。包含一组数据和属性size以及函数get()、set()、sort()、insert()和remove()的列表。这是一种抽象数据类型,因为我们不知道内部的数据将是什么,也不知道get()、set()、sort()、insert()和remove()将如何实现。这基本上和接口是一样的吗?例如,在C++中
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会被认为是一种抽象数据类型吗?另外,如果属性是硬类型的,如下面的类所示呢?
class Person{
public:
string name;
int age;
string gender;
};谢谢
发布于 2020-11-03 08:59:12
ADT有一个接口,但它们不是一回事。例如,对象与ADT有根本的不同(例如,关于简单的解释,请参见重新认识数据抽象 by 威廉·库克 ),但它们也有接口。
另外,单个ADT (或单个对象)可以具有多个接口,例如,一个List ADT可以是可迭代的,也可以是可索引的。
它也是可能的,虽然不明智的东西有一个接口泄漏它的内部表示,使它既不是一个ADT或对象,但仍然有一个接口。
https://softwareengineering.stackexchange.com/questions/418622
复制相似问题