ABSTRACT CLASS VE INTERFACE NEDİR? ( C# )

Aslında java yazacaktım ama çeşitlilik olsun diye C# yazmak istedim. Bu yazımızda konumuz nesne yönelimli programlamanın iki vazgeçilmez ismi Abstract ve Interface. Nesneye yönelim programlamanın ibresini tamamen değiştirdi. Projeler daha okunabilir ve daha az kod yükü ile tamamlanabilir hale geldi. Lafı çok uzatmadan ilk konumuza geçmek istiyorum.

ABSTRACT CLASS

Ben bu konuyu anlatırken bazı gereklilikleri bildiğinizi varsayıyorum. Abstract class aslında, bir sınıfın özelliklerini proje içinde diğer sınıflar içerisinde kullanmamızı sağlayan bir kalıtımdır. Örnek vermek gerekirse: Bizim bir class’ımız olsun,

     abstract class Bilgisayar
    {
        public String Model { get; set; }
        public DateTime UretimTarihi { get; set; }
        public String Renk { get; set; }
        public abstract void BilgisayarPerformans();

    }

Bilgisayar diye bir Abstract sınıfımız oldu. Bütün bilgisayarlarda Model, Üretim Tarihi ve Renk özelliği mevcut olduğu için bu 3 özelliği tanımladık. Her bilgisayarın bir performansı olduğu için bir abstract sınıf tanımladık. Şimdi gelelim bilgisayar sınıfından türeteceğimiz bazı class’ları yazmaya.

    class Apple : Bilgisayar
    {
//burası apple'in diğer bilgisayarlardan olmayan özelliklerinin 
//olduğu kısım.
        public String AppleKarti;

        public override void BilgisayarPerformans()
        {
            //Aşağıda kalıtım ile gelen özellikleri görüyorsunuz.
            Apple apple = new Apple();
            apple.Renk = "Kırmızı";
            apple.Model = "MacBook";
            apple.UretimTarihi = DateTime.Now;

        }
 
    }

Şimdi bir formda Apple Class’ımızı çağırıp ona bazı değerler atayalım.

 

Yukarıda atama işleminden sonra sınıfın nesnesinin üzerine gelirseniz yukarıdaki gibi bir görüntü sizi bekliyor. Kendi özelliği ile kalıtım ile gelen özelliğini ayırt etmeniz çok kolay. Yanındaki ikonlar bile size bunu açıklıyor aslında. Burada Bilgisayar sınıfımız BASE sınıf olmuş oldu. Şimdi bunu biraz daha güzelleştirelim ve Abstract sınıfımızın metotlarını bir Interface yardımı ile oluşturalım. Bu arada önemli bir not düşmek istiyorum Abstract sınıflar türetilemezler:


Yukarıda ki örnek gibi.

INTERFACE

Yukarıdaki konuyla bağlayarak anlatmak istedim ki biraz daha akılda kalsın. Interface’lerin yazım amacı, bir projenin bir class’ındaki kullanılması gereken metotları bize söyleyen ve onları otomatik oluşturan bir yapıdır.Biz ilk oluşturduğumuz Bilgisayar Abstract sınıfımızda kullandığımız BilgisayarPerformans() metodumuzu bir interface içinde tanımlayıp sonra abstract sınıfımızda çağıracağız. Önce Interface oluşturalım:


interface InterfaceBilgisayar
{
void BilgisayarPerformans();
}

Şimdi bunu aşağıdaki gibi sınıfımıza atayalım:


Burada farkında olmamız gereken olay size Implement çeşitlerini soracaktır. Sizin sınıfınız Abstract olduğu için sizin seçiminiz bu yönde olmalıdır aksi taktirde çalışmaz. Biz bu Implement işlemini yaptıktan sonra artık bu metot kendisi oluşacak ve alt sınıflarda kullanılacaktır. Interface yapısı anlaşılması çok kolay bir yapıdır. Interface ‘e yazılan metotlar boş olur ki biz onu dolduralım diye 🙂 Blog yazılarım çok azaldı farkındayım fakat severek yazdığım yazılara dermanım kalmıyor. Umarım güzel bir yazı olmuştur. Yanlış gördüğünüz düzeltmek istediğiniz bir kusurum varsa mail ile bana ulaşınız. Görüşmek üzere, esen kalın 🙂

Bir Cevap Yazın