Разделы презентаций


Мировые информационные ресурсы Лекция 8. Объектно-ориентированные возможности

Содержание

Хотя РНР обладает общими объектно-ориентированными возможностями, он не является полноценным ОО-языком (например, таким, как C++ или Java). В частности, в РНР не поддерживаются следующие объектно-ориентированные возможности:множественное наследование; автоматический вызов конструкторов;

Слайды и текст этой презентации

Слайд 1Мировые информационные ресурсы Лекция 8. Объектно-ориентированные возможности РНР

Мировые информационные ресурсы  Лекция 8. Объектно-ориентированные 					  возможности РНР

Слайд 2
Хотя РНР обладает общими объектно-ориентированными возможностями, он не является

полноценным ОО-языком (например, таким, как C++ или Java).
В частности,

в РНР не поддерживаются следующие объектно-ориентированные возможности:
множественное наследование;
автоматический вызов конструкторов;
абстрактные классы;
перегрузка методов;
перегрузка операторов;
закрытый и открытый доступ, виртуальные функции;
деструкторы;
полиморфизм.

Хотя РНР обладает общими объектно-ориентированными возможностями, он не является полноценным ОО-языком (например, таким, как C++ или

Слайд 3
Классы - своего рода «контейнеры» для логически связанных данных

и функций, обычно называемых методами.
Класс представляет собой шаблон, по

которому создаются конкретные экземпляры, используемые в программе.
Экземпляры классов называются объектами.
Объявление класса должно предшествовать объявлению объектов, создаваемых на их основе.

Классы, объекты и объявления методов

Классы - своего рода «контейнеры» для логически связанных данных и функций, обычно называемых методами. Класс представляет

Слайд 4
class Class_name {
var $attribute_1;
...
var $attribute_N;
function function1() {
...}
...
function functionN()

{
...}
По общепринятым правилам имена классов ООП начинаются с прописной

буквы, а все слова в именах методов, кроме первого, начинаются с прописных букв (первое слово начинается со строчной буквы).

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

class Class_name { var $attribute_1;...var $attribute_N;function function1() {...}...function functionN() {...} По общепринятым правилам имена классов ООП

Слайд 5
Методы часто используются для работы с атрибутами классов. При

ссылках на атрибуты внутри методов используется специальная переменная $this. Синтаксис

методов:
class Webpage {
var $bgcolor;
function setBgColor($color) {
$this->bgcolor = $color;
}
function getBgColor() {
return $this->bgcolor;
}}
?>

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

Методы часто используются для работы с атрибутами классов. При ссылках на атрибуты внутри методов используется специальная

Слайд 6
Переменная $this ссылается на экземпляр объекта, для которого вызывается

метод. Поскольку в любом классе может существовать несколько экземпляров объектов,

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

$this->bgcolor = $color;

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

Переменная $this ссылается на экземпляр объекта, для которого вызывается метод. Поскольку в любом классе может существовать

Слайд 7
Объекты создаются оператором new.

Пример: создание объекта класса Webpage:
$some_page

= new Webpage;
//Новый объект с именем $some_page обладает собственным набором

атрибутов и методов, перечисленных в классе Webpage.

Изменение значения атрибута $bgcolor:
$some_page->setBgColor("black");

Создание объектов

Объекты создаются оператором new. Пример: создание объекта класса Webpage:$some_page = new Webpage;//Новый объект с именем $some_page

Слайд 8
- метод, который задает значения некоторых атрибутов (а также

может вызывать другие методы).
- вызывается автоматически при создании новых

объектов. Чтобы это стало возможным, имя метода-конструктора должно совпадать с именем класса, в котором он содержится.

Пример:
class Webpage {
var $bgcolor;
function Webpage($color) {
$this->bgcolor = $color;
}}

Конструктор

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

Слайд 9
// Вызвать конструктор класса Webpage
$page = new Webpage("brown");
?>
В зависимости

от количества передаваемых параметров могут вызываться разные конструкторы:
$page = new

Webpage; # конструктор создает объект, но не инициализирует его атрибуты
$page = new Webpage("brown"); #вызов конструктора, определенного в классе

Конструктор


Слайд 10
В РНР отсутствует непосредственная поддержка деструкторов.
Функция unset( )

имитирует работу деструктора, уничтожая содержимое переменной и возвращая занимаемые ею

ресурсы системе.
Пример:
unset($Webpage);

Все переменные и объекты автоматически уничтожаются по завершении сценария.
Необходимость в вызове деструкторов возникает при работе с объектами, использующими большой объем ресурсов.

Деструктор

В РНР отсутствует непосредственная поддержка деструкторов. Функция unset( ) имитирует работу деструктора, уничтожая содержимое переменной и

Слайд 11
Синтаксис наследования характеристик другого класса в РНР:
class Class_name2 extends

Class_name1 {
объявления атрибутов;
объявления методов;
}

Класс Class_name2 наследует все характеристики класса Class_name1.

Простое

и иерархическое наследование
Синтаксис наследования характеристик другого класса в РНР:class Class_name2 extends Class_name1 {объявления атрибутов;объявления методов;}Класс Class_name2 наследует все

Слайд 12
Вызов конструктора производного класса не приводит к автоматическому вызову

конструктора базового класса.
Пример:
// Транспортное средство
class Vehicle {
var $model;
var

$current_speed;
function setSpeed($mph) {
$this->current_speed = $mph;
}
function getSpeed() {
return $this->current_speed;
}}

Простое и иерархическое наследование

Вызов конструктора производного класса не приводит к автоматическому вызову конструктора базового класса. Пример:// Транспортное средство class

Слайд 13
// Автомобиль
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;
}}?>

Простое и иерархическое наследование

// Автомобильclass Auto extends Vehicle { var $fue1_type;function setFuelType($fuel) {$this->fuel_type = $fuel;}function getFuelType() {return $this->fuel_type;}}// Самолетclass

Слайд 14
Объекты этих классов создаются следующим образом:
$tractor = new Vehicle;
$gulfstream

= new Airplane;

- объект $gulfstream относится к классу Airplane и

потому обладает как общими характеристиками класса Vehicle, так и уточненными характеристиками класса Airplаne.


Простое и иерархическое наследование

Объекты этих классов создаются следующим образом:$tractor = new Vehicle;$gulfstream = new Airplane;- объект $gulfstream относится к

Слайд 15
Функция get_class_methods( )
- возвращает массив имен методов класса

с заданным именем. Синтаксис: get_class_methods (имя_класса)‏
Пример


var $wingspan;
function setWingSpan($wingspan) {
$this->wingspan = $wingspan;}
function getWingSpan() {
return $this->wingspan;
}}
$cls_methods = get_class_methods(Airplane);
// Массив $cls_methods содержит имена всех методов, объявленных в классах "Airplane" и "Vehicle"
?>

Функции для работы с классами и объектами

Функция get_class_methods( ) - возвращает массив имен методов класса с заданным именем. Синтаксис: get_class_methods (имя_класса)‏ПримерФункции для

Слайд 16
Функция get_class_vars( )
- возвращает массив имен атрибутов класса

с заданным именем.
Синтаксис: get_class_vars (имя_класса)‏

Пример

}
class Airplane extends Vehicle {
var Swingspan; }
$a_class = "Airplane";
$attribs = get_class_vars($a_class);
// $attribs = array ( "wingspan", "model", "current_speed")‏
?>

Функции для работы с классами и объектами

Функция get_class_vars( ) - возвращает массив имен атрибутов класса с заданным именем. Синтаксис: get_class_vars (имя_класса)‏ПримерФункции для

Слайд 17
Функция get_object_vars( )‏
- возвращает ассоциативный массив с информацией обо

всех атрибутах объекта с заданным именем.
Синтаксис: get_object_vars (имя_обьекта)‏
Пример: Получение

информации о переменных объекта
var Swheels; }
class Land extends Vehicle {
var Sengine;}
class car extends Land {
var $doors:
function car($doors, $eng, $wheels) {
$this->doors = $doors;
$this->engine = $eng;
$this->wheels = $wheels;}

Функции для работы с классами и объектами

Функция get_object_vars( )‏- возвращает ассоциативный массив с информацией обо всех атрибутах объекта с заданным именем. Синтаксис:

Слайд 18
function get_wheels() {
return $this->wheels;
}}
$toyota = new car(2,400,4);
$vars = get_object_vars($toyota);
while

(list($key, $value) = each($vars)) :
print "$key ==> $value
";
endwhile;
// Выходные

данные:
// doors ==> 2
// engine ==> 400
// wheels ==> 2
?>

Функции для работы с классами и объектами


Слайд 19
Функция method_exists( )
- проверяет, поддерживается ли объектом метод

с заданным именем. Если метод поддерживается, функция возвращает TRUE, в

противном случае возвращается FALSE. Синтаксис:
method_exists (имя_обьекта, имя_метода)‏
Пример:
... }
class Land extends Vehicle {
var $fourWheel;
function setFourWheel Drive() {
$this->fourWeel = 1;
}}

Функции для работы с классами и объектами

Функция method_exists( ) - проверяет, поддерживается ли объектом метод с заданным именем. Если метод поддерживается, функция

Слайд 20
// Создать объект с именем $саr
$car = new Land;
//

Если метод "fourWheelDrive" поддерживается классом "Land"
// или "Vehicle", вызов method_exists

возвращает TRUE;
// в противном случае возвращается FALSE.
// В данном примере method_exists() возвращает TRUE.
if (method_exists($car, "setfourWheelDrive")) :
print "This car is equipped with 4-wheel drive";
else :
print "This car is not equipped with 4-wheel drive";
endif;
?>

Функции для работы с классами и объектами


Слайд 21
Функция get_class( )
- возвращает имя класса, к которому

относится объект с заданным именем. Синтаксис: get_class(имя_объекта);
Пример

extends Vehicle {
... }
// Создать объект с именем $саr
$car = new Land;
// Переменной $class_a присваивается строка "Land"
$class_a = get_class($car);
?>

Функции для работы с классами и объектами

Функция get_class( ) - возвращает имя класса, к которому относится объект с заданным именем. Синтаксис: get_class(имя_объекта);ПримерФункции

Слайд 22
Функция get_parent_class( )‏
- возвращает имя родительского класса (если он

есть) для объекта с заданным именем.
Синтаксис: get_parent_class (имя_обьекта);
Пример

Vehicle {
... }
class Land extends Vehicle {
... }
// Создать объект с именем $саr
$саr = new Land;
// Переменной $parent присваивается строка "Vehicle"
$parent = get_parent_dass($car);
?>

Функции для работы с классами и объектами

Функция get_parent_class( )‏- возвращает имя родительского класса (если он есть) для объекта с заданным именем. Синтаксис:

Слайд 23
Функция is_subclass_of( )‏
- проверяет, был ли объект создан на

базе класса, имеющего родительский класс с заданным именем. Функция возвращает

TRUE, если проверка дает положительный результат, и FALSE в противном случае. Синтаксис:
is_subclass_of (объект, имя_класса)‏
Пример
class Vehicle {
...}
class Land extends Vehicle {
...}
$auto = new Land;
// Переменной $is_subclass присваивается TRUE
$is_subclass = is_subclass_of($auto, "Vehicle");
?>

Функции для работы с классами и объектами

Функция is_subclass_of( )‏- проверяет, был ли объект создан на базе класса, имеющего родительский класс с заданным

Слайд 24
Функция get_declared_classes( )
- возвращает массив с именами всех

определенных классов. Синтаксис:
get_declared_classes( )‏
Пример

= get_declared_classes();
// $declared_classes = array("Vehicle", "Land")‏
?>

Функции для работы с классами и объектами

Функция get_declared_classes( ) - возвращает массив с именами всех определенных классов. Синтаксис:get_declared_classes( )‏ПримерФункции для работы с

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика