Sitemize yapılan saldırılar nedeniyle bir süreliğine yeni üyeliklerin aktivasyonu yöneticiler tarafından yapılacaktır.

PHP Nesneler - OOP

PHP Nesneler - OOP




Bu bölümde, PHP hakkında nesne tabanlı programlama (OOP – object-oriented programming) üzerine bilgi vermeye çalışacağım.

PHP 5 ile OOP yapısı tamamen desteklenir oldu. OOP’da temel programlama kavramları şunlardır:

    Abstraction (Soyutlama)
    Polymorphism (Çok biçimlilik)
    Encapsulation (Sarmalama)
    Inheritance (Kalıtım)

Soyutlama, problemi çözerken ilgili metodların belli parçalar halinde yazılarak kodların basit ve anlaşılır hale getirilmesidir diyebiliriz. Çok biçimlilik ise, yazdığımız nesnenin yada fonksiyonun farklı veri yada giriş değerleri ile kullanılabilmesidir. Sarmalama ise, yazdığınız sınıf içerisindei metodların dışarıdan erişilebilir olup olmamalarını sağladığımız bir çeşit güvenlik katmanıdır diyebiliriz.  Son olarak Kalıtım ise, var olan sınıfların kalıtım (miras alınarak) yeniden/istenildiği kadar oluşturululabilmesi.

Nesneler

Nesneler (class) PHP OOP yapısının temel taşıdır. Aslında zaten OOP yapısının temelinde de nesneler vardır. Günümüzde OOP yapısını destekleyen diller için de bu öğreneceklerimiz çoğunlukla geçerli olacaktır.

Nesneler yani class’lar, sizin yarafınızdan yapmak istediğiniz programın amacına uygun olarak yazılır yada başkası tarafından önceden yazılmış nesneler baz alınarak kullanılabilir. Bu nesneler kalıtım olayı ile oluşturulup kullanılır.

Kod: Tümünü seç
class Simple {}

$object = new Simple();


Yukarıdaki minik örnekten yola çıakrsan sınıfımızın isminin Simple olduğunu ve

Kod: Tümünü seç
class Simple {}


ile yazılmaya başlandığını görebiliriz. Elbette bu örnekte sadece nesnemizin adı tanımlanıyor, içerisinde hiçbir metod olmadığından bir işe yaramayacaktır…

Kod: Tümünü seç
$object = new Simple();

bölümünde ise $object değişkenimize  new Simple() diyerek (miras alma) nesnemizin bir örneğini oluşturuyoruz. Eğer sınıfımızın içinde metodlarımız olsaydı artık bunları alt satırlarda $object değişkenimizin alt metodları/fonksiyonları gibi kullanabilirdik.

Nesne İçerisindeki Değişkenler


Nesne içerisinde değişken kullanımını ve erişimi kısa ve basit bir örnek ile sizlere zenim hazırlamak için açıklamaya çalışacağım. Aşağıdaki örneği inceleyelim;

Kod: Tümünü seç
class Person {

    public $name = "";
}

$p1 = new Person();
$p1->name = "Değer 1";

$p2 = new Person();
$p2->name = "Değer 2";

echo $p1->name . "\n";
echo $p2->name . "\n";


Burada, Person isminde bir sınıfımız var ve içerisinde $name adından public yapıda bir değişkene sahip. Değişkenlerin alabilecekleri yapıları (OOP’un sarmalama özelliğidir) daha sonra göreceğiz.
Kod: Tümünü seç
$p1 = new Person();
$p1->name = "Değer 1";


Yukarıda, sınıfırmızdan türetip ($p1), sınıf üyesi olan name değişkenine bir değer atıyoruz. Daha sonra aynı işlemi $p2 ile türetip yine name değişkenimize başka bir değer atıyoruz.

Kod: Tümünü seç
echo $p1->name . "\n";
echo $p2->name . "\n";
// Çıktısı
// --------
// Değer 1
// Değer 2


Daha sonra kodumuzu çalıştırdığımızda $p1 ve $p2 içerisindeki name değerlerini ekrana yazıyoruz.

Burda bilinmesi gereken, gördüğünüz gibi aynı değişkene erişiyoruz ama neden farklı farklı değerler alabiliyor? Çünkü sınıfı 2 ayrı değişkende create ediyoruz ve ikisi için de bellekte farklı yer açılıyor. Yani birbirinden bağımsız olarak çalışıyorlar.

Metodlar

Metodlar, fonksiyonları içerisinde barındıran sınıfların gövdesidir diyebiliriz. Metodlar, OOP’un sarmalama (encapsulation) özelliği ile erişim yapısı istediğimiz gibi şekillendirilebilir. Özellikle büyük projelerde ve sınıflarda sarmalama özelliğini iyi kullanmak ve planlamak gerekir.  Her zaman olduğu gibi bi örnek üzerinde bunları irdelersek daha faydalı olacaktır…

Kod: Tümünü seç
class Circle {

    public $radius;

    function setRadius($radius) {
        $this->radius = $radius;
    }

    function area() {
        return $this->radius * $this->radius * M_PI;
    }
}

$c = new Circle();
$c->setRadius(5);

echo $c->area(), "\n";


Yukarıdaki örnekte Circle isminde bi sınıfımız ve içinde 2 metodumuz var.

Kod: Tümünü seç
    public $radius;


Burada ise sınıfımız içerisinde bulunan değişkenimiz var (member field). public etiketi ise ona sınıf dışından da erişebileceğimzi anlamına geliyor.

Kod: Tümünü seç
function setRadius($radius) {
    $this->radius = $radius;
}


Burada setRadius isminde bir metodumuz var. Normal bir PHP fonksiyonu farkı yok, ancak sınıflar içerisinde tanımlanan fonksiyonlara method diyoruz. $this değişkeni ise özel bir değişkendir. Sınıf içerisindeki değişkenlerimize (member fields) ulaşmak için kullanıyoruz.

Kod: Tümünü seç
function area() {
    return $this->radius * $this->radius * M_PI;
}


Burada ise area metodumuz gerekli hesaplamaları yaparak return ile sonucu döndermekte.

Burada, metodlara genel bir bakış yapmış olduk.

Devamı gelecek...


[size=50]Kaynak: http://tanerdogan.com

Çağatay
Kullanıcı avatarı
Administrator
Administrator
Kayıt: 23 Haz 2009, 19:02
Mesajlar: 1514
İsim: Çağatay

Re: PHP Nesneler - OOP


Ben sana demedim mi OOP'la uğraşma daha diye :D Kime anlatıyorum ki.. :D


---------------------------------------------------------------------

Dr.Who~
Kullanıcı avatarı
Administrator
Administrator
Kayıt: 13 Ağu 2009, 18:14
Mesajlar: 1845
Konum: Kıbrıs/İskele
İsim: Can
Ruh Hali:
Takım:

Re: PHP Nesneler - OOP


Dr.Who~ yazdı:Ben sana demedim mi OOP'la uğraşma daha diye :D Kime anlatıyorum ki.. :D


Özel hayatıma girme buralarda :D Artık nesneye dayalı programlamada kendimi geliştireceğim :D msnde konuşalım :D
Çağatay
Kullanıcı avatarı
Administrator
Administrator
Kayıt: 23 Haz 2009, 19:02
Mesajlar: 1514
İsim: Çağatay


Dön PHP

Kimler çevrimiçi

Bu forumu gezen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir