İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

Polymorphism

İki nesneye dışarıdan aynı biçimde erişildiği halda içeride her birin farklı bir implementation sağlayabilmesi.

Polymorphism (Çok Biçimlilik), Object-Oriented Programming'in en önemli özelliklerinden biridir. Temel itibariyle, bir class'ın başka class'ların iç işleyişleriyle ilgilenmeden standart bir şekilde erişim yapabilemesini sağlamaktadır. Aynı method ismiyle birden fazla class'ın method'u çağrılabilmektedir. Kullanılan her class'ın kendine has bir implememenation'u olmasına rağmen, bu farklılıktan çağıran class'lar hiç etkilenmektedir. Bir çok aygıt'ta bulunan 'on/of' düğmesini düşünelim. Bilgisayarın da bir 'on/of' düğmesi var, TV'nin de, saç kurutma makinesinin de. Kullanıcının hepsinde yaptığı bir düğmeye basmaktan ibarettir. Ancak bu sayılan aygıtları üreten üreticiler ve tasarlayan mğühendisler her biri için ayrı bir çalışma şekli hazırlamıştır. Bir saç kurutma makinesini 'on' yapınca içindeki elektro-mekanik aksamın yaptığıyla TV'ninki elbette farklıdır. Ama kullanıcılar bunu bilmez ve bilmek de istemez. Polymorphism, bu durumu yazılım alanında nesneler için yaratır. Bu aygıtlar için

booelan on=true;
booelan off=false;
TV tv=new TV();
tv.setPower(on);
HairDryer dryer=new HairDrayer();
dryer.setPower(on);
// After
tv.setPower(off);
dryer.setPower(off);

şeklindeki code parçasıyla aynı şekilde erişilen iki class'ın impleentation'un çok farklı olabilir.

public interface Instrument{
	public void setPower(boolean power);
}
public class TV implements Instrument{
	// ...
	public void setPower(boolean on){
		if(on){
			chargeCondensators();
			initTube();
		}else{
			cutPower();
		}
	}
	// ..	
}
public class HairDryer implements Instrument{
	// ...
	public void setPower(boolean on){
		if(on){
			startResistence();
			blowAir();
		}else{
			cutPower();
		}
	}
	// ..
}