Makale Özeti

Nesne Yönelimli Programlama(OOP- Object Oriented Programming) prensiplerinden birisi olan Kalıtım(Inheritance) konusunu içermektedir.

Makale

Merhabalar,

Bu makalemiz Nesne Yönelimli Programlama(OOP- Object Oriented Programming) prensiplerinden birisi olan 

Kalıtım(Inheritance) konusunu içermektedir.

Kalıtım nesne yönelimli programlamanın en önemli prensiplerinden birisidir. Kalıtımın yazılımda eş anlamı mirastır. 

Gerçek hayata bakarsak babadan oğula kalan mallar veya genetik özellikler buna örnek verilebilir.

Kalıtım yolu ile nesnelerin özellikleri birbirlerine verilir. Konunun daha net anlaşılması için gerçek hayatta karşımıza 

çıkabilecek en basit örneklerden vereceğim.

Örneğin : Bir pastane için yazılım yaptığımızı düşünelim. Pasta üretimi yapan bir firmada Pasta nesnesinin olması 

yüksek ihtimallerdendir :)

Bir pastanın türü farklılık gösterebilir. Fakat tüm pastların ortak kullandığı malzemeler veya özellikler olabilir. 

Örnek içinde örnek olacak ama, örneğin : Muzlu Pasta ile Kakaolu Pasta arasında bulunan ortak özellikler var. Fiyat, 

imal tarihi, son kullanma tarihi, Malzemeler vb. Bu saydığım özellikler tüm pastalarda bulunur ! Her pastanın bir 

fiyatı vardır. Üretim tarihi vs her pastada mevcut olmalıdır. 

Bu durumda ben her pasta için ortak özellikleri yeniden yazmak yerine bir kez yazmayı tercih etmeliyim. Yine nesne 

yönelimli programlamanın en önemli özelliklerinden birisi olan yeniden kullanılabilirlik (Reusability  Bir işi bir kez 

yap, bir çok kez kullan) içinde son derece önemlidir.

Genel olarak sahip olduğum sorunu parçalara bölmem gerekiyor. Bir pasta ihtiyacım var. Bu pasta herhangi bir 

nesneye kalıtıldığında ek malzemeleri olmasa bile öz niteliğinde pasta olarak bilinmeli. Böylece ilk olarak Pasta adında 

bir class ihtiyacımız olduğunu anladık ! Pasta nesnesi için örnek aşağıda belirtilmiştir.

public class Cake
{
     public decimal Price { get; set; }
     public string Name { get; set; }
     public DateTime ProductionDate { get; set; }
     public DateTime ExpirationDate { get; set; }
     public string[] Supplies { get; set; }
}

Yukarıda örnek olarak verilen Cake sınıfı ve özellikleri itibari ile bir pastada olması gereken genel özellikler. Şimdi 

pastaya bir nitelik katmamız gerekiyor. Yani ben muzlu bir pasta istediğim zaman farklı bir sınıf kullanmak kaydıyla 

pastamı yapabilirim.

public class BananaCake : Cake
{
}

Yukarıda örnek olarak verilen BananeCake (Muzlu Pasta) sınıfı dikkat ederseniz ”: Cake” ibaresi ile Cake sınıfında 

türetiliyor. Bu durumda açıkça söylemesemde C# içerisinde türetme “:” operatörü ile yapılıyor. Bir nesne diğer bir 

nesneden türetilecekse, türeyen nesne adından hemen sonra “:” operatörü kullanılır, sonrasında türeten sınıf adı 

yazılır.

BananaCake sınıfımızın içerisinde herhangi bir tanımlama yapmadım. Doğal olarak kalıtım olmasaydı, bu sınıf 

içerisinde üye eleman yoktu diyebilirdim. Fakat kalıtımla birlikte Cake sınıfı içerisinde bulunan tüm üye elemanlar 

BananaCake sınıfı içerisine geçti. Hemen aşağıda BananaCake sınıfı new anahtar sözcüğü ile örneği oluşturulup

kullanılacak. Örneğimizi inceleyelim.

 

Görüldüğü üzere BananaCake sınıfının bir örneği oluşturuldu. BananeCake sınıfı içerisinde olmayan fakat bizim Cake sınıfında tanımladığımız bütün üye elemanlar bu sınıf içerinde görünüyor. Artık Pastamızı istenilen şekle sokabiliriz. 

Peki Muzlu Pastanın yani BananaCake sınıfının da bir özelliği olsaydı ne olurdu ? Bunuda örnekle gösterelim.

public class BananaCake : Cake
{
    public string BananaQuantity { get; set; }
}

BananaCake içerisine Muz Miktarı adında bir özellik ekledim. Hemen sınıfın kullanımına bakalım.

 

Yukarıda ki örnekte görüldüğü üzere Yeni eklenen özellikte listemizde kullanılabilir olarak görünüyor.

Bu makale içerisinde class ile diğer bir class arasında kalıtımı gördük. Fakat kalıtım dendiğinde OOP içerisinde asıl yapı 

taşları interface (arayüz) kavramlarıdır. Arayüzler bu makale dizisinin ikinci aşamasını oluşturabilir. Fakat kısa bir 

giriş yapmakta yarar var. 

 

Arayüz ile C# içerisinde bir nesneye birden fazla nesneden kalıtım yapabilme imkanı sunuyoruz. Bu konunun adı ise 

Çoklu Kalıtımdır (Multiple Inheritance). Yine belirtmekte yarar görüyorum. Arayüz kavramı sadece bu maksatla 

kullanılmamakla birlikte tek bir arayüz ile kalıtımda yapılabilir. Diğer bir örnekle, bir sınıf ve birden fazla arayüz bir 

nesneye miras olabilir. Fakat bir nesneye sadece bir sınıf miras olabilir.

Katılım kavramı OOP içerisinde önem arz eden bir konudur. Farklı kaynaklar ve farklı örnekler ile pekiştirmekte yarar 

var.

 

Esen Kalın...

Mehmet KURT

23.07.2013 02:20

http://www.mehmetkurt.com.tr