Duck Typing
Bilgisayar programlamasında Duck Typing(Ördek Yazımı) bir yazılım kavramıdır, bir nesnenin belirli bir amaç için kullanılıp kullanılamayacağını belirlemek için bir uygulamadır. Kavramın adı Ördek testinden gelmektedir testin mantığı kısaca "Ördek gibi yürüyorsa ve ördek gibi vaklıyorsa, o zaman bir ördek olmalıdır" cümlesidir. Normal programlamada, uygunluk bir nesnenin türüne göre belirlenir. Duck Typing'de, bir nesnenin uygunluğu, nesnenin kendisinin türünden ziyade belirli yöntemlerin ve özelliklerin varlığıyla belirlenir.
Örnek
[değiştir | kaynağı değiştir]Aşağıdaki örnek Python 3'te Ördek Yazımının nasıl kullanılabileceğini gösteren basit bir örnektir.
class Ördek:
def uç(self):
print("Ördek uçuyor")
class Kartal:
def uç(self):
print("Kartal uçuyor")
class Balina:
def yüz(self):
print("Balina yüzüyor")
for hayvan in Ördek(), Kartal(), Balina():
hayvan.uç()
Yukarıdaki programın çıktısı şu şekildedir:
Ördek uçuyor
Kartal uçuyor
AttributeError: 'Balina' object has no attribute 'uç'
Yukarıdaki AttributeError hatasının Türkçesi:
NitelikHatası: 'Balina' nesnesinin 'uç' niteliği yok
Statik olarak yazılmış dillerde
[değiştir | kaynağı değiştir]Boo gibi bazı statik olarak yazılmış dillerde,[1] sınıf türü denetiminin derleme zamanı yerine çalışma zamanında gerçekleşeceği belirtilebilir. Java'da Duck typing, MethodHandle API kullanılarak gerçekleştirilebilir.[2]
Kaynakça
[değiştir | kaynağı değiştir]- ^ "Boo dilinde duck typing". 6 Ekim 2008 tarihinde kaynağından arşivlendi.
- ^ "Bir StackOverflow sorusu 'Java MethodHandles kullanarak Duck Typing uygulaması'". 1 Temmuz 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Ağustos 2020.