İçeriğe geç
parazade

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?
İçindekiler
  1. Soyutlama nedir?
  2. Nasıl uygulanır?
  3. Doğru seviyede soyutlama

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.

İlgili terimler

Kapsülleme(Encapsulation)Kapsülleme (encapsulation), nesne yönelimli programlamada bir nesnenin verilerini ve bu verilerle çalışan metotları bir arada tutup veriye dışarıdan doğrudan erişimi sınırlayan ilkedir. Veri yalnız kontrollü metotlarla okunur ve değiştirilir.Arayüz(Interface)Arayüz (interface), nesne yönelimli programlamada bir sınıfın hangi metotları sağlaması gerektiğini tanımlayan, ancak bu metotların nasıl çalışacağını belirtmeyen sözleşmedir. Günlük dilde arayüz, kullanıcının yazılımla etkileşim kurduğu ekranı da ifade eder.Nesne Yönelimli Programlama(Object-Oriented Programming)Nesne yönelimli programlama (OOP), yazılımı veri ve bu veri üzerinde çalışan davranışları bir arada tutan nesneler etrafında düzenleyen programlama yaklaşımıdır. Kapsülleme, kalıtım, çok biçimlilik ve soyutlama temel ilkeleridir.Kalıtım(Inheritance)Kalıtım (inheritance), nesne yönelimli programlamada bir sınıfın başka bir sınıfın özelliklerini ve metotlarını devralmasıdır. Devralan sınıfa alt sınıf, devredilen sınıfa üst sınıf denir.Nesne(Object)Nesne (object), nesne yönelimli programlamada bir sınıftan üretilen, kendi verilerini (özellikler) ve davranışlarını (metotlar) taşıyan somut örnektir. Örneğin `Araba` sınıfından üretilen her araç ayrı bir nesnedir.Sınıf(Class)Sınıf (class), nesne yönelimli programlamada aynı türden nesnelerin hangi verileri ve davranışları taşıyacağını tanımlayan şablondur. Sınıftan üretilen her somut örneğe nesne denir.PythonPython, okunabilir ve sade sözdizimiyle bilinen, genel amaçlı, açık kaynaklı bir programlama dilidir. Veri bilimi, yapay zekâ, otomasyon ve web geliştirmede en yaygın kullanılan dillerden biridir.