Nesneler

Nesneler

Nesne yönelimli (Object-oriented) programlama icad edildiğinde, geleneksel programlamaya aşina olanlar önce tereddüt ettiler; sonra bunun ne harika bir teknik olduğnunu gördüler ve nesnelerden vazgeçmez oldular. Kabaca tanımlarsak, nesne, kendi değişkenleri ve icra edeceği komutlardan oluşan fonksiyonları ile bir bütündür. Nesneyi bir kere tanımladıktan sonra istediğimiz kadar örneğini oluşturabiliriz. Bir nesnenin yapacağı işten, o nesnenin metodu diye söz ederiz. Bu açıdan bakarsanız, programlarımızda nesneler sadece metodları için işe yararlar.

Diyelim ki programımızda bir "öğrenci" nesnesi oluşturmak istiyoruz. Bu nesnenin içinde adı, soyadı ve notlar gibi değişkenler, ve bu değişkenlerle yapılan bir takım işler bulunsun. İşe nesnenin tabir yerinde ise şablonu olan class'ı oluşturmakla başlayalım; gerisini de yaptıkça görelim.

Bir Nesne Oluşturalım

Bir nesne oluşturmak için önce onu tanımlamamız gerekir. Bunu PHP'nin class deyimini kullanarak yapabiliriz. Bir nesnenin özellikleri (properties) ve metodları (methods) vardır. Şu kodu nesneler01.php adıyla kaydedin:

<HTML>

<HEAD>

<TITLE>PHP'de Degiskenler</TITLE>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">

</HEAD>

<BODY>

<B>

<H2>

<?php

class ogrenci {

// özellikleri tanımlayalım

            var $adi;

            var $soyadi;

            var $sinav1;

            var $sinav2;

            var $not;

// metodları tanımlayalım

function adi_belirle ($n) {

            $this->adi = $n;

            }

function soyadi_belirle ($n) {

            $this->soyadi = $n;

            }

function sinav1_belirle ($n) {

            $this->sinav1 = $n;

            }

function sinav2_belirle ($n) {

            $this->sinav2 = $n;

            }

function not_hesapla() {

            $this->not = ($this->sinav1 + $this->sinav2)/2;

print ($this->adi. " " . $this->soyadi . " için not ortalaması: ". $this->not);

            }

}

//Buraya başka kodlar girecek

$ogr1 =  new ogrenci();

$ogr1 -> adi_belirle("Şahika");

$ogr1 -> soyadi_belirle("Tabak");

$ogr1 -> sinav1_belirle(7);

$ogr1 -> sinav2_belirle(10);

$ogr1 -> not_hesapla();

?>

</H2>

</B>

</BODY>

</HTML>

Bu programda ogrenci adlı bir nesne tanımlıyoruz; ve daha sonra bir değişken adına new komutu ile bu nesnenin bir örneğini oluşturuyoruz. Nesnelerin yeni bir örneği veya kopyasını çıkartmak ifadeleri aslında yaptığımızı tam anlatmıyor. Nesnenin tanımı bir adet; her new komutu ile bu nesnenin özelliklerine ve metodlarına sahip yeni bir nesne yapmış oluyoruz. Nitekim bu işe insanın dilini dolayan İngilizce bir kelimeyle Instantiation (yeni bir varlığını oluşturma) deniyor. Bu örnekte, $ogr1 adlı değişken gerçekte, ogrenci nesnesinin tam bir örneği: içinde beş değişken ve altı metod var. Nesneyi bir kere tanımladıktan sonra programın daha ileri aşamalarında bu istediğimiz kadar örneğini farklı isimler vererek oluşturabiliriz. Şimdi şu satıra dikkat edelim:

$ogr1 =  new ogrenci();

$ogr1 -> adi_belirle("Şahika");

Burada $ogr1'in parametrelerine nasıl değer yazdırdığımızı görüyorsunuz. Nesnenin metodlarından biri olan adi_belirle fonksiyonuna bir değer veriyoruz: "Şahika"; nesne oluşturulurken yazılmış olan bu fonksiyon ise aldığı değeri, kendi ait olduğu nesnenin bir değişkenine kaydediyor:

function adi_belirle ($n) {

            $this->adi = $n;

            }

Bu ve diğer fonksiyonlarda kullandığımız "$this->" ifadesi, kendisine ulaştırılan değeri bir parametre olarak kullanıyor ve "$adi" değişkenine yazıyor. "this" (bu) kelimesi o anda nesnenin o anda oluşturulmakta olan örneğine göndermede bulunur. "->" işlemcisini kullanarak, istediğimiz nesnenin istediğimiz metoduna veya parametresine değer gönderebiliriz. Bir nesnenin yeni bir örneğini oluşturduğumuz zaman, bu örneğin bütün parametrelerini sağlamak veya bütün metodlarını kullanmak zorunda değiliz.

Yukarıdaki örneğe göre yeni örnekler oluşturarak en az dört öğrencinin not ortalamasını hesabedebilir misiniz?

PHP ile Web programcılığı yolunda hızlı adımlarla yol alıyoruz. Bu bölümde gördüğümüz dizi değişkenler ve nesneler, Web sayfalarımızda bir çok işi adeta otomatik hale getirecek unsurlar olarak kullanılacak.