Объектілі-бағытталған программалау
Тақырыптың негізгі сұрақтары
- Класстар және объектілермен жұмыс жасауға арналған функциялар
РНР және объектілі-бағытталған программалау
РНР жалпы объектілі-бағытталған мүмкіндіктерге ие болғанымен, ол толығымен объектілі-бағытталған тіл (мысалы, C++ немесе Java тілдері сияқты) емес. РНР төмендегідей объектілі-бағытталған программалаудың мүмкінідіктерін қолдамайды:
- көптік мұрагерлік;
- конструкторларды автоматты түрде шақыру;
- абстрактілі класстар;
- әдістерді қайта жүктеу;
- операторларды қайта жүктеу;
- жабық және ашық ену мүмкіндігі, виртуальді функциялар;
- деструкторлар;
- полиморфизм.
Класстар ОБП-дың синтаксистік базасын құрайды. Оларды логикалық түрде байланысқан мәліметтер мен функциялар (әдістер) үшін «контейнер» ретінде қарастыруға болады. Класс программада қолданылатын нақты экземплярларды құруға арналған шаблон болып табылады. Класстар экземплярлары объектілер деп аталады.
Класстар, объектілер және әдістерді хабарлау
РНР және объектілі-бағытталған программалау
PHP тілінде объект тәсілдеріне қол жеткізу үшін -> операторы пайдаланылады. Объектіні инициалдау үшін new өрнегі қолданылады, ол объект экземплярын бір айнымалыға меншіктейді.
Программа бір уақытта бір кластың бірнеше объектісімен жұмыс жасай алады. РНР-де класс форматы төменде келтірілген:
class Class_name {
var $attribute_1;
...
var $attribute_N;
function function1() {
...
}
...
function functionN() {
...
} // end Class_name
// адамдар класын құрамыз
class Person { // PHP тіліне үйрететін тәсіл
functіon know_php()
{echo “Енді мен РНР тілін білемін!”;}
}
$bob=new Person; // адам класындағы объект құру
$bob -> know_php(); // оны РНР тіліне үйрету
?>
1-мысал:
Енді мен РНР тілін білемін!
Нәтижесі:
Әдістер класс атрибуттарымен жұмыс жасау үшін қолданылады. Әдіс ішіндегі атрибуттарға сілтеу үшін арнайы $this айнымалысы қолданылады. Әдістер синтаксисі төмендегі мысалда келтірілген:
2-мысал. Классты құру
class Webpage {
var $bgcolor;
function setBgColor($color) {
$this->bgcolor = $color;
}
function getBgColor() {
return $this->bgcolor; }
}
?>
Объектілер new операторымен құрылады.
Мысалы, Webpage класының объектісі келесі команда арқылы құрылады:
$home_page = new Webpage;
$home_page атты объект Webpage класында сипатталған өзіндік атрибуттар мен әдістерге ие. Осы нақты объектіге тиесілі $bgcolor атрибутының мәнін өзгерту үшін класста анықталған setBgColor() әдісін қолдануға болады:
$home_page->setBgColor(«black»);
Объектілерді құру
Объектіні құру кезінде кейбір атрибуттардың мәндерін беру қажет болады. Ол үшін ОБП-да конструкторлар қолданылады. Конструктор кейбір атрибуттардың мәнін тағайындайтын (басқа әдістерді шақыратын) әдіс болып табылады. Конструкторлар жаңа объектілерді құру кезінде автоматты түрде шақырылады. Ол үшін конструктор аты класс атымен сәйкес келуі керек.
Конструкторлар
class Webpage {
var $bgcolor;
function Webpage($color) {
$this->bgcolor = $color;
}
}
// Webpage класының конструкторын шақыру
$page = new Webpage("brown");
?>
3-мысал. Конструкторды қолдану
РНР-де деструкторларды қолдау жүзеге асырылмайды. Бірақ РНР-дің unset() функциясын шақырып оның жұмысын имитациялауға болады. Бұл функция айнымалы мәнін жояды және шақырылуы:
unset($Webpage);
Бұл команда жадыдан $Webpage айнымалысының барлық мәндерін жояды.
Деструкторлар
get_class_methods( ) – класс әдістерінің аттарын қайтарады.
Синтаксисі:
array get_class_methods (string класс_аты);
get_class_vars( ) функциясы берілген класс атрибуттарының атаулар массивін қайтарады.
Синтаксисі:
array get_class_vars (string класс_аты);
Класстар және объектілермен жұмыс жасауға арналған функциялар:
get_object_vars() – берілген объектінің атрибуттары туралы ақпаратты ассоциативті массив түрінде қайтарады.
Синтаксисі:
array get_object_vars (object объект_аты);
method_exists() – көрсетілген әдіс объектпен қолданатындығын тексереді. Синтаксисі:
bool method_exists (object объект_аты. string әдіс_аты);
get_class() функциясы көрсетілген объект жататын класс атын қайтарады. Синтаксисі:
string get_class(object объект_аты);
get_parent_class() функциясы көрсетілген объект үшін ата-аналық класс атын анықтайды.
Синтаксисі:
string get_parent_class (object объект_аты);
get_declared_classes() функциясы анықталған барлық класс атауларынан тұратын массив қайтарады.
Синтаксисі:
array get_declared_classes();
Назарларыңызға рахмет!
Достарыңызбен бөлісу: |