Prieš sužinodami apie abstrakčių duomenų tipą, turėtume žinoti, kas yra duomenų struktūra.
Kas yra duomenų struktūra?
Duomenų struktūra yra duomenų organizavimo būdas, kad duomenys būtų naudojami efektyviai. Yra du būdai peržiūrėti duomenų struktūrą:
Kodėl duomenų struktūra?
Šie duomenų struktūros naudojimo pranašumai:
- Tai yra pagrindiniai ingredientai, naudojami kuriant greitus ir galingus algoritmus.
- Jie padeda mums tvarkyti ir tvarkyti duomenis.
- Duomenų struktūros daro kodą aiškesnį ir lengviau suprantamą.
Kas yra abstrakčių duomenų tipas?
Abstraktus duomenų tipas yra duomenų struktūros abstrakcija, kuri suteikia tik sąsają, prie kurios duomenų struktūra turi atitikti. Sąsaja nepateikia jokios konkrečios informacijos apie tai, kas turėtų būti įdiegta arba kokia programavimo kalba.
Kitaip tariant, galime sakyti, kad abstraktūs duomenų tipai yra objektai, kurie yra duomenų ir operacijų apibrėžimai, bet neturi įgyvendinimo detalių. Šiuo atveju mes žinome saugomus duomenis ir operacijas, kurias galima atlikti su duomenimis, bet nežinome apie diegimo detales. Diegimo detalių neturėjimo priežastis yra ta, kad, pavyzdžiui, kiekviena programavimo kalba turi skirtingą diegimo strategiją; C duomenų struktūra įgyvendinama naudojant struktūras, o C++ duomenų struktūra įgyvendinama naudojant objektus ir klases.
Pavyzdžiui, Sąrašas yra abstraktus duomenų tipas, kuris įgyvendinamas naudojant dinaminį masyvą ir susietą sąrašą. Eilė įgyvendinama naudojant susietą sąrašu pagrįstą eilę, masyvu pagrįstą eilę ir dėtu pagrįstą eilę. Žemėlapis įgyvendinamas naudojant medžio žemėlapį, maišos žemėlapį arba maišos lentelę.
Abstraktaus duomenų tipo modelis
Prieš sužinodami apie abstrakčių duomenų tipo modelį, turėtume žinoti apie abstrakciją ir inkapsuliavimą.
xor c++
Abstrakcija: Tai vidinių detalių slėpimo nuo vartotojo technika ir vartotojui rodoma tik reikiama informacija.
Inkapsuliavimas: Tai duomenų ir nario funkcijos sujungimo viename vienete technika, žinoma kaip inkapsuliacija.
Aukščiau pateiktame paveikslėlyje parodytas ADT modelis. ADT modelyje yra dviejų tipų modeliai, ty viešoji funkcija ir privati funkcija. ADT modelyje taip pat yra duomenų struktūros, kurias naudojame programoje. Šiame modelyje atliekama pirmoji inkapsuliacija, ty visi duomenys suvyniojami į vieną vienetą, ty ADT. Tada abstrakcija atliekama reiškia, kad parodomos operacijos, kurias galima atlikti duomenų struktūroje ir kokios yra duomenų struktūros, kurias naudojame programoje.
Supraskime abstrakčių duomenų tipą naudodami realų pavyzdį.
git push komanda
Jei turėtume omenyje išmanųjį telefoną. Mes žiūrime į aukštas išmaniojo telefono specifikacijas, tokias kaip:
- 4 GB RAM
- Snapdragon 2.2ghz procesorius
- 5 colių LCD ekranas
- Dviguba kamera
- Android 8.0
Aukščiau pateiktos išmaniojo telefono specifikacijos yra duomenys, taip pat išmaniajame telefone galime atlikti šias operacijas:
Išmanusis telefonas yra subjektas, kurio duomenys arba specifikacijos ir operacijos pateikti aukščiau. Abstraktus / loginis vaizdas ir operacijos yra abstraktūs arba loginiai išmaniojo telefono vaizdai.
Aukščiau pateikto abstraktaus / loginio vaizdo įgyvendinimo vaizdas pateikiamas toliau:
class Smartphone { private: int ramSize; string processorName; float screenSize; int cameraCount; string androidVersion; public: void call(); void text(); void photo(); void video(); }
Aukščiau pateiktas kodas yra specifikacijų ir operacijų, kurias galima atlikti išmaniajame telefone, įgyvendinimas. Diegimo vaizdas gali skirtis, nes skiriasi programavimo kalbų sintaksė, tačiau abstraktus/loginis duomenų struktūros vaizdas išliktų toks pat. Todėl galime teigti, kad abstraktus/loginis vaizdas nepriklauso nuo įgyvendinimo požiūrio.
Pastaba: Žinome operacijas, kurias galima atlikti su iš anksto nustatytais duomenų tipais, tokiais kaip int, float, char ir kt., bet nežinome duomenų tipų įgyvendinimo detalių. Todėl galime teigti, kad abstraktus duomenų tipas yra laikomas paslėptu langeliu, kuris slepia visas vidines duomenų tipo detales.
Duomenų struktūros pavyzdys
Tarkime, kad turime 4 dydžio indekso masyvą. Turime indekso vietą, prasidedančią nuo 0, 1, 2, 3. Masyvas yra duomenų struktūra, kurioje elementai saugomi gretimoje vietoje. Pirmojo elemento atminties adresas yra 1000, antrojo elemento yra 1004, trečio elemento yra 1008, o ketvirto elemento yra 1012. Kadangi jis yra sveikojo skaičiaus tipo, jis užims 4 baitus, o skirtumas tarp kiekvieno elemento adresų yra 4 baitų. Masyve saugomos reikšmės yra 10, 20, 30 ir 40. Šios reikšmės, indekso pozicijos ir atminties adresai yra įgyvendinimai.
Abstraktus arba loginis sveikųjų skaičių masyvo vaizdas gali būti nurodytas taip:
- Jame saugomas sveikojo skaičiaus elementų rinkinys.
- Jis nuskaito elementus pagal padėtį, ty indeksą.
- Jis keičia elementus pagal indeksą
- Jis atlieka rūšiavimą
Sveikųjų skaičių masyvo įgyvendinimo vaizdas:
a[4] = {10, 20, 30, 40} cout<< a[2] a[3] = 50