Начинающие программисты на PHP чаще всего застревают на том, что не совсем понимают что же это за зверь такой (объектно-ориентированное программирование - OOP (Object Oriented Programming)) и для чего он нужен. В данной статье попытаюсь объяснить примерно что это такое. Не претендую на полное описание и единственно верное, просто изложу своё понятие об этом.
Для начала познакомимся с некоторыми терминами :
Класс - это набор переменных и функций, взаимодействующих между собой.
Свойства - это используемые в классе переменные.
Методы - это используемые в классе функции.
Конструктор - это функция, которая выполняется автоматически при создании объекта.
Синтаксис написания класса похож на синтаксис написания функции, только вместо ключевого слова function мы используем ключевое слово class:
Код:
<?php
class klass
{
// здесь описываем свойства объекта
var $svoistvo1;
var $svoistvo2;
// здесь
описываем методы
function metod($peremennaja)
{
// код
}
}
?>
Свойства описываются с использованием ключевого слова var. Возьмем пример из реальной жизни, который и попытаемся реализовать в виде класса. Автомобиль. Это и будет наш объект. Как известно все автомобили имеют общие свойства : цвет, форму, размер, мощность и так далее. Это и будут свойства нашего объекта. Также автомобили выполняют какие-то действия : заводятся, поворачивают, останавливаются, едут. Всё это и будет методами. Теперь попробуем написать это на PHP:
Код:
<?php
class avtomobil
{
// свойства
автомобиля
var $nazvanie;
var $cvet;
var $forma;
var $razmer;
var $moschnost;
// метод
function tronutsia()
{
// код
}
// метод
function ostanovitsia()
{
// код
}
// метод
function ehat($skorost)
{
// код
}
//метод
function povernut($ugol)
{
// код
}
}
?>
Как видим, всё достаточно просто. Теперь попробуем использовать этот класс. Создадим несколько автомобилей :
Код:
<?php
// создаём мой автомобиль
$mine = new avtomobil();
$mine ->nazvanie ="BMW";
$mine ->cvet ="Чёрный";
$mine ->moschnost ="200 ЛС";
// создаём её автомобиль
$ejo = new avtomobil();
$ejo -> nazvanie ="Ferrari";
$ejo -> cvet = "Красный";
$ejo -> moschnost = "300 ЛС";
// двигаем мой автомобиль с места
$mine ->tronutsia();
// увеличиваем скорость до 150 kм/ч
$mine ->ehat(150);
// а вот догоняет её автомобиль
$ejo ->ehat(180);
// о нет, ГИБДД.........
$mine -> ostanovitsia();
?>
Новый объект создаётся при помощи оператора new. Переменной присваивается значение типа "object", обращая её таким образом в объект. Используя оператор -> мы можем обращаться ко всем методам и свойствам объекта. Присвоение значений свойствам объекта идентично присвоению значений переменным.
Используя ООП часто нужно менять значение свойств объекта внутри самого класса. Для этого используется зарезервированная переменная $this, означающая, что свойство принадлежит данному классу.
Код:
<?php
class avtomobil
{
var $nazvanie;
var $cvet;
// .........другие свойства.........
function perekrasit($cvet)
{
[b]$this[/b]-> cvet = $cvet;
}
}
$auto =new avtomobil();
$auto->cvet="Красный";
$auto->perekrasit("Чёрный");
?>
Используя $this можно использовать не только "местные" свойства объекта. Также можно выполнять методы.
Ну а теперь пример практического применения класа : создадим класс, который будет отрисовывать ХТМЛ таблицу по заданому количеству строк и столбцов.
Код:
<?php
class tablica
{
var $stroka;
var $stolbec;
// указать количество строк и столбцов
function zadat($stroka,$stolbec)
{
$this->stroka=$stroka;
$this->stolbec=$stolbec;
}
// создать таблицу
function sozdat_tablicu()
{
echo"<table border=1>";
for($x=1;$x<=$this->stroka;$x++)
{
echo"<tr>";
for($y=1;$y<=$this->stolbec;$y++)
{
echo"<td>$x,$y</td>";
}
echo"</tr>";
}
echo"</table>";
}
?>
У этого класса два метода : zadat(), который указывает строк и столбцов будет иметь таблица, и sozdat_tablicu(), который рисует таблицу по заданым размерам. Вот пример использования :
Код:
<?php
$obj=new tablica();
$obj->zadat(2,3);
$obj->sozdat_tablicu();
?>
В классе также можно описать функцию, которая будет выполняться автоматически при создании объекта. Такая функция называется конструктором и должна иметь такое же название как и сам класс.
Например : дополним класс методом который присвоит значения переменным по умолчанию.
Код:
<?php
class tablica
{
var $stroka;
var $stolbec;
// создаём
конструктор
function tablica()
{
$this->stroka=5;
$this->stolbec=3;
}
}
//другие
методы
?>
Теперь мы можем создать таблицу не задавая ей размеров:
Код:
<?php
$tabl=new tablica();
$tabl->sozdat_tablicu();
?>
Получим таблицу размером 5x3.
Ну и наконец обратим внимание на одну из самых важных особенностей ООП - наследование. Это очень просто : просто создадим производный от уже существующего класс, который дополняет родительский класс и наследует его свойства и методы.
Для создания производного класса используется ключевое слово "extends". Теперь создадим класс, производный от класса tablica :
Код:
<?php
class tablica
{
var $stroka;
var $stolbec;
var $ramka;
// указать количество строк и столбцов
function zadat($stroka,$stolbec)
{
$this-> stroka =$stroka;
$this-> stolbec=$stolbec;
}
//создать таблицу
function sozdat_tablicu()
{
echo"<table>";
for($x=1;$x<=$this->stroka;$x++)
{
echo"<tr>";
for($y=1;$y<=$this->stolbec;$y++)
{
echo"<td>$x,$y</td>";
}
echo"</tr>";
}
echo"</table>";
}
}
class novaja_tablica extends tablica
{
function zadat_ramku($tolschina)
{
$this-> ramka =$tolschina;
}
}
?>
Вот вроде бы и всё. Как видите, это не слишком сложно, но всё же постоянно нужно практиковаться и совершенствовать свои знания....
Information
- Posted on 31.01.2010 22:15
- Просмотры: 1230