Пре него што сазнамо о апстрактном типу података, требало би да знамо шта је структура података.
Шта је структура података?
Структура података је техника организовања података тако да се подаци могу ефикасно користити. Постоје два начина за преглед структуре података:
Зашто структура података?
Следеће су предности коришћења структуре података:
- Ово су основни састојци који се користе за креирање брзих и моћних алгоритама.
- Они нам помажу да управљамо и организујемо податке.
- Структуре података чине код чистијим и лакшим за разумевање.
Шта је апстрактни тип података?
Апстрактни тип података је апстракција структуре података која обезбеђује само интерфејс на који структура података мора да се придржава. Интерфејс не даје никакве конкретне детаље о томе шта би требало имплементирати или на ком програмском језику.
Другим речима, можемо рећи да су апстрактни типови података ентитети који су дефиниције података и операција, али немају детаље имплементације. У овом случају знамо податке које чувамо и операције које се могу извршити над подацима, али не знамо детаље имплементације. Разлог зашто нема детаља о имплементацији је тај што сваки програмски језик има различиту стратегију имплементације, на пример; Ц структура података се имплементира коришћењем структура док се Ц++ структура података имплементира коришћењем објеката и класа.
На пример, а Листа је апстрактни тип података који се имплементира помоћу динамичког низа и повезане листе. Ред се имплементира коришћењем повезаног реда заснованог на листи, реда заснованог на низу и реда заснованог на стеку. Мапа се имплементира помоћу мапе стабла, хеш мапе или хеш табеле.
Модел апстрактног типа података
Пре него што сазнамо о моделу апстрактног типа података, требало би да знамо о апстракцији и инкапсулацији.
нормалне форме
Апстракција: То је техника скривања унутрашњих детаља од корисника и само приказивања потребних детаља кориснику.
Енкапсулација: То је техника комбиновања података и функције члана у једној јединици позната је као енкапсулација.
Горња слика приказује АДТ модел. Постоје две врсте модела у АДТ моделу, односно јавна функција и приватна функција. АДТ модел такође садржи структуре података које користимо у програму. У овом моделу се врши прва енкапсулација, односно сви подаци су умотани у једну јединицу, односно АДТ. Затим се изводи апстракција значи приказивање операција које се могу извршити над структуром података и које су то структуре података које користимо у програму.
Хајде да разумемо апстрактни тип података на примеру из стварног света.
Ако узмемо у обзир паметни телефон. Гледамо на високе спецификације паметног телефона, као што су:
- 4 ГБ РАМ-а
- Снапдрагон 2.2ГХз процесор
- ЛЦД екран од 5 инча
- Двострука камера
- Андроид 8.0
Горе наведене спецификације паметног телефона су подаци, а такође можемо да извршимо следеће операције на паметном телефону:
Паметни телефон је ентитет чији су подаци или спецификације и операције наведени горе. Апстрактни/логички приказ и операције су апстрактни или логички прикази паметног телефона.
Поглед имплементације горњег апстрактног/логичког погледа је дат у наставку:
class Smartphone { private: int ramSize; string processorName; float screenSize; int cameraCount; string androidVersion; public: void call(); void text(); void photo(); void video(); }
Горњи код је имплементација спецификација и операција које се могу извршити на паметном телефону. Поглед имплементације се може разликовати јер је синтакса програмских језика другачија, али би апстрактни/логички поглед структуре података остао исти. Стога, можемо рећи да је апстрактни/логички поглед независан од погледа имплементације.
Напомена: Знамо операције које се могу извршити на унапред дефинисаним типовима података као што су инт, флоат, цхар, итд., али не знамо детаље имплементације типова података. Стога можемо рећи да се апстрактни тип података сматра скривеним оквиром који сакрива све унутрашње детаље типа података.
Пример структуре података
Претпоставимо да имамо индексни низ величине 4. Имамо индексну локацију која почиње од 0, 1, 2, 3. Низ је структура података у којој се елементи чувају на суседној локацији. Меморијска адреса првог елемента је 1000, другог елемента је 1004, трећег елемента је 1008, а четвртог елемента је 1012. Пошто је целобројног типа, он ће заузимати 4 бајта и разлика између адреса сваког елемента је 4 бајтова. Вредности ускладиштене у низу су 10, 20, 30 и 40. Ове вредности, позиције индекса и меморијске адресе су имплементације.
Апстрактни или логички приказ низа целих бројева може се навести као:
- Чува скуп елемената целобројног типа.
- Чита елементе по позицији, тј. индексу.
- Модификује елементе по индексу
- Врши сортирање
Приказ имплементације низа целих бројева:
поверсхелл већи или једнак
a[4] = {10, 20, 30, 40} cout<< a[2] a[3] = 50