C#'ta Kalıtım(Inheritance) işlemi

Serhat tarafından yazılmıştır. 17. Aralık 2008 12:01

Merhabalar,

Bu yazımızda nesne yönelimli programlama(OOP) tekniğinin en önemli özelliklerinden biri olan Kalıtım(Inheritance)'ı inceleyeceğiz. Kalıtımın en sade açıklaması class'ların birbirlerinden türetilmesidir denilebilir.Türeyen sınıf temel sınıfın(base class)'ın bütün özelliklerini aldığı gibi o özelliklere(fields,methods) yeni özelliklerde ekleyebiliriz.

Örneğin araba ve motor nesnelerini alalım.Her iki nesneninde araç türü gibi farklı özellikleri olduğu halde ortak olarakta renk, yolcu sayısı vb gibi ortak sahip oldukları özellikler bulunmaktadır.Ortak olan özellikleri her nesneyi tasarlarken tekrardan belirmek yerine Araç diye ortak bir base class yazıp araba ve motor sınıflarını buradan kalıtsaydık ne güzel olurdu dimi ?. Bu durumda araba ve motor nesneleri ortak özelliklerini aldıktan sonra istenildiğinde o nesnelere farklı özelliklerde eklenebilir.

Programımızı çalıştırdığımızda aşağıdaki görünümü kolaylıkla elde etmiş olacağız.

kalitim inheritance

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kalitim
{
    //Temel özelliklerimizin olduğu Motor ve Araba classlarında tekrar tanımalak yerine ortak bir class'da belirterek oradan kalıtıcağız özellikleri.Base Class özelliklerimizi yazıyoruz ve erişim belirleyici olarak public veriyoruz.Böylece özelliklerimizi ve metotlarımzı heryerden erişime açıyoruz.Kalıtılan sınıflarda sorunsuz bir şekilde kullanılabilecek.Fields'lerimize public değilde private yetkilendirseydik kesinlikle başka bir sınıf üzerinden erişmemiz mümkün olmayacaktı.
    class Arac
    {
        public string _renk;
        public byte _yolcuSayisi;
        public byte _tekerSayisi;

        public void TemelAracOzellikleriniGoster()
        {
            Console.WriteLine("Renk : " + _renk);
            Console.WriteLine("Yolcu Sayısı : " + _yolcuSayisi);
            Console.WriteLine("Teker Sayısı : " + _tekerSayisi);
        }
    }

    //Yazmış olduğumuz temel Arac sınıfını daha sonra nesnelerimizden biri olan Motor classına kalıtıyoruz.Bunu yapmak için bulunduğumuz class adının yanına : koyduktan sonra kalıtmak istediğimiz yani temel sınıfın adını belirterek artık o özellikleri yeni sınıfımızda kullanıma açmış oluyoruz.
    class Motor:Arac
    {
        public string _MotorClassi;

        public void MotorTurGoster()
        {
            Console.WriteLine("Araç türü : " + _MotorClassi);
        }
    }

    //Aynı şekilde burada da Motor class'ı gibi Araba classı oluşturup base class olan Arac classından kalıtıyoruz.
    class Araba : Arac
    {
        public string _ArabaClassi;

        public void ArabaTurGoster()
        {
            Console.WriteLine("Araç türü : " + _ArabaClassi);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //Motor classından bir nesne yaratıyoruz.Motor classını Arac classından kalıttığımız için dikkat ederseniz Arac classındaki fields'lerede ulaşmış olup deger verebildiğimizi görmüşsünüzdür.MotorClass adında nesnemizi oluşturup tüm fields'lerine değerleri atadıktan sonra motor ve arac classındaki metotları çağırarak bilgileri ekrana yazmasını sağlıyoruz.
            Motor motorClass = new Motor();
            motorClass._MotorClassi = "Motosiklet";
            motorClass._renk = "Mavi";
            motorClass._tekerSayisi = 2;
            motorClass._yolcuSayisi = 2;
            motorClass.TemelAracOzellikleriniGoster();
            motorClass.MotorTurGoster();

            Console.WriteLine("--------------------------");
           

            //Motor class'ında yaptığımız işlemlerin aynısı yapıpı Araba classından oluşturulmuş olan arabaClass nesnesinede değerleri atayıp iki classtaki metotları kullanarak ekranda görebiliriz.
            Araba arabaClass = new Araba();
            arabaClass._ArabaClassi = "Araba";
            arabaClass._renk = "Siyah";
            arabaClass._tekerSayisi = 4;
            arabaClass._yolcuSayisi = 4;
            arabaClass.TemelAracOzellikleriniGoster();
            arabaClass.ArabaTurGoster();

            Console.ReadLine();
        }
    }
}

Böylece diyelim ki Araba ve Motor sınıflarına yeni bir özellik ekleyeceğiz.Teker teker iki class'ada  özellikleri eklemek yerine temel katılılan class olan Arac sınıfına özelliği eklersek zaman tasarrufu yapmış oluruz.Aynı işlemin tersi olan özellik silmek içinde düşünürsek ve 2 tane değilde 15-20 tane class'ımız olduğunu hesaba katarsak kalıtımın önemini anlamış oluruz :)

Bu makalede OOP prensiplerinden biri olan inheritance'yi inceledik.OOP'da 3 tane prensip vardır.Diğer iki tanesi ise encapsulation ve polymorphism'dir.İlerleyen yazılarımızda bu iki prensibi de temel olarak incelemiş olacağız.

Kalıtım örneğini indirmek için

İyi çalışmalar iyi günler dilerim :)

Serhat TAŞ

5 kişi tarafından 3.8 olarak değerlendirildi

  • Currently 3,8/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

C# & .NET

Yorumlar

Yorum ekle


(Gravatar simgesini gösterecek)  

biuquote
  • Yorum
  • Canlı önizleme
Loading



Powered by BlogEngine.NET 1.4.5.0
Bu tema Mads Kristensen tarafından yapılmıştır ve Türkçeleştirilmesi Blog Engine Türkiye ekibi tarafından yapılmıştır.

Son Yorumlar

Comment RSS

Yasal Uyarı

Bu sitede sunulan tüm bilgi ve dökümanların kullanımından ve sitede yapılan kullanıcı yorumlarından (siyasi içerik,hakaret vb.) doğacak sorunlardan yazar sorumlu tutulamaz. 

İçeriğin kaynak belirtilmeden kopyalanması yasaktır !

SERHAT TAŞ

© Copyright 2010