DeDraw - Открытый международный online проект творческих людей

advertisement
DeDraw - Открытый международный
online проект творческих людей
Новости спорта
Игра в классики
29 мая 2008 года
Предполагается, что читатель знаком с основными понятия программирования!Создаем
простейший класс 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
отсутствуют такие методы как деструкторы. Так что завершающие действия вы должны
будете вызывать вручную.Теперь давайте напишем более серьезный класс. Будем
создавать массив, размерность которого задается пользователем, при этом дадим
возможность заполнять отдельные его ячейки значениями. Также будут методы,
позволяющие узнавать сумму всех элементов, максимального и минимального числа в
массиве:<?phpclass 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 2MAX: 5MIN: 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://dedraw.ru/programming/1996
Download