
OYP nədir?
OYP – Obyekt Yönümlü Proqramlaşdırma deməkdir. PHP-nin 5-ci versiyasından başlayaraq, kodları OYP stilində yazmaq mümkün oldu. OYP daha sürətli və daha asan proqramlaşdırma növü hesab olunur.
Obyekt yönümlü proqramlaşdırmaya qədər proqramçılar Prosedur yönümlü proqramlaşdırmadan istifadə edirdilər. Prosedur yönümlü proqramlaşdırmada verilənlər üzərində əməliyyatlar aparmaq üçün prosedur və ya funksiya adlanan kod blokları yazılırdı. Lakin obyekt yönümlü proqramlaşdırmada obyekt yaratmaqla həm funksiyaları, həm də verilənləri burada saxlamaq mümkündür.
OYP-nin prosedur yönümlü proqramlaşdırmadan aşağıdakı üstün cəhətləri var:
OYP daha asan və daha sürətli icra edilir.
OYP proqramları daha aydın strukturlarlara malik olurlar.
OYP DRY(Don’t Repeat Yourself) prinsipinə əsaslanan proqramlaşdırma paradigmasıdır, yəni “Özünü Təkrar Etmə”. Bu prinsip kodun saxlanmasını, dəyişdirilməsini, yoxlanmasını sadələşdirməklə yanaşı, həm də kod sətrini azaldır.
OYP daha az kod sətri və daha qısa vaxt intervalında çox daha keyfiyyətli tətbiqlərin yaradılmasını mümkün edir.
Obyektlər və Classlar.
Obyekt və Class OYP-nin əsas təməl anlayışlarıdır. Class eyni xüsusiyyətlərə malik obyektlərin mənsub olduğu siniflərdir. Obyekt isə Class-dan alınan instansiyadır.
Məs., alma, armud, heyva. Hər biri meyvə olduğu üçün bu obyektləri yaratdığımız Fruit Class-ına aid etmək olar.
PHP-də Class-lar class açar sözünün və fiqurlu mötərizənin ({}) köməyi ilə yaradılır:
<?php
class Fruit{
public $name;
public $color;
function set_name($name){
$this->name=$name;
}
function get_name($name){
return $this->name;
}
}
?>
Yuxarıda Fruit class-ını yaratdıq və onun iki property($name,$color)-sini və iki metodunu(set_name(),get_name()) təyin etdik. Class-larda hər bir dəyişənə property, hər bir funksiyaya isə method deyilir.
Class-lardan çoxlu obyektlər yaradılır. Bu obyektlər təyin olunduqları class-ların metod və property-lərinə malik olurlar. PHP-də hər bir obyekt new açar sözündən istifadə etməklə yaradılır. Məs., yuxarıda təyin etdiyimiz class-dan yeni obyekt yaradaq:
<?php
$fruit1=new Fruit();
$fruit1->set_name(‘alma’);
$fruit1->get_name();
?>
Göründüyü kimi, yeni yaradılan obyekt Fruit class-ın bütün metod və property-lərini istifadə edə biləcəkdir.
$this açar sözü
$this açar sözü cari obyekti bildirir və yalnız metod daxilində əlçatandır. Məs., yuxarıda yazdığımız misalda set_name() metodunda $this açar sözündən istifadə etməklə yaratdığımız obyektin $name property-sini dəyişdik.
Constructor.
Yuxarıdakı misalda, yaradılan obyektin property-lərini təyin etmək üçün set_name() metodundan istifadə edirdik. Bəs hər hansı bir metoddan istifadə etmədən, obyekti yaradarkən onun property-lərini təyin etmək mümkündürmü?
Bu sualın cavabı - bəli. Bunun üçün constructor-dan istifadə olunur. Constructor hər hansı obyekt yaradıldıqda çağırılan metoddur. PHP dilində constructor __construct adında funksiyadır və classdan hər hansı bir obyekt yaradıldığında avtomatik çağırılır. Constructor funksiyası həmişə __ ilə başlanmalıdır.
<?php
class Fruit{
public $name;
public $color;
function __construct($name){
$this->name=$name;
}
}
$fruit1=new Fruit(“alma”);
echo $fruit1->name;
?>
Göründüyü kimi, constructor-un köməyi ilə set_name() metoduna ehtiyac qalmır. Bu da kod sətrinin azalmasına səbəb olur.
Access Modifier.
Access Modifier-lər obyektin property-lərini hansı şərtlər əsasında əldə ediləcəyini müəyyən edir. Üç cür access modifier vardır:
public – belə property və metodlar hər yerdə əlçatandır. Bu defolt olaraq qəbul olunmuşdur. Belə ki, əgər metod və ya property-nin qarşısında hər hansı access modifier yoxdursa, bu o deməkdir ki, həmin property və ya metod public-dir.
private – belə property-yə(metoda) yalnız class daxilində çatmaq mümkündür.
protected – bu property-ləri(metodları) həmin class-ın və ya miras alınmış class-ın daxilində əldə etmək mümkündür.
<?php
class Fruit{
public $name;
private $color;
protected $weight;
function __construct ($name) {
$this->name=$name;
}
$fruit1=new Fruit(“alma”);
echo $fruit1->name;
$fruit1->color= “green”;
$fruit1->weight=200;
?>
Yuxarıdakı misalda $name public olduğu üçün heç bir problem yaşanmayacaq. Lakin $color və $weight property-ləri private və protected olduğu üçün fatal error olacaq.
Qeyd etmək lazımdır ki, bütün access modifier-lar yalnız kiçik hərflərlə yazıla bilər.
Rəy Yaz