Merhaba arkadaşlar , phphocasi.com.tr üzerinden yayınladığımız php eğitimlerinde bu ders Çok Biçimlilik (Polymorphism) konusuna değineceğiz. Bir programlama dilinin OOP standartlarına uygun olması için aranan belli başlı şartlar vardır. Bu şartlardan birincisini bir önceki dersimizde Php OOP Dersleri – Kalıtım dersimizde anlatmıştık. Şimdi bu kurallardan ikincisi olan çok biçimlilik konusunu anlatacağız.
Çok Biçimlilik (Polymorphism)
Bir örnek üzerinden gidecek olursak bizim hayvan adında classımız olsun. Bu classta hayvana ait olan hayvanSesi adında bir değişkenimiz olsun. Artık hayvan sınıfından türeteceğimiz inek sınıfı, kuzu sınıfı gibi sınıflarda hayvanSesi değişkenimiz o hayvanın sesini gösterecektir. Ana sınıfımız olan hayvan sınıfındaki hayvanSesi değişkeni birçok hayvanın sesini göstererek çok biçimliliği sağlamış olacak.
Örneğimizi yapacak olursak:
class Hayvan { private $hayvanSesi public function __construct($ses) { $this->hayvanSesi = $ses } public function getHayvanSesi() { return $this->hayvanSesi } }
Şimdi hayvan sınıfından Inek ve kuzu adında iki sınıf türetelim.
class Inek extends Hayvan { public function __construct(){ parent::__construct("Möö :) ") } } class Kuzu extends Hayvan { public function __construct(){ parent::__construct("Mee :)") } }
Şimdi ses adında bir class oluşturup polymorphism işlemimizi gerçekleştirelim.
class Ses { public function __construct(Hayvan $ses) { echo $ses->getHayvanSesi()."<br/>" } }
Daha sonra ses sınıfımız aracılığıyla hayvan sınıfından türetilen sınıfların sesini yazdıralım.
$inek = new Inek() $kuzu = new Kuzu() new Ses($inek) // Möö :) new Ses($kuzu) // Mee :)
Yukarıda Ses sınıfının constructor’ı Hayvan sınıfı tipinde bir değişken alıyor. Ama biz bu constructor’a Inek ve Kuzu sınıflarından oluşturduğumuz instance’ları yollayabiliyoruz. Bunun sebebi Php dilinin çok biçimliliği destekliyor olmasıdır. Inek ve Kuzu sınıfı Hayvan sınıfından extends edip oluşturuluduğu için Hayvan sınıfı değişkeni gibi kullanabiliyoruz.
Sonuç olarak kodu çalıştırdığınızda ekranda inek sesi ve kuzu sesi yazdığını görmüş oluruz. Bu sayede ana sınıfımızdaki çok biçimliliği sağlamış oluruz.
Bir diğer yöntem olara abstract class ve methodlarla da polymorphism yapabiliriz. Abstract methodları anlatmadığım için bu yöntemi abstract methodları anlatırken göstereceğim. Takipte kalın ?
Bir dersimizin daha sonuna geldik. Bir sonraki dersimizde görüşmek üzere ?
Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm php dersleri için tıklayınız..
53