Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в Веб программирование.doc
Скачиваний:
81
Добавлен:
07.11.2018
Размер:
4.42 Mб
Скачать

Объектно-ориентированное программирование в php Основные понятия ооп

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

Объект – обладающий именем набор данных (полей объекта), физически находящихся в памяти компьютера, и методов, имеющих доступ к ним и выполняющих операции над ними. Имя объекта исполь­зуется для доступа к полям данных и методам, составляющим объект. Объект является экземпляром определенного класса. В классе дается обобщенное описание некоторого набора родственных реально существующих объектов. Объектно-ориентированное программирование основано на принципах:

  • абстрагирования данных;

  • инкапсуляции;

  • наследования;

  • полиморфизма;

  • «позднего связывания».

Инкапсуляция (encapsulation) – принцип, объединяющий данные и код, манипулирующий этими данными, а также защищающий данные от прямого внешнего доступа и неправильного использования. Другими словами, доступ к данным класса возможен только посредством методов этого же класса.

Наследование (inheritance) – это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства объекта - предка и добавлять к ним свойства и методы, характерные только для него. Наследование бывает двух видов:

линейное – класс имеет один и только один суперкласс (предок);

множественное – класс может иметь любое количество предков.

Полиморфизм (polymorphism) – механизм, использующий одно и то же имя метода для решения двух или более похожих, но несколько отличающихся задач.

Целью полиморфизма, применительно к ООП, является использование одного имени для задания общих для класса действий. В более общем смысле, концепцией полиморфизма является идея "один интерфейс, множество методов".

Механизм «позднего связывания» в процессе выполнения программы определяет принадлежность объекта конкретному классу и производит вызов метода, относящегося к классу, объект которого был использован.

Классы и Объекты

Модель объектов PHP больше похожа на модель объектов Java, чем на модель C++. Класс представляет объединение переменных и функций-методов, работающих с этими переменными. Переменные класса определяются с ключевым словом var как в PHP4 или со спецификатором доступа private, public или protected как в PHP5. Методы определяются в классе с ключевым словом function и спецификатором доступа. Рассмотрим пример:

<?php

class Mycart

{//var $items=0; в PHP4

private $items=0; //переменные класса в PHP5

public function add ($n) // Добавить $n артикулов

{

$this->items += $n;

}

public function remove ( $n) // Изъять $n артикулов

{

if ($this->items > $n) {

$this->items -= $n;

return true; }

else { return false; }

}

public function show()

{

echo '$items=', $this->items ;

}

}//конец класса

$instance=new Mycart();

$instance->add(5);

$instance->remove(2);

$instance->show();

echo $instance->items ;//ошибка

?>

Вывод:

$items=3

Fatal error: Cannot access private property Mycart::$items in x:\home\localhost\www\my\pr41.php on line 25 – нет доступа к private переменной items

Здесь $instance представляет ссылку на объект класса, сам объект создается операцией new. Каждый объект получает собственный числовой идентификатор (handler), который используется при обращении к объекту.

Внутри определения метода класса вы не знаете, под каким именем объект будет доступен в программе: на момент написания класса неизвестно, как объект будет называться и какие объекты будут использоваться. Чтобы иметь возможность доступа к переменным и функциям внутри класса, можно использовать псевдопеременную $this, которая может читаться как 'ссылка на текущий объект'.

В PHP 5 введены спецификаторы доступа public, protected и private, которые позволяют указать степень доступа к свойствам и методам класса.

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

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

Если не указывать ни один из спецификаторов, то по умолчанию элемент будет иметь уровень доступа public. Такой же уровень доступа по умолчанию получают свойства, для объявления которых использовалось устаревшее и не рекомендуемое к использованию в PHP 5 ключевое слово var, а спецификатор доступа не используется. Это сделано для переемственности с PHP4.