> For the complete documentation index, see [llms.txt](https://docs.layraweb.com.tr/merhaba/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.layraweb.com.tr/merhaba/php-tarafi/konular/siniflar-ve-nesneler/oop-ilkeleri.md).

# OOP İlkeleri

PHP'de Nesne Yönelimli Programlama (OOP) kullanarak sınıflar ve nesneler oluşturabilirsiniz. OOP, kodunuzu daha düzenli ve modüler hale getirmenizi sağlar. OOP'nin temelinde, kodu nesnelere ayırmak ve her nesnenin kendi işlevlerini ve özelliklerini tanımlamak yer alır.

OOP'nin temel ilkeleri şunlardır:

1. Encapsulation (Kapsülleme): Sınıflar, verileri ve işlevleri bir arada tutarak kapsülleme yapar. Bu sayede, dışarıdaki kodlar sınıfın iç yapısına müdahale edemez.
2. Inheritance (Kalıtım): Sınıfların birbirinden miras alması, kod tekrarını önler ve programlamayı daha modüler hale getirir.
3. Polymorphism (Çok biçimlilik): Aynı isme sahip işlevlerin, farklı sınıflar tarafından farklı şekilde uygulanabilmesini sağlar.

Şimdi bu ilkeleri örneklerle inceleyelim:

1. Encapsulation (Kapsülleme):

Aşağıdaki örnek, kapsülleme özelliğini göstermektedir. Bir "Kedi" sınıfı oluşturuyoruz ve kedinin adını ayarlamak ve almak için işlevler oluşturuyoruz. Ancak, kedinin yaşı sınıfın içinde saklanır ve dışarıdan doğrudan erişilemez.

```php
class Kedi {
  private $ad;
  private $yas;

  public function setAd($ad) {
    $this->ad = $ad;
  }

  public function getAd() {
    return $this->ad;
  }

  public function setYas($yas) {
    $this->yas = $yas;
  }
}

$kedi = new Kedi();
$kedi->setAd("Minnoş");
echo $kedi->getAd(); // Output: Minnoş
```

2. Inheritance (Kalıtım):

Aşağıdaki örnek, kalıtım özelliğini göstermektedir. Bir "Hayvan" sınıfı oluşturuyoruz ve bu sınıftan türeyen "Kedi" ve "Köpek" sınıfları oluşturuyoruz. Bu sayede, hayvanlarla ilgili işlevleri tek bir yerde tanımlayabiliriz.

```php
// Hayvan sınıfı
class Hayvan {
  public $isim;
  public $tur;

  public function konus() {
    echo "Hayvan konuşuyor";
  }
}

// Kedi sınıfı, Hayvan sınıfından kalıtım alıyor
class Kedi extends Hayvan {
  public $renk;

  public function miyavla() {
    echo "Miyav!";
  }
}

// Köpek sınıfı, Hayvan sınıfından kalıtım alıyor
class Köpek extends Hayvan {
  public $irk;

  public function havla() {
    echo "Hav hav!";
  }
}

// Kedi nesnesi oluşturma ve özelliklerine erişme
$kedi = new Kedi();
$kedi->isim = "Tekir";
$kedi->tur = "Ev kedisi";
$kedi->renk = "Siyah-beyaz";

// Köpek nesnesi oluşturma ve özelliklerine erişme
$kopek = new Köpek();
$kopek->isim = "Max";
$kopek->tur = "Golden Retriever";
$kopek->irk = "Yaban köpeği";

// Nesnelerin özelliklerine erişme ve yöntemlerini çağırma
echo $kedi->isim . " " . $kedi->renk . " bir " . $kedi->tur . "<br>";
$kedi->miyavla();

echo "<br>";

echo $kopek->isim . " " . $kopek->irk . " bir " . $kopek->tur . "<br>";
$kopek->havla();
```

3. Polymorphism (Çok biçimlilik)

Polymorphism (Çok biçimlilik), OOP'nin temel ilkelerinden biridir ve farklı nesne türlerinin aynı arayüzü kullanarak farklı davranışlar sergileyebilmesini sağlar. Bu, kodun daha ölçeklenebilir ve sürdürülebilir hale gelmesine yardımcı olur.

Bir örnek oluşturmak için, hayvanlar sınıfını ele alalım. Hayvanlar sınıfında, konuşma fonksiyonu tanımlanmıştır. Bu fonksiyonu, farklı hayvan türleri için kullanmak istediğimizde, türlerin konuşma biçimleri farklı olacaktır. Örneğin, kedi miyavlayabilir, köpek havlayabilir, kuş ötebilir vb. Bunun için, Polymorphism konseptini kullanabiliriz.

```php
phpCopy code//Hayvanlar sınıfı oluşturalım
class Hayvanlar {
   //tüm hayvanlar konuşabilir, ama konuşmaları farklıdır
   public function konus() {
      return "Hayvanlar konuşuyor!";
   }
}

//Kedi sınıfını oluşturalım ve Hayvanlar sınıfından kalıtalım
class Kedi extends Hayvanlar {
   public function konus() {
      return "Miyav!";
   }
}

//Köpek sınıfını oluşturalım ve Hayvanlar sınıfından kalıtalım
class Kopek extends Hayvanlar {
   public function konus() {
      return "Hav hav!";
   }
}

//Kuş sınıfını oluşturalım ve Hayvanlar sınıfından kalıtalım
class Kus extends Hayvanlar {
   public function konus() {
      return "Cik cik!";
   }
}

//Hayvanlar nesneleri oluşturalım ve konuşmalarını yazdıralım
$hayvanlar = array(new Kedi(), new Kopek(), new Kus());

foreach($hayvanlar as $hayvan) {
   echo $hayvan->konus() . "<br>";
}
```

Bu örnekte, Hayvanlar sınıfı oluşturduk ve konuşma fonksiyonunu tanımladık. Ardından, Kedi, Köpek ve Kuş sınıflarını Hayvanlar sınıfından kalıttık ve kendi konuşma fonksiyonlarımızı tanımladık. Son olarak, Hayvanlar nesneleri oluşturduk ve konuşmalarını yazdırdık. Bu örnekte, Polymorphism konseptini kullanarak, farklı hayvan türleri için farklı konuşma biçimleri sağladık.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.layraweb.com.tr/merhaba/php-tarafi/konular/siniflar-ve-nesneler/oop-ilkeleri.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
