30 Haziran 2008 Pazartesi

PHP ile OOP

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 ve protected 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