| 
                
             | 
        
        
            
                
                    
                        | 
                            C#’ta Inheritance(Miras) Kavramı | 
                        
                             | 
                                
                     
                    
                        
                            
	
    
		
            | Gönderiliyor lütfen bekleyin... |   
        
	 
    
 
                         | 
                     
                 
             | 
        
        
            
                
                Bu yazıda inheritance’ın programlamada ne anlama 
  geldiğinden bahsedeceğim. Inheritance aslında Oject Oriented Programming!in 
  (Nesne Yönelimli Programlama) üç prensibinden bir tanesidir. Diğer iki prensip 
  ise encapsulation ve polymorphism’dir. Tabii ki diğer iki prensibe bu yazıda 
  değinmeyeceğim. En sade şekliyle: inheritance sayesinde bir sınıfın metodlarını 
  kullanan başka sınıflar türetilebilmesine yarar diyebiliriz. Ancak ayrıntılarına 
  birazdan ineceğim. Eğer daha önce nesne tabanlı bir programlama dili kullandıysanız, 
  (Java ve C++ gibi) C#’ta inheritance’a çok çabuk adapte olursunuz. Aslında şu 
  ana kadar bahsettiklerim genel kültürden ibaretti ve eminim çoğunuz da bunları 
  biliyordunuz. (Nesne Tabanlı Programlama geçmişi olmayanları da düşünerek böyle 
  bir giriş yaptım.)
  
Evet şimdi ana kısma yani programın 
  nasıl yazılacağına geliyoruz. Bunun için basit bir örnek vereceğim. Düşünün 
  ki student adında bir sınıfımız(class) olsun. Ayrıca bir de teacher adında bir 
  sınıfıımız olsun. Bunların ortak özellikleri nedir? Tabii ki insan olmaları 
  diyeceksiniz ve ana sınıfımıza yani person sınıfına ulaşmış olacaksınız. Şimdi 
  basitçe özetlersek person sınıf’ından teacher ve student adında iki sınıf türetmiş 
  olduk. Sırada bunun kodunu nasıl yazacağımız var. Alışkanlıklara devam edip 
  adım adım kodu yazalım. (Bunu program yazarken de ilke edinirseniz faydalı olacağına 
  inanıyorum. Önce ne yapacağınızı adım adım belirleyin sonra belirlediklerinizi 
  adım adım uygulamaya geçirin.)
  
  
   
  I.            
  İlk 
  önce person sınıfını yazalım. 
  
  
   
   
     
      using 
        System;
  
       using 
        System.Windows.Forms;
  
       namespace 
        Miras
  
       {
  
        
             public abstract 
        class Person 
  
            //sınıfın 
        sadece türetileceğini  
             //belirtmek 
        için sınıfı abstaract keyword’ünü kullanarak soyutladık 
             
        //Ancak burada abstaract keyword’ünün kullanılmasındaki 
        temel 
  
            
        //faktör bu sınıfın abstract metod içermesidir.
  
          
          {
  
           //Türetilen 
        sınıflarda kullanılmak üzere 3 tane değişken tanımladık. 
  
           
            protected string 
        Name;
  
               
        protected int 
        Age;
  
            
           protected string 
        Gender;
  
               
        //Türetilen sınıflarda metodun içi doldurulması 
        için
  
               
        //abstract olarak makeAction metodu tanımladık
  
               
        public abstract 
        void makeAction();
  
                         
        
  
            
           public Person()
  
               
        {
  
            
           }
  
            } 
        } 
        
  
       | 
   
   
 
  
  
        
  
