Soyutlama Nedir?
İngilizce: Abstraction
Yayın: · Son güncelleme:
Soyutlama Nedir? Kısaca
Soyutlama (abstraction), programlamada karmaşık ayrıntıları gizleyip kullanıcıya yalnız ihtiyaç duyduğu işlevleri sade bir biçimde sunma ilkesidir. Nesne yönelimli programlamada soyut sınıflar ve arayüzlerle uygulanır.

Soyutlama nedir?
Soyutlama, bir şeyin nasıl çalıştığını değil, ne yaptığını öne çıkarmaktır. Araba kullanırken direksiyonu, gaz ve fren pedalını bilirsiniz; motorun içinde yakıtın nasıl yandığını bilmeniz gerekmez. Yazılımda da bir fonksiyonu ya da nesneyi kullanan kişi, iç ayrıntılarla uğraşmadan yalnız sunulan işlevi kullanır.
Örneğin bir EpostaGonderici sınıfının gonder(alici, konu, metin) metodu, sunucuya bağlanma, kimlik doğrulama ve yeniden deneme gibi onlarca adımı içinde saklar. Kullanan kod tek satırla e-posta gönderir.
Nasıl uygulanır?
Nesne yönelimli dillerde soyutlama iki araçla kurulur. Soyut sınıf, kendisinden doğrudan nesne üretilemeyen ve bazı metotlarının içi boş bırakılan bir şablondur. Arayüz ise yalnız hangi metotların bulunması gerektiğini tanımlar.
Bir senaryo: Bildirim adlı soyut sınıf gonder() metodunu zorunlu kılar. SmsBildirim ve EpostaBildirim alt sınıfları bu metodu kendi yöntemleriyle doldurur. Sipariş sistemi yalnız bildirim.gonder() çağırır ve arka plandaki kanalın ne olduğunu bilmez. Python'da bu yapı abc modülüyle, Java'da abstract anahtar kelimesiyle kurulur.
Doğru seviyede soyutlama
Soyutlama yalnız sınıflarla sınırlı değildir. Fonksiyonlar, modüller ve API'ler de birer soyutlama katmanıdır. Bir ödeme API'si, bankalar arası karmaşık süreci birkaç basit istekle kullanılabilir hâle getirir.
Aşırı soyutlama da bir sorundur. Yalnızca bir kez kullanılacak bir iş için üç katmanlı sınıf yapısı kurmak, kodu okumayı zorlaştırır. Genel bir kural olarak aynı yapıya üçüncü kez ihtiyaç duyduğunuzda soyutlamak, erken ve gereksiz karmaşıklığı önler.
Sıkça Sorulan Sorular
Soyut sınıf ne demek?
Soyut sınıf, doğrudan nesne üretilemeyen ve alt sınıfların doldurması gereken boş metotlar içerebilen sınıftır. Ortak davranışı tanımlayıp ayrıntıyı alt sınıflara bırakmak için kullanılır.
Soyutlama ile kapsülleme arasındaki fark nedir?
Soyutlama, kullanıcıya neyin gösterileceğine, yani sade bir arayüze odaklanır. Kapsülleme ise iç verinin nasıl korunacağına ve erişimin nasıl sınırlanacağına odaklanır.