- Covariance and contravariance (computer science)
- Many programming language type systems support subtyping. For instance, if the type Cat is a subtype of Animal, then an expression of type Cat should be substitutable wherever an expression of type Animal is used.
Bu içerik, derleyici geliştiriciyseniz veya derleyicinin API'sini kullanıyorsanız ya da derleyicinin tip sistemini aşırı derecede kullanıyorsanız
doğal olarak karşılaşacağınız bir içeriği ele almaktadır.
Ve bu, kodlama hayatımızda doğal olarak yerleşiktir.
Kısaca, Animal ve Dog olmak üzere iki tipimiz olduğunu varsayalım.
Animal'a Dog atanabiliyorsa buna kovaryans (공변성)denir ve
tersine Dog'a Animal atanabiliyorsa buna kontravaryans (반공변성)denir.
Genellikle Dog'a Animal ataması yapılamaz.
Çünkü bu, sıradan insanların bakış açısından uygun değildir ve
bu nedenle derleyici geliştiricileri bunu dikkate alarak bazı bölümleresadece kontravaryansı (반공변성) eklerler.
Genellikle yukarıdaki gibi, fonksiyonun giriş değerleri için kontravaryans (반공변성) kullanılırken, çıkış değerleri için kovaryans (공변성) korunur.
Bu kontravaryansın (반공변성) neden gerekli olduğunudüşünebilirsiniz.
Bu, olay işleme gibi alanlarda daha esnek ve çok biçimli çalışmanıza yardımcı olur.
Aksine, kovaryans (공변성) sorunlara yol açabilir.
Yukarıdaki kodda, Dog'un kullanılacağı yere Animal koyarak esneklik sağlanmış ve çok biçimliliğe dikkat edilebilmiştir.
Aksine, Animal yerine Dog'un alt türü olan Chiwawa gibi bir tür kullanılsaydı, olay işleyicisi çalıştırılırken Dog'da olmayan Chiwawa'ya özgü bir arabirim nedeniyle hata oluşabilirdi.
Aksine, fonksiyonu çalıştırırken Animal türü kullanılacağından, çalıştırma sırasında Animal'ın alt türlerini otomatik olarak ekle diyerek
Animal'a Dog atanmış gibi görünebilir.
Bu nedenle, kontravaryans (반공변성) genellikle giriş değerlerinde kullanılır.
İnvaryans (이변성), İnvaryans (불변성)
Kısaca değinecek olursak, invaryans (이변성) hem kovaryans (공변성) hem de kontravaryansı (반공변성) desteklerken, invaryans (불변성) hiçbirini desteklemez.
Sonuç Olarak
Bu içeriğin basit veya karmaşık olabileceğinden
okumanız faydalı olabilir.
Yorumlar0