Разница между 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 образуют основу для концепции классов. В языках, поддерживающих классы, каждый абстрактный тип данных можно реализовать как свой собственный класс. классы обычно включают дополнительные понятия наследование и полиморфизм. Один из способов мышления класса-это абстрактный тип данных плюс наследование и полиморфизм.