Игра в классики
Предполагается, что читатель знаком с основными понятия программирования!
Создаем простейший класс MyClass.
Шаблон нашего класса имеет следующий вид:
class MyClass{
var $a;
var $b;
function GetAB()
{
echo "a= ".$this->a." b= ".$this->b;
}
}
Новоиспеченный класс MyClass имеет два свойства — $a и $b. Также есть один метод — GetAB(), который выводит в браузер значение свойств $a и $b. Обратите внимание, что мы не можем просто написать $a, так как класс не поймет, что это за переменная. Для того чтобы указать, что это свойство класса, мы обращаемся к ней через $this–>a.
Для того чтобы объявить объект (экземпляр) класса поступаем так:
$example = new MyClass;
Таким образом $example станет экземпляром класса MyClass. После этого мы можем делать такие вызовы:
$example->a=1;
$example->b=2;
$example->GetAB();
В первых двух строках мы изменяем свойства $a и $b, занося в них значения 1 и 2 соответственно. Затем вызываем метод GetAB(), который выводит нам значение этих свойств. На экран будет выведено:
a= 1 b= 2
Также есть возможность инициализации класса, то есть использовать конструктор, как в C++. Для этого необходимо создать метод с таким же именем, как у класса. Например, перепишем наш класс таким образом, чтобы при его создании свойства сразу инициализировались с указанными значениями или получали значения по умолчанию. Таким образом, нам не придется писать строки с инициализацией значений:
class MyClass{
var $a;
var $b;
function MyClass($a=1, $b=2)
{
$this->a=$a;
$this->b=$b;
}
function GetAB()
{
echo "a= ".$this->a." b= ".$this->b;
}
}
$example = new MyClass(1,1);
$example->GetAB();
Метод MyClass является конструктором и выполняется при создании класса. Заметьте, что при создании класса мы передаем два параметра — это будет значение свойств $a и $b. В этом случае на экран будет выведено:
a= 1 b= 1
Мы могли создать класс, не указывая параметров:
example = new MyClass();
В этом случае на экране мы увидели бы:
a= 1 b= 2
В отличие от C++, в PHP отсутствуют такие методы как деструкторы. Так что завершающие действия вы должны будете вызывать вручную.
Теперь давайте напишем более серьезный класс. Будем создавать массив, размерность которого задается пользователем, при этом дадим возможность заполнять отдельные его ячейки значениями. Также будут методы, позволяющие узнавать сумму всех элементов, максимального и минимального числа в массиве:
<?php
class Arr{ //имя класса
//свойства
var $n; //количество элементов в массиве
var $mass = Array(); //сам массив
var $min1, $max1; //минимальное и максимальное значение
var $summa; //сумма элементов
//методы
function Arr($kolvo=5) //конструктор
{
$this->n=$kolvo; //размер массива
for($i=0;$i<=$this->n;$i++)
$this->mass[$i]=0; //инициализируем массив нулями
}
function Sum() //сумма
{
$this->summa=0; //начальное обнуление суммы
for($i=0;$i<$n;$i++)
$this->summa+=$this->mass[$i]; //суммируем все элементы массива
return $summa; //возвращаем сумму
}
function Set($index,$value) //заполнение массива
{
$this->mass[$index]=$value; /* занесение значения $value в элемент под номером $index */
}
function Get() //вывести массив
{
for($i=0;$i<$this->n;$i++)
echo $this->mass[$i]." "; /* через пробел выводим все элементы массива */
}
function MinMax() /* минимальное и максимальное значение среди элементов массива */
{
/* изначально принимаем за минимальное и максимальное значение первый элемент массива */
$this->min1=$this->mass[0];
$this->max1=$this->mass[0];
for($i=0;$i<$this->n;$i++)
{
/* если максимальное значение меньше, чем текущий элемент, последний принимается за максимум */
if (($this->max1)<($this->mass[$i])) $this->max1=$this->mass[$i];
/* если минимальное значение больше чем текущий элемент, последний принимается за минимум */
if (($this->min1)>($this->mass[$i])) $this->min1=$this->mass[$i];
}
echo "<br>MAX: ".$this->max1."<br> MIN: ".$this->min1; /* вывод максимального и минимального элемента */
}
} //конец класса
$ms = new Arr(3); //создаем массив на три элемента
/* заполняем массив — первый параметр является индексом, второй параметр — это значение */
$ms->Set(0,3);
$ms->Set(1,5);
$ms->Set(2,2);
$ms->Get(); //вывод массива
$ms->MinMax(); //вывод минимального и максимального числа в массиве.
?>
Думаю, по комментариям должно быть все понятно. В браузере мы увидим такой вывод:
3 5 2
MAX: 5
MIN: 2
Первая строка (3 5 2) — это элементы массива, которые мы вывели с помощью метода Get(). Затем функция MinMax() вывела нам максимальный и минимальный элементы массива, которыми являются 5 и 2 соответственно.
Также важный момент в работе с классами — наследование. Класс может наследовать другой класс, таким образом он будет называться производным или дочерним, а наследуемый класс — базовым или родительским. Рассмотрим пример наследования:
class Base
{
function GetBaseStr()
{
echo "Base class<br>";
}
}
class Origin extends Base
{
function GetOriginStr()
{
echo "Origin class<br>";
}
}
Мы объявили два класса — Base с методом GetBasStr() и Origin с методом GetOriginStr(). При объявлении класса Origin мы указали, что он является производным от класса Base. А это значит, что ему доступны все возможности класса Base. Теперь посмотрим, как использовать данный класс:
$example = new Origin;
$example->GetOriginStr();
$example->GetBaseStr();
Как видите, производный класс имеет все возможности базового класса, кроме своих собственных. Другими словами, он расширяет возможности класса, от которого произошел. Если базовый класс Base способен только выводить строку Base class, то для производного класса Origin доступен вывод строк Origin class и Base class.
Первый шаг мы с вами сделали ! Пробуйте, исследуйте, экспериментируйте…
Сайт автора ( http://webscript.ru///www.HeeL.org.ua )
Мой Компьютер ( http://webscript.ru///mycomp.com.ua )
|