bugün

arayüz
Bilgisayardan gelen dijital komutları mekanik komutlara cevirmeye yarayan , eskiden her komut tarzı icin spesifik olmasına ragmen , gunumuzde belirli bir standarta oturtulmus , bilisim dunyasının tercumanı ...
arabağ, arabirim anlamında ingilizce bir terimdir.
aynı kodlama ve ya sinyal dizilimini kullanmayan iki sistemin haberleşebilmeleri için bu şifrelemeleri birbirleine çeviren, bir nevi tercüman görevi gören bir üçüncü sisteme denir. genellikle digital sistemlerde kullanılan bir terimdir.
nesildaş yeni yazar. *
(bkz: dokuzlar örgütü)
(#15392405) kampanyasına destek vermemiz gereken yazar . hoş gelmiş .
milli şuuru hissettiren ve heyecanimızı diri tutan yazardır. teşekkülerimizle.
(bkz: 19 mayıs taki kampanyaya katılım gösteren yazarlar)
kızgın, celalli ve eden bulur yazarı. başarılar diliyorum.*
c++ ile çalışıyorken bunu pure abstract base class olarak da bilirsiniz. bu konu hakkında kaynak şurası:

https://isocpp.org/wiki/faq/abcs

Hatta biraz da burası:

https://en.wikibooks.org/...ses/Pure_Abstract_Classes

Genel olarak bahsetmek gerekirse:

interface'ler, classların sahip olması gereken özellikleri tanımlar. bu interface'ler içerisine kod yazılmaz. özellik ve metotlar belirtilir. örneğin bir class bir interfaceten miras alıyorsa o interface'in tüm metotlarını override etmeli. interface'te bir de ikinci durum var. bu duruma göre interfacelerden virtual classlar gibi object reference oluşturulamaz. bir class multiple interface calling işlemini yapabilir. çünkü c# ve java gibi diller multiple intheritance desteklemez.

Tanımlanırken csharp için diyorum isim olarak hungarian notation'a göre başlarına ı (büyük ı harfi) alarak IFalan gibi şekilde tanımlanırlar. Bu ı harfi bir zorunluluk olmasa da programcıların hungarian notation'a uyması daha iyidir denilir. Yine belirtmek gerekirse interface keywordü ile başlamalı ve public olmalılar.

kullanacağınız yere göre performansta düşüklükler yapar deniliyor. ben demiyorum ancak diyenlerin gerekçelerine göre:

çünkü içerisinde bulunan metotlar dynamic distpatch edilirler. java için dynamic iken c# için static olabilir sanıyorum ki.

hede();

metodunun subclasstan mı yoksa base classtan mı çağırılacağına run time'da karar vereceği için performans kaybı yaşatabilir.

Dynamic Dispatch için bir örnek:

komik ehehe = new komik();
komik höhööh = new komik1();

ehehe.hehehe(); // çıktısı hehehehe
höhööh.hehehe(); // çıktısı hohohoh

görüldüğü gibi "höhööh" referans olarak "komik" sınıfını gösterse de initialize edildiği sınıf komik1 olduğu için çok farklı bir çıktı verecektir. işte dynamic dispatch olayı bu olmakta.

10 satırlık hello world uygulaması bu performans testi için kesin sonuç değildir. hatta ölçüt bile değildir. çünkü burada performansı etkileyeceği düşünülen bu 10 satırlık kod değil virtual method table dediğimiz alandır. oraya bir sorgu yapıldığından tepki kontrol edilir.

tabii ki performans yok, performansı düşürüyor demek programcı kalitesine bağlıdır. optimizasyondan geçmiş bir projede interface yavaş çalışıyor demeniz olası değildir. zaten tek derdiniz interface'in performans düşürdüğü iddiası olsun.