ADT, bilgisayar bilimlerinde bir grup veriyi ve bu veri üzerinde yapılabilecek işlemleri düzenleyen yapının adıdır. Soyutluk kelimes, veri yapısının bir tasarım olması ve kullanıcı için, yapının içinin tamamen soyut olması, kullanan kişilerin bu veri tipinin uygulama detayları ile ilgili bilgisinin olmasını gerektirmemesidir.
Örnek soyut veri tipleri olarak bağlı liste , yığın (stack) , sıra ( queue) , kompleks sayılar , kümeler sayılabilir.
Veri tipinin soyut olması aşağıdaki C/C++ dilindeki stack (yığın) örneği ile açıklanabilir:
Örneğin dilimizdeki tanımlı fonksiyonlar aşağıdaki şekilde olsun. (bu fonksiyonlar aynı zamanda arayüz (interface) fonksiyonlarıdır)
long stack_create(); /* yeni bir stack yap */
void stack_push(long stack, void *item); /* stack'e yeni bir eleman (item) koy */
void *stack_pop(long stack); /* stack'in tepesindne bir eleman al */
void stack_delete(long stack); /* stack'i sil */
Bu fonksiyonlar kullanılarak, iç yapılarından tamamen habersiz bir programcı aşağıdaki şekilde program yazıp bu veri tipini kullanabilir:
long stack;
struct foo *f;
stack = stack_create(); /* yeni bir stack yap */
stack_push(stack, f); /* foo'yapısını stack'e ekle */
f = stack_pop(stack); /* stackin en üstündeki elemanı al */
ADT’nin (abstract data types) daha verimli olabilmesi için özellikle nesne yönelimli programlama dillerinde, her tip nesneyi alabilecek yapıda olması önerilir. Bu sayede çok şekilcilik (polymorphism) sağlanmış olur ve stack içine istenilen tipten veri konulabilir. Diğer bir yöntem ise stack tanımında template kullanmaktır. Bu sayede bütün stack elemanları tek bir tip olacak ancak tip tanımı stack oluşturulurken verilmiş olacaktır.
ADT yapısına uygun olarak kodlanan ve dizi kullanan bir stack uygulaması: stack_arr.rar
Hocam gerçekten mantığını çok güzel açıklamışsınnız. Yazılarınızın devamını dilerim.
Hocam çok teşekkürler; kolay anlaşılır ve önemli noktalara değinilen özet bir anlatım.