OOP – Polimorfizm (Çok Biçimlilik)

Polimorfizm (Polymorphism — Çok biçimlilik), birçok yazılımcı tarafından Object Oriented Programming (OOP)’nin temel ilkeleri arasında yer alan 4 ilkeden birisi olarak kabul edilir.

Peki nedir bu Polimorfizm?

Polimorfizm için en sade: “Bir ana sınıftan (base class’da denilir) türetilmiş sınıflar.” diyebiliriz. Böyle deyince baya bir sade oldu :)

Kod tarafını şimdilik bir köşeye bırakıp gerçek hayattan polimorfizm örneği verelim.

Örneğin ALİ kişisine telefon etmek istiyorsunuz. Nasıl telefon edeceğiniz umrunuzda değil, sadece ALİ ile telefondan iletişime geçmek istiyorsunuz.

Bu telefon; bir cep telefonu, bir telsiz telefonu, bir jetonlu telefon veya evdeki sabit telefon olabilir. Ama amacınız tek! Ali’ye telefon etmek.

Ama her telefon farklı yollar izler…

Misal; cep telefonu önce gsm operatörüne bağlanır, gsm operatörü yeterli kontörünüz var mı ona bakar. Eğer varsa tuşladığınız telefon gerçekten var mı ona bakar. O da varsa hatlar uygun mu, uygunsa aradığınız kişi uygun mu?

Jetonlu telefon ise apayrı çalışır… Jeton atılmış mı ona bakar. Atılmışsa santrale bağlanır, santrale numarayı iletir, numara kontrol edilir vs. vs.

Her telefon farklı mantıkta çalışır. Ama aslında işlevleri aynıdır. İşlevleri sizi tuşladığınız numaraya ulaştırmak. Ama bunlardan biz haberdar değilizdir. Biz sadece ahizeyi kaldırırız numarayı tuşlarız birkaç saniye sonra istediğimiz kişi ile görüşürüz. Arada olup bitenden haberimiz olmaz.

Polimorfizm’de böyledir. Siz metodu çağırırsınız. O arkada belki de onlarca işlem yapar ama siz sadece bir veya birkaç metodla iletişime geçersiniz.

Şimdi gelin koda bakalım:

Java

Gördüğünüz gibi sadece TelefonEt metodları ile çalışıyoruz. Ama kendileri içlerinde farklı farklı işlemler gerçekleştiriyor…

Not: PHP’de polimorfizm örneği için lütfen buraya tıklayın.