logo

Abstrakcyjny typ danych w strukturze danych

Zanim dowiemy się o abstrakcyjnym typie danych, powinniśmy wiedzieć, czym jest struktura danych.

Co to jest struktura danych?

Struktura danych to technika organizowania danych w celu umożliwienia ich efektywnego wykorzystania. Istnieją dwa sposoby przeglądania struktury danych:

    Modele matematyczne/ logiczne/ abstrakcyjne/ widoki:Struktura danych to sposób organizacji danych, który wymaga pewnych protokołów lub reguł. Reguły te należy modelować w ramach modelu logicznego/abstrakcyjnego.Realizacja:Druga część to część wdrożeniowa. Reguły muszą być zaimplementowane przy użyciu jakiegoś języka programowania.

Dlaczego struktura danych?

Oto zalety stosowania struktury danych:

  • Są to podstawowe składniki używane do tworzenia szybkich i wydajnych algorytmów.
  • Pomagają nam zarządzać danymi i organizować je.
  • Struktury danych sprawiają, że kod jest czystszy i łatwiejszy do zrozumienia.

Co to jest abstrakcyjny typ danych?

Abstrakcyjny typ danych to abstrakcja struktury danych, która zapewnia jedynie interfejs, do którego musi przylegać struktura danych. Interfejs nie podaje żadnych konkretnych szczegółów na temat tego, co należy zaimplementować ani w jakim języku programowania.

Innymi słowy, możemy powiedzieć, że abstrakcyjne typy danych to byty będące definicjami danych i operacji, ale nie posiadające szczegółów implementacji. W tym przypadku znamy dane, które przechowujemy i operacje, jakie można na nich wykonać, ale nie znamy szczegółów implementacji. Powodem braku szczegółów implementacji jest to, że każdy język programowania ma na przykład inną strategię implementacji; struktura danych C jest implementowana przy użyciu struktur, natomiast struktura danych C++ jest implementowana przy użyciu obiektów i klas.

Na przykład, Lista to abstrakcyjny typ danych zaimplementowany przy użyciu tablicy dynamicznej i połączonej listy. Kolejka jest implementowana przy użyciu połączonej kolejki opartej na liście, kolejki opartej na tablicy i kolejki opartej na stosie. Mapa jest implementowana przy użyciu mapy drzewa, mapy skrótów lub tabeli skrótów.

Abstrakcyjny model typu danych

Zanim dowiemy się o abstrakcyjnym modelu danych, powinniśmy wiedzieć o abstrakcji i enkapsulacji.

Sree Ramanujan

Abstrakcja: Jest to technika ukrywania wewnętrznych szczegółów przed użytkownikiem i pokazywania mu jedynie niezbędnych szczegółów.

Hermetyzacja: Jest to technika łączenia danych i funkcji składowej w jedną jednostkę, nazywana enkapsulacją.

Abstrakcyjny typ danych w strukturze danych

Powyższy rysunek przedstawia model ADT. W modelu ADT istnieją dwa typy modeli, tj. funkcja publiczna i funkcja prywatna. Model ADT zawiera także struktury danych, których używamy w programie. W tym modelu najpierw przeprowadzana jest enkapsulacja, czyli wszystkie dane są opakowane w jedną jednostkę, czyli ADT. Następnie przeprowadzana jest abstrakcja, czyli pokazywanie operacji, jakie można wykonać na strukturze danych oraz jakich struktur danych używamy w programie.

Przyjrzyjmy się abstrakcyjnemu typowi danych na przykładzie z życia wziętego.

Jeśli weźmiemy pod uwagę smartfon. Przyglądamy się wysokiej specyfikacji smartfona, takiej jak:

  • 4 GB pamięci RAM
  • Procesor Snapdragon 2,2 GHz
  • 5-calowy ekran LCD
  • Podwójny aparat
  • Androida 8.0

Powyższe specyfikacje smartfona są danymi, na smartfonie możemy także wykonać następujące operacje:

polecenie git push
    dzwonić():Możemy dzwonić przez smartfon.tekst():Możemy wysłać wiadomość SMS.zdjęcie():Możemy kliknąć zdjęcie.wideo():Możemy również nakręcić film.

Smartfon to podmiot, którego dane lub specyfikacje i działanie podano powyżej. Abstrakcyjny/logiczny widok i operacje to abstrakcyjne lub logiczne widoki smartfona.

Poniżej przedstawiono widok implementacji powyższego abstrakcyjnego/logicznego widoku:

 class Smartphone { private: int ramSize; string processorName; float screenSize; int cameraCount; string androidVersion; public: void call(); void text(); void photo(); void video(); } 

Powyższy kod jest implementacją specyfikacji i operacji, które można wykonać na smartfonie. Widok implementacji może się różnić, ponieważ składnia języków programowania jest inna, ale abstrakcyjny/logiczny widok struktury danych pozostanie taki sam. Można zatem powiedzieć, że widok abstrakcyjny/logiczny jest niezależny od widoku implementacyjnego.

Uwaga: znamy operacje, które można wykonać na predefiniowanych typach danych, takich jak int, float, char itp., ale nie znamy szczegółów implementacji tych typów danych. Dlatego możemy powiedzieć, że abstrakcyjny typ danych jest uważany za ukryte pole, które ukrywa wszystkie wewnętrzne szczegóły typu danych.

Przykład struktury danych

Załóżmy, że mamy tablicę indeksów o rozmiarze 4. Mamy lokalizację indeksu zaczynającą się od 0, 1, 2, 3. Tablica to struktura danych, w której elementy są przechowywane w ciągłym miejscu. Adres pamięci pierwszego elementu to 1000, drugiego elementu to 1004, trzeciego elementu to 1008, a czwartego elementu to 1012. Ponieważ jest to typ całkowity, więc zajmie 4 bajty, a różnica między adresami każdego elementu wynosi 4 bajty. Wartości przechowywane w tablicy to 10, 20, 30 i 40. Te wartości, pozycje indeksów i adresy pamięci są implementacjami.

Abstrakcyjny lub logiczny widok tablicy liczb całkowitych można określić jako:

  • Przechowuje zbiór elementów typu całkowitego.
  • Odczytuje elementy według pozycji, tj. indeksu.
  • Modyfikuje elementy według indeksu
  • Wykonuje sortowanie

Widok implementacji tablicy liczb całkowitych:

 a[4] = {10, 20, 30, 40} cout<< a[2] a[3] = 50