NESNEYE DAYALI PROGRAMLAMA 1 retim Grevlisi Alper Talha
- Slides: 8
NESNEYE DAYALI PROGRAMLAMA 1 Öğretim Görevlisi Alper Talha KARADENİZ
ÇOK BIÇIMLILIK (POLYMORPHIZM) • Nesne tabanlı programlama dillerinde çok biçimlilik aynı temel sınıftan türetilmiş olan yeni sınıflarda metotların farklı şekillerde davranabilmesidir.
public class A { public virtual void yaz() { Console. Write. Line("ana sınıf"); } } public class B: A { public override void yaz() { Console. Write. Line("alt sınıf"); } static void Main(string[] args) { B nesne. B= new b(); nesne. B. yaz(); } }
ÖRNEK • class Sekil { public double Boy; public double En; public Sekil(double boy, double en) /* kurulurken boy ve en değerlerini alan constructor yazdık */ { this. Boy = boy; /* base sınıfta sadece boş constructor olduğunda kullanılması yaygındır. */ this. En = en; } public Sekil() { } virtual public double Alan() /*sanal alan metodu yazdık. türeyen sınıfta Alan() metodu varsa buradaki ezilecektir. */ { return 0; } }
• class Dortgen : Sekil /* sekil sınıfından dortgen sınıfını türettik*/ { public Dortgen(int boy, int en) : base(/*boy, en*/) /* alınan değerleri türetilen sınıftaki değişkenlere gönderiyor. Base. Boy tanımlamamıza gerek olmuyor. */ /*eger base sınıfta (boy, en) constructorı yoksa bunu kullanamayız. */ { base. Boy = boy; /* base sınıfta sadece boş constructor olduğunda kullanılması yaygındır. */ base. En = en; } public override double Alan() /* eger kurulan sınıf dortgen olursa sekil sınıfındaki Alan() metodu yerine buradaki Alan() çağırılacak*/ { return En * Boy; } }
• class Ucgen : Sekil { public Ucgen(int boy, int en) : base(boy, en) /* eger base sınıfta (boy, en) constructorı yoksa bunu kullanamayız. */ { } public override double Alan() /* eger kurulan sınıf dortgen olursa sekil sınıfındaki Alan() metodu yerine buradaki Alan() çağırılacak*/ { return En * Boy / 2; } }
• class Main. Metodu { public static void Alan. Bul(Sekil sekil) { Console. Write. Line("seklin alanı: " + sekil. Alan()); } static void Main() { Ucgen ucgen = new Ucgen(10, 50); Alan. Bul(ucgen); Dortgen dortgen = new Dortgen(10, 50); Alan. Bul(dortgen); Sekil sekil = new Sekil(10, 50); Alan. Bul(sekil); Console. Read. Line(); } }
• Kaynaklar • Öğr. Gör. Özgür Çiftçi Nesne Tabanlı Programlama Ders Notları