logo

Абстрактни типове данни

Ан Абстрактен тип данни (ADT) е концептуален модел, който дефинира набор от операции и поведения за структура от данни без да се уточнява как се изпълняват тези операции или как данните са организирани в паметта. Дефиницията на ADT само споменава какво трябва да се извършват операции но не как тези операции ще бъдат изпълнени. Не се уточнява как данните ще бъдат организирани в паметта и какви алгоритми ще се използват за изпълнение на операциите. Нарича се „абстрактно“, защото предоставя независим от изпълнението изглед.

Процесът на предоставяне само на най-важното и скриване на детайлите е известен като абстракция.

Характеристики на ADT



Абстрактните типове данни (ADT) са начин за капсулиране на данни и операции върху тези данни в една единица. Някои от основните характеристики на ADT включват:

  • Абстракция: Потребителят не е необходимо да знае изпълнението на структурата от данни, предоставени са само основните неща.
  • По-добра концептуализация: ADT ни дава по-добра концептуализация на реалния свят.
  • Здрав: Програмата е стабилна и има способността да улавя грешки.
  • Капсулиране : ADT скриват вътрешните детайли на данните и предоставят публичен интерфейс за потребителите да взаимодействат с данните. Това позволява по-лесна поддръжка и модифициране на структурата на данните.
  • Абстракция на данни : ADT осигуряват ниво на абстракция от подробностите за изпълнението на данните. Потребителите трябва да знаят само операциите, които могат да бъдат извършени върху данните, а не как се изпълняват тези операции.
  • Независимост на структурата на данните : ADT могат да бъдат реализирани с помощта на различни структури от данни като масиви или свързани списъци, без да се засяга функционалността на ADT.
  • Скриване на информация: ADT могат да защитят целостта на данните, като разрешават достъп само на оторизирани потребители и операции. Това помага за предотвратяване на грешки и злоупотреба с данните.
  • Модулност : ADT могат да се комбинират с други ADT за формиране на по-големи и по-сложни структури от данни. Това позволява по-голяма гъвкавост и модулност в програмирането.

Като цяло ADT предоставят мощен инструмент за организиране и манипулиране на данни по структуриран и ефективен начин.

Това изображение демонстрира как абстрактен тип данни (ADT) скрива вътрешни структури от данни (като масиви, свързани списъци), използвайки публични и частни функции, излагащи само дефиниран интерфейс на приложната програма.

Абстрактни типове данни

Защо да използвате ADT?

Основните причини да използвате ADT в Java са изброени по-долу:

  • Капсулация: Скрива сложните детайли на изпълнението зад чист интерфейс.
  • Повторна употреба : Позволява различни вътрешни реализации (напр. масив или свързан списък), без да променя външната употреба.
  • Модулност: Опростява поддръжката и актуализациите чрез разделяне на логиката.
  • сигурност: Защитава данните чрез предотвратяване на директен достъп, свеждайки до минимум грешки и неволни промени.

Пример за абстракция

Например ние използваме примитивни стойности като int float и char с разбирането, че тези типове данни могат да оперират и да се изпълняват без никакво знание за подробностите за тяхното изпълнение. ADT работят по подобен начин, като дефинират какви операции са възможни, без да се уточнява тяхното изпълнение.

Разлика между ADT и UDT

Таблицата по-долу показва разликата между ADT и UDT.

центриране на изображения в css

Аспект

Абстрактни типове данни (ADT)

Дефинирани от потребителя типове данни (UDT)

Определение

Дефинира клас от обекти и операциите, които могат да бъдат извършени върху тях, заедно с тяхното очаквано поведение (семантика), но без да уточнява подробности за изпълнението.

Персонализиран тип данни, създаден чрез комбиниране или разширяване на съществуващи примитивни типове, указващи структура и операции.

колко града в САЩ

Фокус

Какви операции са разрешени и как се държат, без да се диктува как се изпълняват.

Как се организират данните в паметта и как се изпълняват операциите.

Цел

Предоставя абстрактен модел за дефиниране на структури от данни по концептуален начин.

Позволява на програмистите да създават конкретни реализации на структури от данни, използвайки примитивни типове.

Подробности за изпълнението

Не уточнява как се изпълняват операциите или как се структурират данните.

Указва как да се създават и организират типове данни за реализиране на структурата.

Използване

Използва се за проектиране и концептуализиране на структури от данни.

Използва се за внедряване на структури от данни, които реализират абстрактните концепции, дефинирани от ADT.

Пример

Списък ADT стек ADT опашка ADT.

Структурира класове изброявания записи.

Примери за ADT

Сега нека разберем три често срещани ADT: List ADT Stack ADT и Queue ADT.

1. Избройте ADT

Списъкът ADT (абстрактни тип данни) е последователна колекция от елементи, която поддържа набор от операции без да се уточнява вътрешното изпълнение . Той осигурява подреден начин за съхраняване на достъп и модифициране на данни.

Абстрактни типове данниВие на списък

Операции:

10 1 милион

List ADT трябва да съхранява необходимите данни в последователността и трябва да има следните операции :

  • получи(): Върнете елемент от списъка на произволна позиция.
  • вмъкване(): Вмъкнете елемент на произволна позиция в списъка.
  • премахване (): Премахнете първото срещане на всеки елемент от непразен списък.
  • removeAt(): Премахнете елемента на определено място от непразен списък.
  • замени(): Заменете елемент на произволна позиция с друг елемент.
  • размер(): Връща броя на елементите в списъка.
  • isEmpty(): Връща true, ако списъкът е празен; в противен случай връща false.
  • е пълен (): Връща true, ако списъкът е пълен, в противен случай връща false. Приложимо само при реализации с фиксиран размер (напр. списъци, базирани на масив).

2. Стек ADT

Stack ADT е линейна структура от данни, която следва принципа LIFO (Last In First Out). Той позволява добавяне и премахване на елементи само от единия край, наречен горната част на стека.

Абстрактни типове данниИзглед на стека

Операции:

В Stack ADT редът на вмъкване и изтриване трябва да бъде в съответствие с принципа FILO или LIFO. Елементите се вмъкват и премахват от същия край, наречен горна част на стека. Той също така трябва да поддържа следните операции:

  • натискане(): Вмъкнете елемент в единия край на стека, наречен върха.
  • поп(): Премахнете и върнете елемента в горната част на стека, ако не е празен.
  • надниквам(): Върнете елемента в горната част на стека, без да го премахвате, ако стекът не е празен.
  • размер(): Връща броя на елементите в стека.
  • isEmpty(): Връща true, ако стекът е празен; в противен случай връща false.
  • е пълен (): Връща true, ако стекът е пълен; в противен случай връща false. Приложимо само за стекове с фиксиран капацитет (напр. базирани на масиви).

3. Опашка ADT

Queue ADT е линейна структура от данни, която следва принципа FIFO (First In First Out). Позволява вмъкване на елементи в единия край (отзад) и премахване от другия край (отпред).

Абстрактни типове данниИзглед на опашка

Операции:

Queue ADT следва дизайн, подобен на Stack ADT, но редът на вмъкване и изтриване се променя на FIFO. Елементите се вкарват в единия край (наречен заден) и се отстраняват от другия край (наречен преден). Трябва да поддържа следните операции:

връзки в java
  • поставяне на опашка(): Вмъкване на елемент в края на опашката.
  • съответно(): Премахнете и върнете първия елемент от опашката, ако опашката не е празна.
  • надниквам(): Върнете елемента от опашката, без да го премахвате, ако опашката не е празна.
  • размер(): Връща броя на елементите в опашката.
  • isEmpty(): Връща true, ако опашката е празна; в противен случай връща false.

Предимства и недостатъци на ADT

Абстрактните типове данни (ADT) имат няколко предимства и недостатъци, които трябва да се имат предвид, когато се решава да се използват в разработката на софтуер. Ето някои от основните предимства и недостатъци на използването на ADT:

Предимство:

Предимствата са изброени по-долу:

  • Капсулиране : ADT предоставят начин за капсулиране на данни и операции в една единица, което улеснява управлението и модифицирането на структурата на данните.
  • Абстракция : ADT позволяват на потребителите да работят със структури от данни, без да се налага да знаят подробностите за изпълнението, което може да опрости програмирането и да намали грешките.
  • Независимост на структурата на данните : ADT могат да бъдат внедрени с помощта на различни структури от данни, които могат да улеснят адаптирането към променящите се нужди и изисквания.
  • Скриване на информация : ADT могат да защитят целостта на данните чрез контролиране на достъпа и предотвратяване на неоторизирани модификации.
  • Модулност : ADT могат да се комбинират с други ADT за формиране на по-сложни структури от данни, което може да увеличи гъвкавостта и модулността в програмирането.

Недостатъци:

Недостатъците са изброени по-долу:

  • Режийни : Внедряването на ADT може да добави допълнителни разходи по отношение на памет и обработка, което може да повлияе на производителността.
  • Сложност : ADT могат да бъдат сложни за изпълнение, особено за големи и сложни структури от данни.
  • учене Крива: Използването на ADT изисква познаване на тяхното внедряване и използване, което може да отнеме време и усилия за научаване.
  • Ограничена гъвкавост: Някои ADT може да са с ограничена функционалност или да не са подходящи за всички видове структури от данни.
  • цена : Внедряването на ADT може да изисква допълнителни ресурси и инвестиции, което може да увеличи разходите за разработка.
Създаване на тест