An Abstraktių duomenų tipas (ADT) yra konceptualus modelis, apibrėžiantis duomenų struktūros operacijų ir elgsenų rinkinį nenurodant, kaip šios operacijos įgyvendinamos arba kaip duomenys tvarkomi atmintyje. ADT apibrėžime tik minima, kas turi būti atliekamos operacijos bet ne kaip šios operacijos bus įgyvendintos. Jame nenurodyta, kaip duomenys bus tvarkomi atmintyje ir kokie algoritmai bus naudojami operacijoms įgyvendinti. Jis vadinamas „abstrakčiu“, nes suteikia nuo įgyvendinimo nepriklausomą vaizdą.
Tik būtiniausių dalykų pateikimo ir detalių slėpimo procesas žinomas kaip abstrakcija.
ADT ypatybės
Abstrakčių duomenų tipai (ADT) – tai būdas duomenims ir tų duomenų operacijoms sujungti į vieną vienetą. Kai kurios pagrindinės ADT savybės:
- Abstrakcija: Vartotojui nereikia žinoti duomenų struktūros įgyvendinimo, tik pateikiami esminiai dalykai.
- Geresnis konceptualizavimas: ADT suteikia mums geresnį realaus pasaulio sampratą.
- Tvirtas: Programa yra tvirta ir gali sugauti klaidas.
- Inkapsuliavimas : ADT paslepia vidinę duomenų informaciją ir suteikia viešą sąsają, kad vartotojai galėtų sąveikauti su duomenimis. Tai leidžia lengviau prižiūrėti ir keisti duomenų struktūrą.
- Duomenų abstrakcija : ADT suteikia tam tikrą abstrakcijos lygį nuo duomenų įgyvendinimo detalių. Vartotojai turi žinoti tik operacijas, kurias galima atlikti su duomenimis, o ne tai, kaip tos operacijos įgyvendinamos.
- Duomenų struktūros nepriklausomumas : ADT galima įdiegti naudojant skirtingas duomenų struktūras, pvz., masyvus arba susietus sąrašus, nepažeidžiant ADT funkcionalumo.
- Informacijos slėpimas: ADT gali apsaugoti duomenų vientisumą, leisdami prieigą tik įgaliotiems vartotojams ir operacijoms. Tai padeda išvengti klaidų ir netinkamo duomenų naudojimo.
- Moduliškumas : ADT galima derinti su kitais ADT, kad būtų sudarytos didesnės sudėtingesnės duomenų struktūros. Tai suteikia daugiau lankstumo ir moduliškumo programuojant.
Apskritai ADT yra galingas įrankis sistemingai ir efektyviai tvarkyti ir valdyti duomenis.
Šiame paveikslėlyje parodyta, kaip abstrakčių duomenų tipas (ADT) paslepia vidines duomenų struktūras (pvz., su masyvais susietus sąrašus), naudodamas viešąsias ir privačias funkcijas, atskleidžiančias tik apibrėžtą sąsają taikomosios programos programai.

Kodėl verta naudoti ADT?
Pagrindinės ADT naudojimo Java programoje priežastys yra išvardytos toliau:
- Inkapsuliavimas: Slepia sudėtingas įgyvendinimo detales už švarios sąsajos.
- Pakartotinis naudojimas : leidžia atlikti skirtingus vidinius diegimus (pvz., masyvą arba susietą sąrašą) nekeičiant išorinio naudojimo.
- Moduliškumas: Supaprastina priežiūrą ir atnaujinimus atskiriant logiką.
- Saugumas: Apsaugo duomenis užkertant kelią tiesioginei prieigai, sumažinant klaidas ir nenumatytus pakeitimus.
Abstrakcijos pavyzdys
Pavyzdžiui, naudojame primityvias reikšmes, tokias kaip int float ir char, suprasdami, kad šie duomenų tipai gali veikti ir būti atliekami nežinant apie jų įgyvendinimo detales. ADT veikia panašiai apibrėždami kokios operacijos galimos nedetalizuojant jų įgyvendinimo.
Skirtumas tarp ADT ir UDT
Žemiau esančioje lentelėje parodytas skirtumas tarp ADT ir UDT.
linux kaip pervardyti katalogą
Aspektas | Abstrakčių duomenų tipai (ADT) | Vartotojo nustatyti duomenų tipai (UDT) |
|---|---|---|
Apibrėžimas | Apibrėžia objektų klasę ir operacijas, kurias galima atlikti su jais, kartu su numatoma jų elgsena (semantika), tačiau nenurodo įgyvendinimo detalių. | Pasirinktinis duomenų tipas, sukurtas sujungiant arba išplečiant esamus primityvius tipus, nurodančius struktūrą ir operacijas. |
Fokusas | Kokios operacijos yra leidžiamos ir kaip jos elgiasi nenurodant, kaip jos įgyvendinamos. | Kaip duomenys tvarkomi atmintyje ir kaip atliekamos operacijos. |
Tikslas | Pateikiamas abstraktus modelis, skirtas konceptualiai apibrėžti duomenų struktūras. | Leidžia programuotojams sukurti konkrečius duomenų struktūrų įgyvendinimus naudojant primityvius tipus. |
Įgyvendinimo detalės | Nenurodoma, kaip vykdomos operacijos ar kaip struktūruojami duomenys. stygų statybininkas | Nurodoma, kaip sukurti ir tvarkyti duomenų tipus, kad būtų įdiegta struktūra. |
Naudojimas | Naudojamas duomenų struktūroms kurti ir konceptualizuoti. | Naudojamas duomenų struktūroms įgyvendinti, kurios realizuoja abstrakčias ADT apibrėžtas sąvokas. |
Pavyzdys | Sąrašas ADT Stack ADT eilė ADT. | Struktūrų klasių sąrašų įrašai. du prie vieno multiplekserio |
ADT pavyzdžiai
Dabar supraskime tris dažniausiai pasitaikančius ADT: ADT krūvos ADT sąrašas ir ADT eilė.
1. Išvardykite ADT
Sąrašas ADT (abstraktus duomenų tipas) yra nuoseklus elementų rinkinys, palaikantis operacijų rinkinį nenurodant vidinio įgyvendinimo . Jame pateikiamas tvarkingas būdas saugoti prieigą ir keisti duomenis.
Vies of listOperacijos:
Sąrašas ADT turi saugoti reikiamus duomenis seka ir turi atlikti šias operacijas :
- gauti (): Grąžinkite elementą iš sąrašo į bet kurią nurodytą vietą.
- įterpti (): Įterpkite elementą bet kurioje sąrašo vietoje.
- pašalinti (): Pašalinkite pirmą bet kurio elemento atvejį iš netuščio sąrašo.
- pašalintiAt(): Pašalinkite elementą nurodytoje vietoje iš netuščio sąrašo.
- pakeisti (): Pakeiskite elementą bet kurioje vietoje kitu elementu.
- dydis (): Pateikite sąrašo elementų skaičių.
- yra Tuščias (): Grąžinti true, jei sąrašas tuščias; kitu atveju grąžinkite klaidingą.
- isFull(): Grąžinkite teisingą, jei sąrašas pilnas, priešingu atveju grąžinkite false. Taikoma tik fiksuoto dydžio diegimams (pvz., masyvo sąrašams).
2. Sudėkite ADT
Stack ADT yra linijinė duomenų struktūra, kuri vadovaujasi LIFO (Last In First Out) principu. Tai leidžia elementus pridėti ir pašalinti tik iš vieno galo, vadinamo kamino viršuje.
Krūvos vaizdasOperacijos:
Stack ADT įterpimo ir ištrynimo tvarka turėtų būti pagal FILO arba LIFO principą. Elementai įdedami ir pašalinami iš to paties galo, vadinamo kamino viršumi. Ji taip pat turėtų palaikyti šias operacijas:
- stumti (): Įdėkite elementą viename krūvos gale, vadinamą viršuje.
- pop(): Išimkite ir grąžinkite elementą, esantį krūvos viršuje, jei jis nėra tuščias.
- žvilgtelėti (): Grąžinkite elementą krūvos viršuje jo neišimdami, jei krūva nėra tuščia.
- dydis (): Grąžinkite elementų skaičių krūvoje.
- yra Tuščias (): Grąžinti true, jei krūva tuščia; kitu atveju grąžinkite klaidingą.
- isFull(): Grąžinti true, jei krūva pilna; kitu atveju grąžinkite klaidingą. Tai aktualu tik fiksuotos talpos rinkiniams (pvz., masyvo pagrindu).
3. Eilė ADT
Eilės ADT yra linijinė duomenų struktūra, kuri vadovaujasi FIFO (pirmas į pirmąją išeina) principu. Tai leidžia elementus įterpti viename gale (galinėje) ir išimti iš kito galo (priekyje).
Eilės vaizdasOperacijos:
Eilės ADT dizainas panašus į Stack ADT, tačiau įterpimo ir ištrynimo tvarka pasikeičia į FIFO. Elementai įterpiami viename gale (vadinamu galiniu) ir pašalinami iš kito galo (vadinami priekiniu). Jis turėtų palaikyti šias operacijas:
duomenų struktūra
- eilė (): Įterpkite elementą eilės pabaigoje.
- atitinkamai (): Pašalinkite ir grąžinkite pirmąjį eilės elementą, jei eilė nėra tuščia.
- žvilgtelėti (): Grąžinkite eilės elementą jo nepašalindami, jei eilė nėra tuščia.
- dydis (): Grąžina elementų skaičių eilėje.
- yra Tuščias (): Grąžinti true, jei eilė tuščia; kitu atveju grąžinkite klaidingą.
ADT privalumai ir trūkumai
Abstrakčių duomenų tipai (ADT) turi keletą privalumų ir trūkumų, į kuriuos reikėtų atsižvelgti nusprendžiant juos naudoti kuriant programinę įrangą. Štai keletas pagrindinių ADT naudojimo pranašumų ir trūkumų:
Privalumas:
Privalumai išvardyti žemiau:
- Inkapsuliavimas : ADT suteikia galimybę duomenis ir operacijas sujungti į vieną vienetą, kad būtų lengviau valdyti ir keisti duomenų struktūrą.
- Abstrakcija : ADT leidžia vartotojams dirbti su duomenų struktūromis nežinant įgyvendinimo detalių, kurios gali supaprastinti programavimą ir sumažinti klaidų skaičių.
- Duomenų struktūros nepriklausomumas : ADT galima įdiegti naudojant skirtingas duomenų struktūras, kurios gali padėti lengviau prisitaikyti prie kintančių poreikių ir reikalavimų.
- Informacijos slėpimas : ADT gali apsaugoti duomenų vientisumą kontroliuodamos prieigą ir užkirsdamos kelią neteisėtiems pakeitimams.
- Moduliškumas : ADT galima derinti su kitais ADT, kad būtų sudarytos sudėtingesnės duomenų struktūros, kurios gali padidinti programavimo lankstumą ir moduliškumą.
Trūkumai:
Trūkumai išvardyti žemiau:
- Viršutinė : ADT įdiegimas gali padidinti atminties ir apdorojimo sąnaudas, kurios gali turėti įtakos našumui.
- Sudėtingumas : ADT gali būti sudėtinga įdiegti, ypač didelėms ir sudėtingoms duomenų struktūroms.
- Mokymasis Kreivė: norint naudoti ADT, reikia žinių apie jų įgyvendinimą ir naudojimą, o išmokti gali prireikti laiko ir pastangų.
- Ribotas lankstumas: Kai kurių ADT funkcionalumas gali būti ribotas arba jie gali būti netinkami visų tipų duomenų struktūroms.
- Kaina : ADT įgyvendinimui gali prireikti papildomų išteklių ir investicijų, kurios gali padidinti kūrimo išlaidas.