May.27

PHP OOP (Nesne Yönelimli Programlama) Ders 7 : OOP’de Temel Prensipler – Inheritance (Kalıtım)

Kalıtım, adından da anlaşılacağı üzere bir varlıktan başka bir varlığa kalıtsal özelliklerin aktarılması olarak tanımlanır. Programlama dünyasında da bir Class’a ait özelliklerin, kendisinden türetilmiş bir alt sınıfa aktarılması olaydır. Buradaki amaç; aynı metotlara sahip olan, yani aynı işleri yapan bir üst sınıftan o özellikleri almaktır. Böylece kod tekrarı sorunu ortadan kalkar.

Şimdi şöyle bir örnek düşünelim. Yine bizi selamlayacak bir Class tanımlayacağız. Bu Class’ta iki adet parametremiz olacak. İsmimiz ve cinsiyetimiz. Cinsiyetimiz ne olursa olsun bize iki türlü mesaj verecek. Bu mesajlar; “Merhaba Uğur Bey” veya “Merhaba Bahar Hanım” şeklinde olacaktır. Burada “Merhaba” kelimesi ikisinde de ortak kullanılmış. Biz de ana Class’ta “Merhaba” yazısını yazacak olan metodu tanımlayacağız. Cinsiyetimize göre de “Hanım” veya “Bey” mesajlarını yazdıracak olan fonksiyonu tetikleyeceğiz.

<?php 
# ilk olarak ana Class’ı tanımlıyoruz.
# bu class Merhaba yazısını gönderecek.
class cinsiyeteGoreSelamla {

	public function fonk_Merhaba(){
		return "Merhaba ";
	}
	
}

# extends anahtar kelimesi ile alt Class’ı oluşturuyoruz.
# alt Class’ın ismi hanim_bey
class hanim_bey extends cinsiyeteGoreSelamla{
	# dışarıdan erişilebilir bir fonksiyon tanımlıyoruz.
	# isim ve cinsiyet parametrelerini alıyor.
	public function fonk_Tamamla($isim, $cinsiyet){
		# ilk olarak ana Class’taki fonksiyonu çağırıyoruz.
		# ana fonksiyona ulaşmak için parent:: metodu uygulanır.
		echo parent::fonk_Merhaba();
		
		# bir koşullu döngü ile cinsiyete göre işlem yaptırıyoruz.
		# strtolower ile gelen veriyi küçük harfe çeviriyoruz.
		# kişi BAY, Bay veya bay yazsa da hepsi bay olarak değerlendirilecek.
		# maksat, hata olasılığını aza indirmek.
		# aslına bu veriler bir form sayfasından gelmeli ama şimdilik böyle yapıyoruz.
		# dilerseniz captcha uygulamasında gördüğünüz gibi formdan POST edin.
		# karara göre Bey veya Hanım kelimeleri geri dönüyor.
		# eğer anlamsız bir şey ise cinsiyet anlaşılamadı geri dönüyor.
		if("bay"==strtolower($cinsiyet)){
			return $isim . " Bey";
		}else if("bayan"==strtolower($cinsiyet)){
			return $isim . " Hanım";
		}else{
			return $isim . " cinsiyetiniz anlaşılamadı";
		}
	}
}

# alt sınıf olarak türetilmiş Class’ı tanımlıyoruz.
$_mesaj = new hanim_bey();

# alt Class içindeki fonksiyona parametre değerleri gönderilerek çağırılıyor.
echo $_mesaj->fonk_Tamamla("Uğur","bayan");

?>
İçeriği paylaş:
  • facebook
  • twitter