русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-06-12; просмотров: 569; Нарушение авторских прав


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

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

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.

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



<== предыдущая лекция | следующая лекция ==>
Операторы | Основные стандартные функции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.069 сек.