Nesneye Yönelik Programlama Nedir
Nesneye Yönelik Programlama (OOP), sınıf ve nesne kavramına dayanan bir programlama modelidir. Odak, veriler üzerinde işlem gerçekleştiren prosedürler veya işlevler yazmaya yönelik olan prosedürel programlamanın aksine, nesne yönelimli programlamada, odak, hem verileri hem de işlevleri birlikte içeren nesnelerin oluşumudur.
Nesneye yönelik programlama, geleneksel veya prosedürel programlama stiline göre çeşitli avantajlara sahiptir. En önemlileri aşağıda listelenmiştir:
- Programlar için açık bir modüler yapı sağlar.
- “don’t repeat yourself” (DRY) ilkesine uymanıza yardımcı olur ve böylece kodunuzun bakımı, değiştirilmesi ve hata ayıklamasını çok daha kolay hale getirir.
- Daha az kod ve daha kısa geliştirme süresi ve yüksek derecede tekrar kullanılabilirlik ile daha karmaşık davranışlar yaratmayı mümkün kılar.
Aşağıdaki bölümlerde sınıfların ve nesnelerin PHP’de nasıl çalıştığı açıklanacaktır.
Sınıfları ve Nesneleri Anlama
Sınıflar ve nesneler, nesne yönelimli programlamanın iki temel özelliğidir. Sınıf, bir veya daha fazla belirli görevi gerçekleştirmek için birlikte çalışan bağımsız, bağımsız bir değişkenler ve işlevler topluluğudur; nesneler bir sınıfın tek tek örnekleridir.
Bir sınıf, çok sayıda tekil nesnenin oluşturulabileceği bir şablon veya plan görevi görür. Tek tek nesneler oluşturulduğunda, her nesne belirli özellikler için farklı değerlere sahip olsa da, aynı genel özellikleri ve davranışları devralırlar.
Örneğin, bir sınıfı bir ev için bir plan olarak düşünün. Planın kendisi bir ev değil, evin ayrıntılı bir planıdır. Bir nesne, bu plana göre inşa edilmiş gerçek bir ev gibidir. Aynı plandan birkaç özdeş ev inşa edebiliriz, ancak her evin içinde aşağıdaki resimde gösterildiği gibi farklı boyalar, iç mekanlar ve aileler olabilir.
PHP Sınıf Örnekleri / PHP Class Örnekleri
Örnek: public olarak girilen property değerini ekrana yazdıran örnek.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php class Kisi { public $ad; public $soyad; } $kisi =new Kisi(); $kisi->ad="Hayri"; $kisi->soyad="KOÇ"; echo $kisi->ad." ".$kisi->soyad; ?> |
Örnek: Örnek bir şekil nesnesi oluşturup public niteliklerine değerler girip ekrana yazdırma örneği
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php class Sekil { // özelliklerin tanıtımı public $uzunluk = 0; public $genislik = 0; // çevre hesaplama metodu public function cevreHesapla(){ return (2 * ($this->uzunluk + $this->genislik)); } // Alan hesaplama metodu public function alanHesapla(){ return ($this->uzunluk * $this->genislik); } } //Örnek kullanım //sınıf örneği oluştur $nesne = new Sekil(); //public özelliklere değer aktar $nesne->uzunluk = 10; $nesne->genislik = 20; //alan hesapla metodunu çalıştır echo "Alan: ".$nesne->alanHesapla(); ?> |
Örnek: Kisinin bilgilerini ekrana yazdıran nesne örneği. Kurucu metot ile prive özelliklere değer aktarıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php class Kisi { private $ad; private $soyad; public function __construct($ad, $soyad){ $this->ad=$ad; $this->soyad=$soyad; } public function adSoyadGetir() { return $this->ad." ".$this->soyad; } } $kisi =new Kisi("Hayri","Koç"); echo $kisi->adSoyadGetir(); ?> |
Örnek: Bir betik bittiğinde bir yıkıcı otomatik olarak çağrılır. Ancak, yıkıcıyı açıkça tetiklemek için, aşağıdaki gibi PHP unset() işlevini kullanarak nesneyi yok edebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php class Kisi { private $ad; private $soyad; public function __construct($ad, $soyad){ $this->ad=$ad; $this->soyad=$soyad; } public function __destruct(){ echo __CLASS__ . '" sınıfının yıkıcı metodu'; } public function adSoyadGetir() { return $this->ad." ".$this->soyad; } } $kisi =new Kisi("Hayri","Koç"); echo $kisi->adSoyadGetir(); unset($kisi); ?> |
Örnek: Sınıflar, extends anahtar sözcüğünü kullanarak başka bir sınıfın özelliklerini ve yöntemlerini devralabilir. Bu genişletilebilirlik sürecine kalıtım denir. Muhtemelen nesne yönelimli programlama modelini kullanmanın en güçlü sebebidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?php class Kisi { private $ad; private $soyad; public function __construct($ad, $soyad){ $this->ad=$ad; $this->soyad=$soyad; } public function adSoyadGetir() { return $this->ad." ".$this->soyad; } } class Ogrenci extends Kisi{ private $sinif; function __construct($ad, $soyad, $sinif) { parent::__construct($ad, $soyad); //alt sınıfın kurucusu çalıştı $this->sinif=$sinif; } public function sinifGetir() { return $this->sinif; } } $kisi =new Ogrenci("Hayri","Koç","11A"); echo $kisi->sinifGetir(); ?> |
1 Yorum