C# KALITIM (INHERITANCE) NEDİR NASIL UYGULANIR ÖRNEKLER

C# KALITIM (INHERITANCE) NEDİR NASIL UYGULANIR ÖRNEKLER


      class ali  
      {  
        
      }  
      
      class veli  
      {  
        private ali = new ali();  
      }  
      1       using System;  
      2        
      3       namespace CSharp_19_10_2016_Composition  
      4       {  
      5        class Araba  
      6        {  
      7          private static int motoro_gucu = 3600;  
      8          public void calis()  
      9          {  
      10          Console.WriteLine("motor calisiyor...");  
      11        }  
      12        public void dur()  
      13        {  
      14          Console.WriteLine("motor durdu");  
      15        }  
      16      
      17      
      18        class AileArabasi  
      19        {  
      20          private Araba m = new Araba();  
      21          public void hareketEt()   
      22          {   
      23            m.calis();  
      24            Console.WriteLine("aile arabası çalıştı");  
      25          }  
      26          public void dur()  
      27          {  
      28            m.dur();  
      29            Console.WriteLine("aile arabası durdu");  
      30          }  
      31      
      32          static void Main(string[] args)  
      33          {  
      34            AileArabasi aa = new AileArabasi();  
      35            aa.hareketEt();  
      36            aa.dur();  
      37            Console.ReadKey();  
      38          }  
      39        }  
      40      }  
      41      }  
AileArabasiAraba
private m: Arabaprivate static int motoro_gucu
+public hareketEt()
+public dur()
+public calis()
+public dur()

►Kalıtım yolu ile türeyen sınıf türetilen sınıfın global alanlarına ve yordamlarına(static veya
değil) otomatik olarak sahip olur(private hariç)

Temel sınıf
Türeyen sınıf
► ba se, super
► child, derived
class Kedi
{
...//
}
class Kaplan : Kedi
{
...//
}

-> Kompozisyon daha önceden yazılmış sınıfların özelliklerini kullanmak için temiz bir yöntemdir.

      1     using System;  
      2       
      3     namespace CSharp_19_10_2016  
      4     {  
      5       class Kedi  
      6       {  
      7         protected int ayak_sayisi = 4;  
      8         public void yakalaAv() { Console.WriteLine("Kedi sınıfı av yakaladı"); }  
      9       }  
      10      
      11      class Kaplan  : Kedi  
      12      {  
      13        public static void Main()  
      14        {  
      15          Kaplan kp = new Kaplan();  
      16          kp.yakalaAv();  
      17          Console.WriteLine("Ayak sayısı: "+kp.ayak_sayisi);  
      18          Console.ReadKey();  
      19        }  
      20      }  
      21      }  

-> Kalıtım kavramı ne zaman kullanılır. Daha önceden yazılmış bir sınıf belli bir problem için yeni versiyonu yazma işleminde kalıtım kavramı kullanılır. Fakat kalıtım konusunda türetilen sınıf ile türeyen sınıf arasında bir ilişki olmalıdır.

       1     using System;  
       2       
       3     namespace CSharp_19_10_2016_ Inheritance  
       4     {  
       5       public class ArabaMotoru  
       6       {  
       7         public void calis() {}  
       8         public void dur() {}  
       9       }  
      10      public class Pencere  
      11      {  
      12        public void acil() {}  
      13        public void kapan() {}  
      14      }  
      15      public class Kapi  
      16      {  
      17        public Pencere pn = new Pencere();  
      18        public void ac() {}  
      19        public void kapa() {}  
      20      }  
      21      public class Teker  
      22      {  
      23        public void havaBas(int olcek) { }  
      24      }  
      25      public class Araba  
      26      {  
      27        ArabaMotoru arbm = new ArabaMotoru();  
      28        Kapi sag_kapi = new Kapi();  
      29        Kapi sol_kapi = new Kapi();  
      30        Teker[] tk = new Teker[4];  
      31        public Araba()  
      32        {  
      33          for (int i = 0; i < 4; i++)  
      34          {  
      35            tk[i] = new Teker();  
      36          }  
      37        }  
      38        public static void Main()  
      39        {  
      40          Araba ar = new Araba();  
      41          ar.sag_kapi.pn.acil();  
      42          ar.tk[2].havaBas(32);  
      43          Console.ReadLine();  
      44        }  
      45      }  
      46     } 
      1      using System;  
      2        
      3      namespace CSharp_19_10_2016_Inheritance  
      4      {  
      5        class Bocek  
      6        {  
      7          int a = 10;  
      8          public int b; // public ya da protected olmalıdır...  
      9          public Bocek()  
      10        {  
      11          ekranaYaz("a= "+a+",b= "+b);  
      12          b = 17;  
      13        }  
      14        static int x1 = ekranaYaz("static bocek.x1 ilk deger verildi");  
      15        public static int ekranaYaz(String s)  
      16        {  
      17          Console.WriteLine(s);  
      18          return 18;  
      19        }  
      20      }  
      21      
      22      class Bocekcik  : Bocek  
      23      {  
      24        int k = ekranaYaz("Bocekcik.k ilk deger verildi");  
      25        Bocekcik()  
      26        {  
      27          ekranaYaz("k= " + k);  
      28          ekranaYaz("b= " + b);  
      29        }  
      30        static int x2 = ekranaYaz("static bocekcik.x2 ilk deger verildi");  
      31        static void Main()  
      32        {  
      33          ekranaYaz("Bocekcik - basla");  
      34          Bocekcik b = new Bocekcik();  
      35        }  
      36      }  
      37      }  

Tercih Edilmesi Gerekenler;
* Uygulamanın değişen kı sımlarını sabit kı sımlardan ayırırız.
* Implementa syon yerine interface kullanınız.
* Kompozisyon yerine kalıtımı tercih ediniz
* Birbiri ile ilişkili nesneler arasında “Loosely coupled” ilişkisi kurunuz
* Sınıflarınızı gelişime a çık değişime kapalı tutunuz.
* Concrete sınıflar yerine ab stra ct sınıflar yazınız.
* Sadece en alakalı ve yakın sınıflar ile iletişim kurunuz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir