Php

Soyutlama (Absraction)

PHP5 ile birlikte sınıf soyutlama özelliği de eklenmiş oldu. Sınıflarda soyutlama ile ne denmek istediğini açıklayalım. Soyutlanmış sınıflar içerisinde yer alan soyut metotlar var ise, bu soyut sınıftan türeyen sınıflarda da aynı isimde metotlar mutlaka tanımlanmak zorundadır. Soyut sınıf oluşturmak için sınıfın başına ve soyut sınıftan türeyen sınıflarda bulunmasının zorunlu olmasını istediğimiz metotların başına da abstract işleci eklenir.

Bazı soyut sınıflar sadece kendisinden türeyen sınıfların özetlerini tutabileceği gibi (hiçbir metot işlem yapmayabilir), bazende ortak olarak kullanılacak özellik ve metotlar da tanımlanabilir.

<?php
abstract class soyut {
  #türeyen sınıfta zorunlu olması gereken metotlar
  abstract public function topla ($a, $b);
  abstract public function yaz();

  #türeyen sınıflarda kullanılacak ortak metot
  public function ortak(){
    echo 'Ortak metot kullanımı';
  }
}

class somut extends soyut {
  public function topla ($c, $d){
    return $c.'+'.$d.'='.($c + $d);
  }
  
  public function yaz(){
    echo 'Soyut sınıfların kullanımı.'; 
  }
}

$somut = new somut();
echo $somut->topla(10,20).'<br/>';
echo $somut->yaz().'<br/>';
echo $somut->ortak().'<br/>';
?>

Yukarıdaki örnekte bir örnek verdim. Önce soyut isimli abstract önekli soyut sınıfta iki adet abstract önekli metot tanımladım. Bunun anlamı, eğer soyut isimli sınıftan bir sınıf türetilecekse, türeyen sınıfta bir iki sınıf kullanılsın veya kullanılmasın mutlaka tanımlanmalıdır. Soyut sınıfımızda bir tane de ortak metot bulunuyor.

Şimdi, somut isimli sınıfı soyut isimli sınıftan türettik ve dikkat ederseniz zorunlu metotları tanımladım. Eğer somut sınıfında yer alan yaz veya topla metodundan herhangi birini tanımlamamış olsaydık, Fatal Error ile karşılaşırdık 🙂 İşte, soyut sınıflar kendinden türeyecek olan sınıfların özetini barındıran ve OOP mimarisiyle birlikte gelen özel sınıf yapılarıdır.

Okan ACAR

Ben Okan ACAR, 1993 Uşak Doğumluyum. 2012 Yılında Front End ile Tanıştım. Bunun Yanı Sıra Birçok Proje ve Şirketlerde Çalıştım. Tasarım Sürecim Çok Zengin ve Görseldir. Benim için Tasarım Bir Tutkudur. Sadece Bir İş Değil!

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu