Объявление класса

Классы образуют синтаксическую базу объектно-ориентированного программирования. Их можно рассматривать как своего рода «контейнеры» для логически связанных данных и функций (обычно называемых методами). Класс представляет собой шаблон (чертеж), по которому создаются конкретные экземпляры, используемые в программе. Экземпляры классов называются объектами. Класс также можно рассматривать как тип данных, а объект — как переменную.

Общий формат классов РНР:

class Class_name {

var $attribute_1;

...

var $attribute_N;

function function1() {

...

}

...

function functionN() {

...

} // end Class_name

Объявление класса должно начинаться с ключевого слова class. Каждому объявлению атрибута, содержащегося в классе, должно предшествовать ключевое слово var. После объявлений атрибутов следуют объявления методов, очень похожие на типичные объявления функций. При ссылках на атрибуты внутри методов используется специальная переменная $this. Синтаксис методов продемонстрирован в следующем примере:

class Webpage {

var $bgcolor;

function setBgColor($color) { $this->bgcolor = $color; }

function getBgColor() {return $this->bgcolor;}

}

Переменная $thisссылается на экземпляр объекта, для которого вызывается метод. Атрибут, на который вы ссылаетесь в методе, не нужно передавать в виде параметра функции; знак доллара ($) ставится перед переменной $this, но не перед именем атрибута.

Объекты создаются оператором new. Например, объект класса Webpage создается следующей командой: $home_page = new Webpage;

Новый объект с именем $home_page обладает собственным набором атрибутов и методов, перечисленных в классе Webpage. Для изменения значения атрибута $bgcolor, принадлежащего этому конкретному объекту, можно воспользоваться определенным в классе методом setBgColor( ):

$home_page->setBgColor("black");

Можно явно получить значение атрибута указанием имен объекта и атрибута: $home_page->bgcolor;

Конструкторпредставляет собой метод, который задает значения некоторых атрибутов (а также может вызывать другие методы). Конструкторы вызываются автоматически при создании новых объектов. Чтобы это стало возможным, имя метода-конструктора должно совпадать с именем класса, в котором он содержится.

Пример конструктора

class Webpage {

var $bgcolor;

function Webpage($color) {

$this->bgcolor = $color;

}

}

// Вызвать конструктор класса Webpage

$page = new Webpage("brown");

Роль деструкторавыполняет функция unset( ) котороя уничтожает содержимое переменной и возвращает занимаемые ею ресурсы системе. С объектами unset( ) работает так же, как и с переменными (пример, unset($Webpage);). Можно поместить вызов unset( ) в метод с именем destroy( ) и затем вызвать его:

$Website->destroy( );

Концепция получения классом характеристик от другого, более общего класса называется наследованием. В общем случае синтаксис наследования характеристик другого класса выглядит так:

class Class_name2 extends Class_name1 {

объявления атрибутов;

объявления методов;

}

Ключевое слово extendsговорит о том, что класс Class_name2 наследует все характеристики класса Class_name1. Вызов конструктора производного класса не приводит к автоматическому вызову конструктора базового класса.

Пример. Представление различных типов транспортных средств при помощи наследования

// Транспортное средство

class Vehicle {

var $model;

var $current_speed;

function setSpeed($mph) {

$this->current_speed = $mph;

}

function getSpeed() {

return $this->current_speed;

}

}

// Автомобиль

class Auto extends Vehicle {

var $fue1_type;

function setFuelType($fuel) {

$this->fuel_type = $fuel;

}

function getFuelType() {

return $this->fuel_type;

}

}

// Самолет

class Airplane extends Vehicle {

var $wingspan;

function setWingSpan($wingspan) {

$this->wingspan = $wingspan;

}

function getWingSpan() {

return $this->wingspan;

}

}

Объекты этих классов создаются следующим образом:

$tractor = new Vehicle;

$gulfstream = new Airplane;

Приведенные команды создают два объекта. Первый объект, $tractor, относится к классу Vehicle. Второй объект, $gulfstream, относится к классу Airplane и потому обладает как общими характеристиками класса Vehicle, так и уточненными характеристиками класса Airplаne.

С увеличением размеров и сложности программ может возникнуть необходимость в многоуровневом наследовании. Иначе говоря, класс будет наследовать свои свойства от других классов, которые, в свою очередь, будут наследовать от третьих классов и т. д.








Дата добавления: 2015-04-15; просмотров: 623;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.