Разница между ADT и классами?

ADT is the set of operations. ADT's are mathematical abstractions.

означает ли это, что ADT такие же, как классы, или я путаю оба вместе ?

3 ответов


ключ к разнице аннотация. Подумайте об ADT больше как об интерфейсе-классе только с объявлениями методов, без деталей реализации.

в качестве примера Stack ADT определяет основные операции стека, такие как push и pop (но ничего не говорит о том, как эти операции должны быть реализованы), в то время как класс стека будет использовать либо связанный список, либо массив для фактической реализации этих операций.


абстрактный тип данных (ADT) является математической абстракцией реальной вещи и может быть реализован в конкретном типе данных на разных языках.

ADT определяет операции для данного типа и математически выражает их поведение. Конкретные реализации ADT могут отличаться друг от друга. Таким образом, классы реализуют ADT и методы реализуют операции.

классы имеют немного другую терминологию, чем ADTs и добавить другие характеристики, как:

  • они, например, могут жить в пакетов
  • их члены называются атрибуты и методы
  • атрибуты и методы имеют определенные видимость ограничения

и методы:

  • может быть аннотация тоже. но тогда их поведение не определено - только их сигнатуру метода - an наследование конкретного класса должно обеспечивать реализацию

Не путайте абстрактные типы данных с абстрактные классы в конкретном языке.


согласно коду Complete, ADT-это набор данных и операций, которые работают с этими данными.

пример для ADT:

список

  • список инициализации
  • вставить элемент в список
  • удалить элемент из списка
  • читать следующий пункт из списка

ADT образуют основу для концепции классов. В языках, поддерживающих классы, каждый абстрактный тип данных можно реализовать как свой собственный класс. классы обычно включают дополнительные понятия наследование и полиморфизм. Один из способов мышления класса-это абстрактный тип данных плюс наследование и полиморфизм.