Ders-20 OOP Polimorfizm(Çok Biçimliliktir)

Polimorfizm (Çok biçimlilik)

OOP dediğimiz felsefenin omurgasını kalıtımla atıyoruz. Bu omurgasının son konusu, mihenk taşı diyebileceğimiz konusu Polimorfizm’dir.

Özetle Polimorfizm, bir nesnenin birden fazla referansla işaretlenebilme mevzusudur.

Polimorfizm esasında kalıtım gibi bir biyolojik terimdir. Biyolojide Polimorfizm, iki veya daha fazla farklı fenotipin aynı tür popülasyonunda bulunmasıdır. Yazılımda Poliformizm, iki veya daha fazla farklı nesnenin aynı tür class’lardan referans almasıdır.

OOP’de ise Poliforfizm, iki ya da daha fazla nesnenin aynı tür sınıf tarafından karşılanabilmesidir/referans edilebilmesidir. Bir başka deyişle, bir nesnenin birden fazla farklı türdeki referans tarafından işaretlenebilmesi polimofizm’dir. Polimorfizm, bir nesnenin kalıtımsal olarak ilişkisi olan diğer nesnelerin referanslarıyla işaretlenebilmesini sağlar. Eldeki nesnenin birden fazla referansla işaretlenebilmesini sağlar.

Örnek Olarak

MyClass m = new MyClass();
MyClass m1 = new MyClass1();

Nesneyi farklı türlerden işaretleyebilmek çok biçimliliktir.

Bir nesnenin, birden fazla referansla işaretlenmesi; o nesnenin, birden fazla türün davranışını sergilemesini sağlar.

Polimorfizm Felsefesi

Kuş deyince aklımıza birçok hayvan geliyor. Devekuşu, Penguen, Tavuk, Papagan, Kartal, Kanarya v.b. Devekuşu hem devekuşudur hem de kuştur. Kartal bir yandan kartal ken diğer yandan kuştur. Yani çok biçimlidir. Burda çok biçimcilik vardır. Burada kuş kelimesi birden çok hayvana karşılık gelebilmektedir. Bu hayvanların kendi türlerinin dışında ortak olarak kuş diye nitelendirilmeleri Polimorfizm yani çok biçimliliktir.

Yazılımda Polimorfizm olması için kalıtım şarttır.

Object türünün herhangi bir türdeki değeri alabilmesi yahut bir başka deyişle object türünü herhangi bir türdeki veriyi atayabilmek polimorfizm’dir.

Nesne Tabanlı Programlama’da Polimorfizm aralarında kalıtımsal ilişki olan sınıflarda uygulanabilir. Aksi mümkün değildir.

Kullanımı

MyClass2 m = new MyClass();

class MyClass : MyClass2
{

}

class MyClass2
{

}

Burada dikkat edilmesi gereken Polimorfizm yapabileceğim class ata yani base class’dır. Kalıtım yapan class miras aldığı class’ın tipine bürünemez ancak miras alınan class veya ata class’lar altındaki class’lara yani kendinden miras alan class’ların tipine bürünebilirler.

Polimorfizm Kalırım İlişkisi

Bir nesneyi, kendi türünün dışındaki bir tür ile/referansla işaretleyebilmek için kesinlikle ilgili nesne, o türden türemiş olması gerekmektedir.

Bir yanıt yazın

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