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
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
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]