Merhaba Webkolog takipçileri! Bugünkü makalemde, yazılım dünyasının en temel ve en güçlü yaklaşımlarından biri olan Nesne Yönelimli Programlama (OOP) konusunu ele alacağım. PHP'nin 5.2 ve önceki versiyonlarında OOP, kodumuzu daha düzenli, yeniden kullanılabilir ve yönetilebilir hale getirmemizi sağlayan bir yapıdır.
Nesne Yönelimli Programlama Nedir?
OOP, gerçek dünyadaki nesneler gibi çalışan, kendi özelliklerine ve yeteneklerine sahip yapılar (nesneler) oluşturmamızı sağlar. Bu nesneler, sınıflar (class) adı verilen şablonlar kullanılarak oluşturulur. Bir sınıf, nesnenin sahip olacağı özellikleri (property) ve yapabileceği eylemleri (method) tanımlar.
OOP'nin temel prensipleri şunlardır:
- Veri Soyutlama (Encapsulation): Nesnelerin özelliklerinin ve metotlarının dış dünyadan gizlenmesi veya erişimlerinin sınırlandırılmasıdır. Bu,
public
,private
veprotected
anahtar kelimeleriyle sağlanır. - Kalıtım (Inheritance): Bir sınıfın, başka bir sınıfın özelliklerini ve metotlarını miras almasıdır. Bu, kod tekrarını önler ve hiyerarşik yapılar oluşturmamızı sağlar.
- Çok Biçimlilik (Polymorphism): Farklı sınıfların aynı isimli metotları farklı şekillerde uygulamasıdır.
Sınıf Oluşturma ve Kullanma
PHP'de bir sınıf oluşturmak için class
anahtar kelimesini kullanırız.
<?php
class Araba {
// Özellik (property) tanımlama
public $marka;
public $model;
// Eylem (method) tanımlama
public function hareketEt() {
return $this->marka . ' ' . $this->model . ' hareket ediyor.';
}
}
// Sınıftan bir nesne (object) türetme
$araba1 = new Araba();
$araba1->marka = 'Opel';
$araba1->model = 'Astra';
echo $araba1->hareketEt();
?>
Bu örnekte, Araba
sınıfından bir $araba1
nesnesi oluşturduk ve özelliklerini atayıp metodunu çağırdık.
Erişim Belirleyiciler
Sınıf içindeki özellik ve metotların erişilebilirliğini belirlemek için public
, private
ve protected
kullanılır.
- public: Sınıf içinden, dışından ve kalıtım yoluyla türetilen sınıflardan erişilebilir.
- private: Sadece tanımlandığı sınıf içinden erişilebilir.
- protected: Sınıf içinden ve kalıtım yoluyla türetilen sınıflardan erişilebilir, dışarıdan erişilemez.
<?php
class Hayvan {
public $adi = "Zebra";
private $gizliBilgi = "Özel bilgi";
protected $korumaliBilgi = "Sadece türetilenler görebilir.";
public function getGizliBilgi() {
return $this->gizliBilgi;
}
}
$hayvan = new Hayvan();
echo $hayvan->adi; // Erişilebilir
// echo $hayvan->gizliBilgi; // Hata verir
// echo $hayvan->korumaliBilgi; // Hata verir
echo $hayvan->getGizliBilgi(); // Metot aracılığıyla erişim
?>
Kalıtım (Extends)
Bir sınıfı başka bir sınıftan türetmek için extends
anahtar kelimesini kullanırız. Bu, türetilen sınıfın ana sınıfın tüm public
ve protected
özelliklerini ve metotlarını miras almasını sağlar.
<?php
class Canli {
public function nefesAl() {
echo "Canlı nefes alıyor.";
}
}
class Insan extends Canli {
public function konus() {
echo "İnsan konuşuyor.";
}
}
$insan = new Insan();
$insan->nefesAl(); // Kalıtım yoluyla erişilen metot
echo "<br>";
$insan->konus(); // Kendi metodu
?>
Bu örnekte, Insan
sınıfı, Canli
sınıfının özelliklerini ve metotlarını miras aldığı için nefesAl()
metodunu kullanabilir.
Yapıcı ve Yıkıcı Metotlar
Sınıfların özel metotları vardır:
- __construct(): Bir nesne oluşturulduğunda otomatik olarak çalışır. Genellikle başlangıç ayarları ve değer atamaları için kullanılır.
- __destruct(): Bir nesne bellekten silinmeden hemen önce çalışır. Kaynakları serbest bırakmak için kullanılır.
<?php
class Urun {
public $isim;
public function __construct($urunIsmi) {
$this->isim = $urunIsmi;
echo "Urun nesnesi oluşturuldu: " . $this->isim . "<br>";
}
public function __destruct() {
echo "Urun nesnesi yok edildi: " . $this->isim . "<br>";
}
}
$bilgisayar = new Urun("Bilgisayar");
$telefon = new Urun("Telefon");
// Betik sona erdiğinde __destruct() otomatik olarak çağrılır.
?>
Evet sevgili Webkolog takipçileri, PHP'de Nesne Yönelimli Programlamanın temel kavramlarını ve kullanımını anlatmaya çalıştım. OOP, büyük ölçekli ve karmaşık projeler geliştirmek için vazgeçilmez bir yaklaşımdır.
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder