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.

зміщення та дисперсія

Аспект

Абстрактні типи даних (ADT)

Визначені користувачем типи даних (UDT)

Визначення

Визначає клас об’єктів і операції, які можна виконувати над ними, разом із їх очікуваною поведінкою (семантикою), але без уточнення деталей реалізації.

Спеціальний тип даних, створений шляхом об’єднання або розширення існуючих примітивних типів із визначенням структури та операцій.

Фокус

Які операції дозволені та як вони поводяться, не вказуючи, як вони реалізуються.

Як дані організовані в пам’яті та як виконуються операції.

призначення

Надає абстрактну модель для концептуального визначення структур даних.

об'єктивна java

Дозволяє програмістам створювати конкретні реалізації структур даних за допомогою примітивних типів.

Деталі реалізації

Не вказує, як реалізуються операції або як структуруються дані.

Визначає, як створити та організувати типи даних для реалізації структури.

Використання

Використовується для проектування та концептуалізації структур даних.

Використовується для реалізації структур даних, які реалізують абстрактні концепції, визначені ADT.

escape-символ Java

приклад

Список ADT Стек ADT Черга ADT.

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

Приклади ADT

Тепер давайте розберемося з трьома поширеними ADT: ADT зі списком, стеком ADT і ADT черги.

1. Список ADT

Список ADT (абстрактний тип даних) — це послідовний набір елементів, який підтримує набір операцій без уточнення внутрішньої реалізації . Він забезпечує впорядкований спосіб зберігання доступу та зміни даних.

Абстрактні типи данихПерегляд списку

Операції:

Список ADT повинен зберігати необхідні дані в послідовності та мати такі операції :

  • отримати(): Повертає елемент зі списку в будь-якій позиції.
  • вставити(): Вставте елемент у будь-яку позицію в списку.
  • видалити(): Видалити перше входження будь-якого елемента з непорожнього списку.
  • removeAt(): Видалити елемент у вказаному місці з непорожнього списку.
  • замінити(): Замінити елемент у будь-якій позиції іншим елементом.
  • розмір(): Повертає кількість елементів у списку.
  • isEmpty(): Повертає true, якщо список порожній; інакше повертає false.
  • isFull(): Повертає true, якщо список заповнений, інакше повертає false. Застосовується лише в реалізаціях фіксованого розміру (наприклад, списки на основі масиву).

2. Стек ADT

Stack ADT — це лінійна структура даних, яка відповідає принципу LIFO (останній прийшов, перший вийшов). Це дозволяє додавати та видаляти елементи лише з одного кінця, що називається вершиною стека.

Абстрактні типи данихВид стека

Операції:

У Stack ADT порядок вставки та видалення має відповідати принципу FILO або LIFO. Елементи вставляються та видаляються з того самого кінця, який називається верхньою частиною стека. Він також повинен підтримувати такі операції:

  • push(): Вставте елемент на одному кінці стека, який називається вершиною.
  • поп(): Видаліть і поверніть елемент у верхній частині стека, якщо він не порожній.
  • peek(): Поверніть елемент у верхній частині стека, не видаляючи його, якщо стек не порожній.
  • розмір(): Повертає кількість елементів у стеку.
  • isEmpty(): Повертає true, якщо стек порожній; інакше повертає false.
  • isFull(): Повертає true, якщо стек заповнений; інакше повертає false. Релевантно лише для стеків із фіксованою ємністю (наприклад, на основі масиву).

3. Черга ADT

Queue ADT — це лінійна структура даних, яка відповідає принципу FIFO (першим прийшов, першим вийшов). Це дозволяє вставляти елементи з одного кінця (ззаду) і видаляти з іншого кінця (спереду).

Абстрактні типи данихПерегляд черги

Операції:

Queue ADT має структуру, подібну до Stack ADT, але порядок вставлення та видалення змінюється на FIFO. Елементи вставляються одним кінцем (званим заднім) і видаляються з іншого кінця (званим переднім). Він повинен підтримувати такі операції:

як перевірити заблоковані номери на android
  • enqueue(): Вставити елемент у кінець черги.
  • відповідно(): Видалити та повернути перший елемент черги, якщо черга не порожня.
  • peek(): Повертає елемент черги, не видаляючи його, якщо черга не порожня.
  • розмір(): Повертає кількість елементів у черзі.
  • isEmpty(): Повертає true, якщо черга порожня; інакше повертає false.

Переваги та недоліки ADT

Абстрактні типи даних (ADT) мають кілька переваг і недоліків, які слід враховувати, вирішуючи використовувати їх у розробці програмного забезпечення. Ось деякі з основних переваг і недоліків використання ADT:

Перевага:

Переваги перераховані нижче:

  • Інкапсуляція : ADT забезпечують спосіб інкапсуляції даних і операцій в єдиний блок, що полегшує керування та зміну структури даних.
  • Абстракція : ADT дозволяють користувачам працювати зі структурами даних, не знаючи деталей реалізації, що може спростити програмування та зменшити кількість помилок.
  • Незалежність структури даних : ADT можна впроваджувати за допомогою різних структур даних, що може полегшити адаптацію до мінливих потреб і вимог.
  • Приховування інформації : ADT можуть захистити цілісність даних, контролюючи доступ і запобігаючи неавторизованим змінам.
  • Модульність : ADT можна комбінувати з іншими ADT для формування складніших структур даних, які можуть збільшити гнучкість і модульність у програмуванні.

Недоліки:

Недоліки перераховані нижче:

  • Накладні витрати : Впровадження ADT може збільшити витрати пам’яті та обробки, що може вплинути на продуктивність.
  • Складність : ADT може бути складним для впровадження, особливо для великих і складних структур даних.
  • навчання Крива: використання ADT вимагає знань про їх реалізацію та використання, для вивчення яких може знадобитися час і зусилля.
  • Обмежена гнучкість: Функціональність деяких ADT може бути обмежена або не підходить для всіх типів структур даних.
  • Вартість : Впровадження ADT може потребувати додаткових ресурсів та інвестицій, що може збільшити вартість розробки.
Створіть вікторину