II.            
Şimdi 
de Student sınıfını yazalım. 
  
   
   
     
      
  
       using 
        System;
  
       using 
        System.Windows.Forms;
  
       namespace 
        Miras
  
       {
  
           //Student 
        class'ı Person class'ından miras aldığını belirtiyoruz.
  
           public 
        class Student:Person 
  
           {
  
               //Person 
        sınıfında tanımlanan abstract metodu override ederek
  
               //metodun 
        içini istediğimiz gibi doldurduk.
  
               public 
        override void 
        makeAction()
  
               {
  
                   MessageBox.Show("Ben 
        bir öğrenciyim");
  
               }
  
               public 
        Student(string name,int 
        age,string gender)
  
               {
  
                   this.Name=name;
  
                   this.Age 
        = age;
  
                   this.Gender=gender; 
        
  
               }
  
           }
  
       }
  
       | 
   
   
 
 
  
  
 
  
  
III.            
Sıra Teacher 
sınıfını yazmaya geldi.  
  
  
  
   
   
     
      
  
       using 
        System;
  
       using 
        System.Windows.Forms;
  
       namespace 
        Miras
  
       {
  
          public 
        class Teacher:Person //Teacher 
        class'ı Person class'ından 
  
           // 
        miras alıyor
  
           {
  
               private 
        string Unvan; //Teacher 
        sınıfında kullanılmak üzere
  
               //Unvan 
        adında bir değişken tanımladık.
  
               //Person 
        sınıfında tanımlanan abstract metodu override ederek
  
               //metodun 
        içini istediğimiz gibi doldurduk.
  
        
  
               public 
        override void 
        makeAction()
  
               {
  
                   MessageBox.Show("Ben 
        bir öğretmenim");
  
               }
  
        
  
               public 
        Teacher(string name,int 
        age,string gender,string 
        unvan)
  
               {
  
                   this.Name=name;
  
                   this.Age 
        = age;
  
                   this.Gender=gender;
  
                   this.Unvan=unvan;
  
               }
  
           }// 
        teacher sınıfının sonu
  
        
  
       }// 
        Miras isim uzayının sonu
  
     | 
   
   
 
 
  
  
Şimdi dikkat edilmesi gereken noktaları sıralayalım:
  
 
    
           I.            
  Abstaract (soyut) 
  sınıftan yeni bir sınıf türetilemez. Örneğimizde person sınıfı abstract sınıftır 
  ve new anahtar sözcüğü kullanılarak yeni nesne oluşturulmaz. 
  
 
    
          II.         
  Abstract metodların 
  mutlaka içleri boş olarak yaratılır ve türetildikleri 
  sınıflarda (en az bir sınıf türetilmek zorunda) mutlaka 
  içleri override anahtar sözcüğü kullanılarak    doldurulur. 
  
 
    
        III.            
  Bir sınıftan 
  miras yolu ile başka bir sınıf türetileceği zaman temel sınıf(base class) illa 
  ki abstract anahtar sözcüğü ile tanımlanmak zorunda değildir. (Eğer abstract 
  metod     içermiyorsa.) 
  
Not: Yukarıda kodlarını yazdığım sınıfların 
  basit bir kullanımını içeren Miras adındaki projeyi indirmek için buraya 
  tıklayabilirsiniz. Bu sayede kafalarda hiçbir soru işareti kalmasın istiyorum. 
  Projeyi çalıştırdığınız zaman bir windows form’u gelecek. Bu formun üzerinde 
  iki tane buton var.
  
Student Action butonunu tıklarsanız Student 
sınıfının içindeki makeAction metodu çalışır. Daha sonra da windows formu 
yaratıldıktan hemen sonra yaratılan student nesnesinin Name, Age, Gender 
değişkenleri bir mesaj kutusu aracılığıyla görüntülenir.
  
Teacher Action butonunu tıklarsanız Teacher 
sınıfının içindeki makeAction metodu çalışır. Daha sonra da windows formu 
yaratıldıktan hemen sonra yaratılan teacher nesnesinin Unvan, Name, Age, Gender 
değişkenleri bir mesaj kutusu aracılığıyla görüntülenir.
  
Kafanıza takılan sorular için mail adresim
[email protected]  
  
Aytaç ÖZAY
  
Ege Üniversitesi
  
Bilgisayar Mühendisliği
  
                
                Makale: 
                C#’ta Inheritance(Miras) Kavramı C#, Visual C# ve .NET Aytaç Özay 
             | 
        
        
            | 
             | 
        
        
            | 
                 
             | 
        
        
            
                
                
                    
                        - 
                            
                        
 
                        - 
                            
Eklenen Son 10  
                         
                        - 
                            
Bu Konuda Geçmiş 10 
                         
                     
                    
                        
                            Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
                         
                        
                            Son Eklenen 10 Makale Yükleniyor
                         
                        
                            Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
                         
                     
                 
                
                
             | 
        
        
            | 
                
             |