Soyut veri tipini bilmeden önce veri yapısının ne olduğunu bilmeliyiz.
Veri yapısı nedir?
Veri yapısı, verilerin verimli bir şekilde kullanılabilmesi için verileri organize etme tekniğidir. Veri yapısını görüntülemenin iki yolu vardır:
Neden veri yapısı?
Veri yapısını kullanmanın avantajları şunlardır:
- Bunlar hızlı ve güçlü algoritmalar oluşturmak için kullanılan temel bileşenlerdir.
- Verileri yönetmemize ve düzenlememize yardımcı olurlar.
- Veri yapıları kodun daha temiz ve anlaşılmasını kolaylaştırır.
Soyut veri türü nedir?
Soyut veri türü, yalnızca veri yapısının uyması gereken arayüzü sağlayan bir veri yapısının soyutlamasıdır. Arayüz, bir şeyin uygulanması gerektiği veya hangi programlama dili ile ilgili herhangi bir spesifik ayrıntı vermez.
Yani soyut veri türleri, veri ve işlemlerin tanımı olan ancak uygulama detayları olmayan varlıklardır diyebiliriz. Bu durumda sakladığımız verileri ve veriler üzerinde yapılabilecek işlemleri biliyoruz ancak uygulama detaylarını bilmiyoruz. Uygulama ayrıntılarının bulunmamasının nedeni, her programlama dilinin farklı bir uygulama stratejisine sahip olmasıdır; C++ veri yapısı nesneler ve sınıflar kullanılarak uygulanırken, C veri yapısı yapılar kullanılarak uygulanır.
Örneğin, Liste, dinamik bir dizi ve bağlantılı liste kullanılarak uygulanan soyut bir veri türüdür. Bir kuyruk, bağlantılı liste tabanlı kuyruk, dizi tabanlı kuyruk ve yığın tabanlı kuyruk kullanılarak uygulanır. Bir Harita, Ağaç haritası, karma haritası veya karma tablosu kullanılarak uygulanır.
Soyut veri türü modeli
Soyut veri türü modelini bilmeden önce soyutlama ve kapsülleme hakkında bilgi sahibi olmalıyız.
Java dizi dizisi
Soyutlama: İç detayların kullanıcıdan gizlenmesi ve kullanıcıya sadece gerekli detayların gösterilmesi tekniğidir.
Kapsülleme: Verileri ve üye fonksiyonunu tek bir birimde birleştirme tekniğidir ve kapsülleme olarak bilinir.
Yukarıdaki şekil ADT modelini göstermektedir. ADT modelinde kamusal işlev ve özel işlev olmak üzere iki tür model vardır. ADT modeli aynı zamanda bir programda kullandığımız veri yapılarını da içerir. Bu modelde ilk kapsülleme gerçekleştirilir, yani tüm veriler tek bir birime yani ADT'ye sarılır. Daha sonra soyutlamanın yapılması, veri yapısı üzerinde yapılabilecek işlemleri ve bir programda kullandığımız veri yapılarının neler olduğunu göstermek anlamına gelir.
Soyut veri türünü gerçek dünyadan bir örnekle anlayalım.
Akıllı telefonu ele alırsak. Akıllı telefonun aşağıdaki gibi yüksek özelliklerine bakıyoruz:
- 4 GB RAM
- Aslanağzı 2.2 GHz işlemci
- 5 inç LCD ekran
- Cift kamera
- Android8.0
Akıllı telefonun yukarıdaki özellikleri verilerdir ve ayrıca akıllı telefonda aşağıdaki işlemleri de gerçekleştirebiliriz:
Akıllı telefon, verileri veya özellikleri ve işlemleri yukarıda verilen bir varlıktır. Soyut/mantıksal görünüm ve işlemler, bir akıllı telefonun soyut veya mantıksal görünümleridir.
Yukarıdaki soyut/mantıksal görünümün uygulama görünümü aşağıda verilmiştir:
class Smartphone { private: int ramSize; string processorName; float screenSize; int cameraCount; string androidVersion; public: void call(); void text(); void photo(); void video(); }
Yukarıdaki kod, akıllı telefonda gerçekleştirilebilecek özelliklerin ve işlemlerin uygulanmasıdır. Programlama dillerinin sözdizimi farklı olduğundan uygulama görünümü farklı olabilir, ancak veri yapısının soyut/mantıksal görünümü aynı kalacaktır. Dolayısıyla soyut/mantıksal görüşün uygulama görüşünden bağımsız olduğunu söyleyebiliriz.
Not: İnt, float, char vb. gibi önceden tanımlanmış veri türleri üzerinde yapılabilecek işlemleri biliyoruz ancak veri türlerinin uygulama ayrıntılarını bilmiyoruz. Dolayısıyla soyut veri tipinin, veri tipinin tüm iç detaylarını gizleyen gizli kutu olarak değerlendirildiğini söyleyebiliriz.
Veri yapısı örneği
Diyelim ki 4 boyutunda bir indeks dizimiz var. 0, 1, 2, 3'ten başlayan bir indeks konumumuz var. Dizi, elemanların bitişik bir konumda saklandığı bir veri yapısıdır. Birinci elemanın hafıza adresi 1000, ikinci elemanın 1004, üçüncü elemanın 1008 ve dördüncü elemanın hafıza adresi 1012'dir. Tamsayı tipinde olduğundan 4 byte yer kaplar ve her elemanın adresleri arasındaki fark 4'tür. bayt. Bir dizide saklanan değerler 10, 20, 30 ve 40'tır. Bu değerler, indeks konumları ve bellek adresleri uygulamalardır.
unix vs windows
Tamsayı dizisinin soyut veya mantıksal görünümü şu şekilde ifade edilebilir:
- Tamsayı tipindeki bir dizi öğeyi saklar.
- Öğeleri konuma göre, yani dizine göre okur.
- Öğeleri indekse göre değiştirir
- Sıralama işlemini gerçekleştirir
Tamsayı dizisinin uygulama görünümü:
a[4] = {10, 20, 30, 40} cout<< a[2] a[3] = 50