Arabirimler(interface)-1

ARABİRİM(INTERFACE)

Bir sınıfdan kalıtım almak çok avantajlıdır. Nevarki c# sadece bir sınıfdan kalıtım alabilir. C++ dinde ise birde fazla birden fazla sınıfdan kalıtım alanabilniyordu. Birden fazla sınıftan kalıtım alınabilir, ama bu kodu yonetmek sıkıntı yaratabilir. Bu yüzden c# da bir sınıfdan kaltım alabilir, fakat bunun yanında  birden fazla arabirimden kalıtım alma özelliği geldi. Boylece arabirimler doğmuş oldu. Aslında arabirimdenler üzerinde yazaılacak ve anlatılacak o kadar çok şey varki, bunu yeri geldiğinde anlatmak daha güzel olacak. Arabirimler, "I" (Interface) harfi ile baslaması zorunlu olmasada makbuldür. Bizim kod okunurluğu açısından bu önemlidir.

Yazım Şekli

Interface IArabirimAdi
{
//arabirim üyeleri(interface members)
}

Arabirim üyeleri  Methods(Method), Properties(Özellik), Indexers(indexleyici) ,Events(Olay) olabilir ve arabirimler kod içermez, sadece  tanımlama(Declare)  içerirler.

Örnek 1.

interface IAyak
    {
        int Sayisi { get; set; }     //özellik(properties)
        void Yurur();                  //method
    }


Örnek 2.

interface IRecord
{
    int Id { get; set; }
    string Name{ get; set; }
    bool Load();
    bool Save();
    bool Delete();
}

Bu interface baktığımızda, zaten içinde kod olmayan bir sınıf yazmanın anlamsız olduğunu düşünürüz. Ama biraz daha derin düşünürsek, programı birden fazla kişi yada grup yazıyor olsun. Diğer sınıfları yazacak kişilere, sınıflarının bu arayüzü uygulamasını istiyoruz. Böylece onların yazacakları sınıfta Id, Name gibi propertylerin ve load, save gibi metodların olacağından emin oluyoruz. Bir anlamda classlara bir standart getirmiş oluyoruz.

İnterface iki şekilde implement(uygulanır) edilebiliir. Kapalı ve Açık(explicitly).  Aşağıdaki örnekde Kitap sınıfı kapalı,  Defter sınıfı açık bir şekilde implement edilmiştir. Açık bir şekilde belirtmenin avantajı aynı isimli üyeye sahibi iki arabirim olabilir.  Bu iki arabirimden kalıtım alan bir sınıfda çakışma meydana geleceği için açık bir şekilde implemet etmek gerekir. Aşağıdaki örnekte Yazdir() yöntemi her iki arabirimde vardır. Defter sınıfında Yazdir() yöntemleri çakışmasın diye açık bir şekilde implement edilmiştir. Açık bir şeklde yazmak için interface isimi.Üye adı  şeklinde yazılır. void IBelge.Yazdir() gibidir.

   class Program
    {
        static void Main(string[] args)
        {
        }
   }
interface IBelge { void Yazdir(); } interface Inot { string sahibi(); void Yazdir(); } class Kitap :IBelge { public void Yazdir() { //kod yazılacak } } class Defter : IBelge,Inot { void IBelge.Yazdir() { //belge yazma kodları //açık bir impelement yapılmış. } string Inot.sahibi() { //açık bir impelement yapılmış. return ""; } void Inot.Yazdir() { //açık bir impelement yapılmış. } }
Biz Editörü kullnarak bir bir arabirimi implement edebiliriz. Açık ve kapalı.

 

 Aşağıda açık bir şekilde implement ediliyor.

 

 

 

 

Arabirim uygulanan bir sınıfda, arabirim üyeleri olması zorunludur. Aksi bir durumumde prohe derlenmez.

3 parağram yani yarım sayfa boş bırak

 Açık arabirim kullanmanın avantajları

Bir arabirimi açık bir şekilde uygulamak gereksiz gibi görülebilir fakat daha temi, bakımı daha kolay ve önceden tahmin edilebilir(garanti altına alındığı için) daha çok kod yazmanıza yardımcı olan pek çok avantajı vardır.

 Arabirim adını açık olarak belirmeden bir yöntem uygulayabilirsiniz fakat bu, uygulamanın davranış biçimlerinde bazı farklılıklar gösterebilir. Öreneğin açıkça arabirim uygulamasını kullanarak tanımlanmış bir yöntem sanal olarak bildirilemez, ancak arabirim adını ihmal etmek bu davranışı izin verir.

 Aynı anda dönüş türünde ve parametrelerde yöntemler içeren birden fazla arabirim mümkündür. Bir sınıf, ortak declare edilmiş yöntemlerle birden fazla arabirim uygularsa, yöntem uygulamarı arasındaji belirsizliği gidermek için açık olarak uygulamasını kulalanabilirsiniz. Açık olarak arabirim uygulaması, bir sınıfdaki, bir sınıfdaki yöntemin hangi arabirime ait olduğunu tanımlar. Ayrıca her arabirim için yöntemler ortak olarak erişilebilir fakat sadece arabirimin kendisi üzerinden erişilebilir.

 

 

 

Açık Şekilde.

 

Add comment

The file '/Custom/Widgets/Calendar/widget.cshtml' does not exist.The file '/Custom/Widgets/Category list/widget.cshtml' does not exist.The file '/Custom/Widgets/Tag cloud/widget.cshtml' does not exist.The file '/Custom/Widgets/Page List/widget.cshtml' does not exist.The file '/Custom/Widgets/Month List/widget.cshtml' does not exist.