msHOWTO

19 Nisan 2012 Perşembe

C# OOP (Object Oriented Programming) Inheritance

Merhaba arkadaşlar.Bu makalemde Oop temellerinden biri olan inheritance yani kalıtım veya miras konusunu anlatacağım.Ne demiştik Oop gerçek hayatın ta kenidisidir.Şimdi gerçek hayata bir dönelim arkadaşlar.Mesela arkadaşlar dünya üzerinde bütün yaşayan varlıklar Canlı olarak en temel başlık altında toplanmıştır.Canlıdan sonra bitkiler ve hayvanlar olarak ikiye ayrılmışlardır değil mi ? Neden bitki ile hayvan olarak ayrılmışlardır ? En temel olarak bitkiler sabit hayvanlar hareket eden canlılardır.Sonra hayvanların altında da işte yok omurgalılar omurgasızlar diye ta ki en son halkaya kadar bir yapı oluşmuştur.Her bir gruptan yeni nesneler yani yeni türler ayrıldıklarında aslında her bir türün diğerlerinden ayıran özellik ve ya özellikleri vardır.Doğada nasıl ki en tepeden başlayarak aşağı doğru indiğimizde bir alttaki tür içinde bulunduğu gruptan belli başlı en temel özelliklerini kendinde barındırır.

Daha basit bir örnekle anlatmak gerekirse , bir insan mutlaka annesine babasına amcasına dedesine vs. aile zincirinden bir kişiye benzer veya birden çok kişinin özelliklerini genetik olarak üzerinde taşır.İşte aynen bu duruma C# Oop da inheritance yani miras veya kalıtım denir.Yani bir nesne oluşturdunuz ve bu nesnenin temel özelliklerini veya değerlerini taşıyan bir nesneniz var.Oturup aynısını en baştan yazacağınıza değerleri taşıyan nesneden bir miras alıyorsunuz.Ve miras aldığınız nesnenin bütün değerleri , özellikleri ve davranışları aynen bire bir miras aldığınız nesneye geçiyor.Peki bu işlem nasıl yapılıyor?

Public class Insan
{
  public void NefesAl();
  public void NefesVer();
  public void Uyu();
}

Yukarıdaki gibi bir insan nesnesi oluşturduk ve içerisine tüm insanların mutlaka yaptığı 3 tane temel davranış oluşturduk.Peki şimdi ben kendimi bir nesne olarak C# da oluşturmak istiyorum.Diyelim ki bu insan nesnesinin bir insana ait temel bütün değerlerini, davranışlarını filan belirleyip yazdım.Şimdi ben koray nesnesini oluşturacağım zaman insan sınıfında yazdığım herşeyi en baştan mı yazacağım ? Henüz o kadar delirmedim :) Tabii ki yazmayacağım.Oop nimetlerinden faydalanacağım.

Public class Koray:Insan 
{
  public void ProgramYaz();
  public void MakaleYaz();
}

Evet arkadaşlar yukarıda kendime ait 2 tane method oluşturdum.Miras almak yukarıdaki gibi çok ama çok basittir. Sadece oluşturulan class ın isminin sonuna ":" koyup miras alacağı class ın ismini yazmak kadar kolay.

Peki ben nasıl bir nesnenin başka nesneden miras alıp almayacağını nasıl belirleyeceğim ? Gayet kolay bir soru ile cevabını buluruz arkadaşlar. Bu örnekten yola çıkarak koray bir insan mıdır ? Evet cevabını alıyorsanız burada kalıtım söz konusudur.

Fakat inheritance konusunda bilinmesi gereken bir kaç önemli nokta vardır arkadaşlar.Eğer oluşturduğunuz bir nesneden başka bir nesnenin miras almasını istemiyorsanız o nesneye mühür vurmanız gerekir.Bunu da şu şekilde yapabilirsiniz.


Public sealed class Koray:Insan
{
  public void ProgramYaz();
  public void MakaleYaz();
}


Yukarıdaki gibi Koray nesnesini Sealed olarak ayarladım.Yani mühür vurdum.Yani bu şu demek oluyor Koray nesnesinden hiç bir nesne instance yani miras alamaz.

Bir diğer bilinmesi gereken ve önemli nokta şudur ki C# Oop da multi inheritance yani çoklu kalıtım olmaz.Yani C# 'a göre bir çocuğun sadece bir biyolojik babası vardır :) Eğer birden fazla nesnenin değerlerinden, davranışlarından yararlanmak istiyorsanız o zaman kullanacağınız diğer bir nimet olan Interface kavramıdır.Interface kavramını bu makalede bu kadar değineceğim.Detaylı olarak diğer makalelerimde anlatacağım.

Umarım faydalı olmuştur arkadaşlar . Bir sonraki makalemde görüşmek dileğiyle ...

Hiç yorum yok:

Yorum Gönder