![]()
Polimorfizm : Çok biçimlilik dediğimiz Polimorfizm Temel class ın Kendinden türemiş class ların özelliklerinide barındırmasına denir.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public class Person { public string Name { get; set; } public int Age { get; set; } } public class Student : Person { public string StudentId { get; set; } public double Average { get; set; } } public class Teacher : Person, Student { public string Subject { get; set; } public int YearsExperience { get; set; } } Teacher teacher = new Teacher(); teacher.Age = 30; teacher.Name = “Mehmet”; teacher.Subject = “chemistry”; teacher.YearsExperien |
Interface : Interface temel amacı bir temel operasyon oluştuurp bütün nesnelere bundan iplemente etmektir bunlar soyut nesneler dir.Soyut nesneler tek başına hiç bir anllam ifade etmezler.I ile başlaması interface olduğu gösterir. Propery yada Methodlar tanımlayarak istediğimiz yerde iplemente ederek kullanabilriz.Interfaceler new lenemezler. örnekte bakalım;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
interface IPersonel { int Id { get; set; } string Adi { get; set; } string Soyadi { get; set; } } class Musteri : IPersonel { public int Id { get; set; } public string Adi { get; set; } public string Soyadi { get; set; } public string Adres { get; set; } } class Ogrenci : IPersonel { public int Id { get; set; } public string Adi { get; set; } public string Soyadi { get; set; } public string Bolum { get; set; } } class Yonetici { public void Ekle(IPersonel personel) { Console.WriteLine(personel.Adi); } } Yonetici yonetici = new Yonetici(); Musteri musteri = new Musteri { Id = 1, Adi = “Hakan”, Soyadi = “Yıldırım”, Adres = “İstanbul” }; Ogrenci ogrenci = new Ogrenci { Id = 1, Adi = “Cem”, Soyadi = “Torlak”, Bolum = “Bilg.Müh.” }; yonetici.Ekle(musteri); yonetici.Ekle(ogrenci); |
Diğer örneğe bakalkım;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
interface IMusteriDal { public void Add(); public void Update(); public void Delete(); } class SqlServerMusteriDal : IMusteriDal { public void Add() { Console.WriteLine(“SQL Eklendi”); } public void Delete() { Console.WriteLine(“SQL Silindi”); } public void Update() { Console.WriteLine(“SQL Güncellendi”); } } class OracleMusteriDal : IMusteriDal { public void Add() { Console.WriteLine(“Oracle Eklendi”); } public void Delete() { Console.WriteLine(“Oracle Silindi”); } public void Update() { Console.WriteLine(“Oracle Güncellendi”); } } class Yonetici { public void Add(IMusteriDal musteriDal) { musteriDal.Add(); } } Yonetici yonetici = new Yonetici(); yonetici.Add(new SqlServerMusteriDal()); |
Bu şekilde de hem property hemde method tanımları yapılabilir
|
1 2 3 4 5 6 7 8 9 10 11 12 |
public interface IDbInspertor { public bool Enabled { get; set; } List<Type> Types { get; set; } public void Insert<T>(Context<T> context) where T : class; //Burada class şartı koştuk public void Update<T>(Context<T> context) where T : class; } |
Virtual : Metodlarla, propertylerle veya eventlerle birlikte kullanıldığında, bu yapıların türetilmiş sınıflarda override edilebilme özelliği kazanmasını sağlar. Bu methoda tamamlanmamış method denir. Virtual metotlar Inheritance (Kalıtım) yoluyla aktarıldıkları sınıfların içerisinden override edilerek değiştirilebilirler ve böylelikle projede istediğimiz yerde ovvaride ederek kullanabiliriz. Eğer override edilmezlerse temel sınıf içerisinde tanımladıkları şekilde çalışırlar. Abstract class içerisinde de tanımlanabilirler. Örnekte bakalım;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
public class Musteri { public virtual void Cesit() { Console.BackgroundColor = ConsoleColor.Blue; Console.Title = “Müşteriler”; Console.WriteLine(“Değişen Müşteriler”); } } class Turk : Musteri { public override void Cesit() { Console.BackgroundColor = ConsoleColor.Red; Console.Title = “Türk Müşteriler”; Console.WriteLine(“Türk Müşteriler”); } } class Alman : Musteri { public override void Cesit() { Console.BackgroundColor = ConsoleColor.Yellow; Console.Title = “Alman Müşteriler”; Console.WriteLine(“Alman Müşteriler”); } } |
Başka bir örnek
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
public abstract class Information { public virtual void WriteInsert(string sql) { sql.Append(“Insert sql”); } public virtual T Insert(T item) { //insert code write…. return item; } } public class Customer : Information { public override void WriteInsert(global::System.String sql) { base.WriteInsert(sql); } public override T Insert(T item) { return base.Insert(item); } } |
sağlıcakla kalın….








Bir yanıt yazın