OOP Nedir?
Nesne yönelimli programlama (OOP), yazılım geliştirme paradigmasıdır ve nesneleri kullanarak yazılım bileşenlerini tasarlamayı amaçlar. OOP, daha iyi kod organizasyonu, yeniden kullanılabilirlik ve bakım kolaylığı sağlar. PHP, nesne yönelimli programlamayı destekler ve versiyon 7.4 ile birlikte edinilen bazı yeni özellikler, OOP uygulamalarını daha etkili hale getirir.
Sınıflar
OOP’nin temel yapısı olan sınıflar, bir nesnenin özelliklerini ve davranışlarını tanımlar. PHP’de bir sınıf tanımlamak için `class` anahtar kelimesi kullanılır. Aşağıda basit bir sınıf örneği verilmiştir:
“`php
class Araba {
public $marka;
public $renk;
public function __construct($marka, $renk) {
$this->marka = $marka;
$this->renk = $renk;
}
public function bilgiVer() {
return “Marka: ” . $this->marka . “, Renk: ” . $this->renk;
}
}
“`
Bu örnekte `Araba` adında bir sınıf oluşturulmuştur. Sınıfın iki özelliği (marka ve renk) ve bu özellikleri ayarlamak için bir kurucu (constructor) metodu vardır. `bilgiVer()` metodu, arabanın bilgilerini döndürür.
Nesneler
Sınıflar tanımlandıktan sonra, bu sınıflardan nesneler oluşturulabilir. Nesneler, sınıfların örnekleridir ve sınıfların içindeki verilere ve metotlara erişim sağlar. Aşağıdaki kodda `Araba` sınıfından bir nesne oluşturulmuştur:
“`php
$benimAracim = new Araba(“Toyota”, “Kırmızı”);
echo $benimAracim->bilgiVer();
“`
Bu kod çalıştırıldığında, “Marka: Toyota, Renk: Kırmızı” çıktısı alınır.
Kalıtım
Kalıtım, bir sınıfın başka bir sınıftan miras almasını sağlar. Bu, kodun yeniden kullanımını artırır. PHP’de kalıtım, `extends` anahtar kelimesi ile yapılır. Aşağıda kalıtım örneği bulunmaktadır:
“`php
class ElektrikliAraba extends Araba {
public $bataryaKapasitesi;
public function __construct($marka, $renk, $bataryaKapasitesi) {
parent::__construct($marka, $renk);
$this->bataryaKapasitesi = $bataryaKapasitesi;
}
public function bilgiVer() {
return parent::bilgiVer() . “, Batarya Kapasitesi: ” . $this->bataryaKapasitesi . ” kWh”;
}
}
“`
Bu örnekte, `ElektrikliAraba` sınıfı `Araba` sınıfından türetilmiştir. `ElektrikliAraba` sınıfı, `Araba` sınıfının özelliklerini ve metotlarını devralır ve kendi özelliklerini (batarya kapasitesi) ekler.
Polimorfizm
Polimorfizm, bir tür nesnenin birden fazla biçimde davranmasını sağlayan bir özelliktir. Polimorfizm, genellikle bir üst sınıfın metodlarının alt sınıflarda yeniden tanımlanması ile gerçekleştirilir. Aşağıdaki örnek, polimorfizmi göstermektedir:
“`php
class DieselAraba extends Araba {
public function bilgiVer() {
return parent::bilgiVer() . ” – Bu bir dizel arabadır.”;
}
}
“`
`DieselAraba` sınıfı, `Araba` sınıfından türetilmiş olup, `bilgiVer()` metodunu tekrar tanımlamıştır. Bu sayede, `DieselAraba` nesnesi oluşturulduğunda çağrılan `bilgiVer()` metodu üst sınıftaki metodu geçersiz kılacaktır.
Kapsülleme
Kapsülleme, bir nesnenin iç durumunu gizleyerek sadece belirli bir arayüz üzerinden erişilmesini sağlar. Özellikler genellikle `private` veya `protected` olarak tanımlanır ve bu özelliklere erişmek için `getter` ve `setter` metodları kullanılır. Aşağıda kapsülleme örneği sunulmuştur:
“`php
class Kullanici {
private $ad;
public function setAd($ad) {
$this->ad = $ad;
}
public function getAd() {
return $this->ad;
}
}
$kullanici = new Kullanici();
$kullanici->setAd(“Ahmet”);
echo $kullanici->getAd();
“`
Bu örnekte, `Kullanici` sınıfında `ad` özelliği özel olarak tanımlanmıştır. Dışarıdan erişim için `setAd()` ve `getAd()` metodları kullanılır. Bu, nesnenin durumunun dışarıdan doğrudan değiştirilmesini engeller.
Sonuç
PHP 7.4 ile nesne yönelimli programlama, sınıf, nesne, kalıtım, polimorfizm ve kapsülleme gibi temel özelliklerle güçlü bir yapı sunar. Bu yapı, yazılım geliştirme süreçlerinde kodun daha düzenli, okunabilir ve sürdürülebilir olmasına katkı sağlar. OOP’nin sağladığı bu avantajlar, karmaşık sistemlerin oluşturulmasında ve yönetilmesinde önemli bir rol oynar.