Как отличить guish между структурами данных и абстрактными типами данных? - PullRequest
0 голосов
/ 19 января 2020

Следующие определения из Абстрактные типы данных (1996) Дейла и Уокера:

Структуры данных : реализация структурированных отношений.

ADT (абстрактные типы данных) : классы объектов, логическое поведение которых определяется набором значений и набором операций.

Итак, давайте возьмем простой класс в C ++:

class Simple {
public:
        void some_simple_action();

private:
        int x, y;
};

Простая должна быть структура данных, так как это реализация, правильно? Что касается этого класса, что это за абстрактный тип данных?

Во-вторых, правильно ли я предположить, что ADT являются просто концептуальным представлением чего-либо: как в представлении чего-либо, с помощью которого мы можем назвать по имени? Например, есть общая идея или даже формальная / логическая концепция стека. Если я реализую стек на заданном языке программирования, то то, что я написал, теперь является структурой данных (этого абстрактного типа данных).

Правильно ли я думаю?

1 Ответ

0 голосов
/ 19 января 2020

По большей части - вы думаете правильно.

На высоком уровне конкретный тип данных представляет собой концепцию , которая позволяет вам создавать экземпляры (называемые объектами в OO)

ADT (он же Интерфейс) - это контракт . Это не подразумевает реализацию.

WRT вашего простого класса, ADT будет выглядеть примерно так:

class ISimple {
public:
        void some_simple_action() = 0;
};

И если вы извлечете из него класс Simple, вы сможете внедрить это где контракт требует ISimple.

...