Soyut Veri Türleri

Soyut Veri Türleri

Bir Soyut Veri Türü (ADT) bir veri yapısı için bir dizi işlem ve davranışı tanımlayan kavramsal bir modeldir bu işlemlerin nasıl uygulandığını belirtmeden veya verilerin bellekte nasıl düzenlendiği. ADT'nin tanımı yalnızca neyden bahseder operasyonlar yapılacak ama değil Nasıl bu işlemler gerçekleştirilecektir. Verilerin bellekte nasıl düzenleneceğini ve işlemlerin uygulanması için hangi algoritmaların kullanılacağını belirtmez. Uygulamadan bağımsız bir görünüm sağladığı için 'soyut' olarak adlandırılır.

Yalnızca temel bilgilerin sağlanması ve ayrıntıların saklanması işlemine denir. soyutlama.

ADT'nin özellikleri

Soyut veri türleri (ADT'ler), verileri ve bu veriler üzerindeki işlemleri tek bir birimde kapsüllemenin bir yoludur. ADT'lerin temel özelliklerinden bazıları şunlardır:

  • Soyutlama: Kullanıcının veri yapısının uygulanmasını bilmesine gerek yoktur, yalnızca temel bilgiler sağlanır.
  • Daha İyi Kavramsallaştırma: ADT bize gerçek dünyanın daha iyi kavramsallaştırılmasını sağlar.
  • Sağlam: Program sağlamdır ve hataları yakalama yeteneğine sahiptir.
  • Kapsülleme : ADT'ler verilerin dahili ayrıntılarını gizler ve kullanıcıların verilerle etkileşimde bulunabilmesi için genel bir arayüz sağlar. Bu, veri yapısının daha kolay bakımını ve değiştirilmesini sağlar.
  • Veri Soyutlama : ADT'ler, verilerin uygulama ayrıntılarından bir düzeyde soyutlama sağlar. Kullanıcıların yalnızca veriler üzerinde gerçekleştirilebilecek işlemleri bilmesi gerekir, bu işlemlerin nasıl uygulandığını değil.
  • Veri Yapısından Bağımsızlık : ADT'ler, ADT'nin işlevselliğini etkilemeden diziler veya bağlantılı listeler gibi farklı veri yapıları kullanılarak uygulanabilir.
  • Bilgi Gizleme: ADT'ler yalnızca yetkili kullanıcılara ve işlemlere erişime izin vererek verilerin bütünlüğünü koruyabilir. Bu, hataların ve verilerin kötüye kullanılmasının önlenmesine yardımcı olur.
  • Modülerlik : ADT'ler, daha büyük ve daha karmaşık veri yapıları oluşturmak için diğer ADT'lerle birleştirilebilir. Bu, programlamada daha fazla esneklik ve modülerlik sağlar.

Genel olarak ADT'ler, verileri yapılandırılmış ve verimli bir şekilde düzenlemek ve işlemek için güçlü bir araç sağlar.

Bu görüntü, bir Soyut Veri Türünün (ADT) genel ve özel işlevleri kullanarak iç veri yapılarını (bağlantılı diziler gibi) uygulama programına yalnızca tanımlı bir arayüzü açığa çıkararak nasıl gizlediğini gösterir.

Soyut Veri Türleri

Neden ADT'leri Kullanmalısınız?

Java'da ADT'leri kullanmanın temel nedenleri aşağıda listelenmiştir:

  • Kapsülleme: Karmaşık uygulama ayrıntılarını temiz bir arayüzün arkasına gizler.
  • Yeniden kullanılabilirlik : Harici kullanımı değiştirmeden farklı dahili uygulamalara (ör. dizi veya bağlantılı liste) izin verir.
  • Modülerlik: Mantığı ayırarak bakım ve güncellemeleri basitleştirir.
  • Güvenlik: Hataları ve istenmeyen değişiklikleri en aza indirerek doğrudan erişimi önleyerek verileri korur.

Soyutlama Örneği

Örneğin, int float ve char gibi ilkel değerleri, bu veri türlerinin, uygulama ayrıntıları hakkında herhangi bir bilgi olmadan çalışabileceği ve üzerinde gerçekleştirilebileceği anlayışıyla kullanırız. ADT'ler tanımlayarak benzer şekilde çalışır Uygulamalarını detaylandırmadan hangi işlemlerin mümkün olduğu.

ADT'ler ve UDT'ler Arasındaki Fark

Aşağıdaki tablo ADT'ler ve UDT'ler arasındaki farkı göstermektedir.

Bakış açısı

Soyut Veri Türleri (ADT'ler)

Kullanıcı Tanımlı Veri Türleri (UDT'ler)

Tanım

Bir nesne sınıfını ve bunlar üzerinde gerçekleştirilebilecek işlemleri, beklenen davranışlarıyla (anlambilim) birlikte, ancak uygulama ayrıntılarını belirtmeden tanımlar.

Hem yapıyı hem de işlemleri belirten mevcut temel türlerin birleştirilmesi veya genişletilmesiyle oluşturulan özel bir veri türü.

Odak

Nasıl uygulandıklarını dikte etmeden hangi işlemlere izin verilir ve nasıl davranırlar.

Verilerin bellekte nasıl organize edildiği ve işlemlerin nasıl yürütüldüğü.

Amaç

Veri yapılarını kavramsal bir şekilde tanımlamak için soyut bir model sağlar.

Programcıların ilkel türleri kullanarak veri yapılarının somut uygulamalarını oluşturmasına olanak tanır.

Uygulama Detayları

İşlemlerin nasıl uygulandığını veya verilerin nasıl yapılandırıldığını belirtmez.

Yapıyı uygulamak için veri türlerinin nasıl oluşturulacağını ve düzenleneceğini belirtir.

Kullanım

Veri yapılarını tasarlamak ve kavramsallaştırmak için kullanılır.

ADT'ler tarafından tanımlanan soyut kavramları gerçekleştiren veri yapılarını uygulamak için kullanılır.

Örnek

ADT Yığını ADT Sırası ADT'yi listeleyin.

Sınıf numaralandırma kayıtlarını yapılandırır.

ADT örnekleri

Şimdi üç yaygın ADT'yi anlayalım: List ADT Stack ADT ve Queue ADT.

1. ADT'yi listeleyin

ADT Listesi (Soyut Veri Türü), bir dizi işlemi destekleyen sıralı bir öğe koleksiyonudur dahili uygulamayı belirtmeden . Erişimi depolamak ve verileri değiştirmek için düzenli bir yol sağlar.

Soyut Veri TürleriListe görünümleri

Operasyonlar:

List ADT'nin gerekli verileri sırayla saklaması ve aşağıdaki işlemlere sahip olması gerekir :

  • elde etmek(): Herhangi bir konumda listeden bir öğe döndürün.
  • sokmak(): Listedeki herhangi bir konuma bir öğe ekleyin.
  • kaldırmak(): Boş olmayan bir listeden herhangi bir öğenin ilk oluşumunu kaldırın.
  • kaldırAt(): Boş olmayan bir listeden belirtilen konumdaki öğeyi kaldırın.
  • yer değiştirmek(): Herhangi bir konumdaki bir öğeyi başka bir öğeyle değiştirin.
  • boyut(): Listedeki öğe sayısını döndürün.
  • isEmpty(): Liste boşsa true değerini döndürün; aksi takdirde false değerini döndürür.
  • isFull(): Liste doluysa true değerini döndürün, aksi halde false değerini döndürün. Yalnızca sabit boyutlu uygulamalarda uygulanabilir (ör. dizi tabanlı listeler).

2. Yığın ADT

Stack ADT, LIFO (Son Giren İlk Çıkar) ilkesini izleyen doğrusal bir veri yapısıdır. Öğelerin yalnızca yığının üst kısmı adı verilen bir uçtan eklenmesine ve çıkarılmasına olanak tanır.

Soyut Veri TürleriYığın görünümü

Operasyonlar:

Stack ADT'de ekleme ve silme sırası FILO veya LIFO Prensibine göre olmalıdır. Öğeler yığının tepesi olarak adlandırılan aynı uçtan eklenir ve çıkarılır. Ayrıca aşağıdaki işlemleri de desteklemelidir:

  • itmek(): Üst adı verilen yığının bir ucuna bir öğe ekleyin.
  • pop(): Boş değilse, yığının en üstündeki öğeyi kaldırın ve geri gönderin.
  • göz at(): Yığın boş değilse, öğeyi kaldırmadan yığının en üstüne döndürün.
  • boyut(): Yığındaki öğe sayısını döndürün.
  • isEmpty(): Yığın boşsa true değerini döndürün; aksi takdirde false değerini döndürür.
  • isFull(): Yığın doluysa true değerini döndürün; aksi takdirde false değerini döndürür. Yalnızca sabit kapasiteli yığınlarla (ör. dizi tabanlı) ilgilidir.

3. ADT Sırası

Kuyruk ADT, FIFO (İlk Giren İlk Çıkar) ilkesini izleyen doğrusal bir veri yapısıdır. Elemanların bir uçtan (arka) yerleştirilmesine ve diğer uçtan (ön) çıkarılmasına olanak sağlar.

Soyut Veri TürleriSıra Görünümü

Operasyonlar:

Kuyruk ADT, Yığın ADT'ye benzer bir tasarımı izler ancak ekleme ve silme sırası FIFO'ya değişir. Öğeler bir uçtan (arka olarak adlandırılır) takılır ve diğer uçtan (ön olarak adlandırılır) çıkarılır. Aşağıdaki işlemleri desteklemelidir:

  • sıraya almak(): Kuyruğun sonuna bir öğe ekleyin.
  • buna göre(): Kuyruk boş değilse kuyruğun ilk öğesini kaldırın ve döndürün.
  • göz at(): Kuyruk boş değilse, kuyruğun elemanını çıkarmadan döndürün.
  • boyut(): Kuyruktaki öğe sayısını döndürün.
  • isEmpty(): Kuyruk boşsa true değerini döndürün; aksi takdirde false değerini döndürür.

ADT'nin Avantajları ve Dezavantajları

Soyut veri türlerinin (ADT'ler), yazılım geliştirmede kullanmaya karar verirken dikkate alınması gereken çeşitli avantaj ve dezavantajları vardır. ADT kullanmanın bazı temel avantajları ve dezavantajları şunlardır:

Avantajı:

Avantajları aşağıda sıralanmıştır:

  • Kapsülleme : ADT'ler, verileri ve işlemleri tek bir ünitede kapsüllemenin bir yolunu sağlayarak veri yapısını yönetmeyi ve değiştirmeyi kolaylaştırır.
  • Soyutlama : ADT'ler, programlamayı kolaylaştırabilen ve hataları azaltabilen, kullanıcıların uygulama ayrıntılarını bilmelerine gerek kalmadan veri yapılarıyla çalışmasına olanak tanır.
  • Veri Yapısından Bağımsızlık : ADT'ler, değişen ihtiyaç ve gereksinimlere uyum sağlamayı kolaylaştıracak farklı veri yapıları kullanılarak uygulanabilir.
  • Bilgi Gizleme : ADT'ler erişimi kontrol ederek ve yetkisiz değişiklikleri önleyerek verilerin bütünlüğünü koruyabilir.
  • Modülerlik : ADT'ler, programlamada esnekliği ve modülerliği artırabilecek daha karmaşık veri yapıları oluşturmak için diğer ADT'lerle birleştirilebilir.

Dezavantajları:

Dezavantajları aşağıda sıralanmıştır:

  • Tepegöz : ADT'lerin uygulanması, bellek ve işleme açısından performansı etkileyebilecek ek yük oluşturabilir.
  • Karmaşıklık : ADT'lerin özellikle büyük ve karmaşık veri yapıları için uygulanması karmaşık olabilir.
  • Öğrenme Eğri: ADT'leri kullanmak, bunların uygulanması ve kullanımına ilişkin bilgi gerektirir; bunun öğrenilmesi zaman ve çaba gerektirebilir.
  • Sınırlı Esneklik: Bazı ADT'lerin işlevleri sınırlı olabilir veya her türlü veri yapısına uygun olmayabilir.
  • Maliyet : ADT'lerin uygulanması, geliştirme maliyetini artırabilecek ek kaynaklar ve yatırım gerektirebilir.
Test Oluştur