Çok Biçimliliğin Faydaları ve Çok Biçimliliğe İlişkin Örnekler

Çok biçimlilik türden bağımsız kod parçalarının oluşturulması için kullanılabilmektedir. Örneğin bir oyun programında oynanan top bir sınıfla temsil edilsin bu sınıfın git isimli methodu topu hareket ettirsin fakat oyun içerisinde duruma göre farklı topların kullanılabileceğini düşünelim. İşte oyunda zıplayan top, patlak top, normal top gibi değişik biçimde hareket eden toplar bulunuyor olsun. Çok biçimli bir uygulamada biz bu git methodunu sanal bir method olarak yazıp, bunu türemiş sınıflarda override edebiliriz. Böylece programımızı top kavramı üzerinde genelleştirebiliriz.

public virtual void Git()

Bizim bu oyunda topu değiştirmemiz çok kolay olacaktır. Tek yapacağımız şey normal top nesnesi yaratmak yerine örneğin zıplayan top nesnesi yaratmaktır. Kodun diğer bölümlerini değiştirmeye gerek yoktur. Git() methodu duruma göre patlak topun, normal topun yada zıplayan topun gitmesini sağlar. Bu sayede biz oyuna yeni toplar ekleyebiliriz. Yine benzer biçimde bir tuğla kırma oyununda, oyunda söz konusu olan pek çok öğe çok biçimli olarak temsil edilebilir. Örneğin oyun için kullanılan Brick sınıfı şöyle olabilir.

Kodun şöyle kullanıldığını düşünelim;

Bir tetris programı yazacak olalım, tetris programında programın kendisi bir sınıfla temsil edilebilir. Düşen şekiller sınıflarla temsil edilebilir. Her nekadar düşen şekiller farklı ise de bunların belirli özellikleri ortaktır. Şeklin düşmesi sola yada sağa hareket etmesi döndürülmesi çok biçimli eğlemlerdir. Herşekil düşmekte fakat kendine göre düşmektedir. Herşekil döndürülmekte fakat kendine göre döndürülmektedir. İşte tüm şekiller taban bir shape isimli sınıfından türetilmiş sınıflarla temsil edilebilir.

Taban shape sınıfının çeşitli sanal methodları bulunuyor olabilir. Shape sınıfından türetilen sınıflar bu sanal methodları override edebilir. Örneğin;

Oyunun kendisi Tetris isimli bir sınıfla temsil edilebilir ve bu sınıfın Run() methodu oyunu başlatabilir.

Kaynak:Kaan Aslan Hocanın Dersinde Tuttuğum Ders Notlarıdır.

Leave a Reply

Site Footer