- •1. Классификация компьютерных сетей
- •2. Четырехслойная модель компьютерных сетей
- •3. Поколения сетевых адаптеров
- •4. Физическая и логическая структуризация компьютерных сетей
- •5. Протоколы tcp, udp
- •6. Протокол ftp, команды протокола
- •8,9 Схема сокетных функций Клиента по протоколу udp/tcp
- •16. Установление связи Клиента с Сервером – «трехэтапное рукопожатие».
- •17. Характеристика и возможности xml.
- •18. Стандарты платформы xml.
- •19. Xml документ. Описание структуры документа с помощью dtd.
- •21. Стандарт языка xml xLink. Пример.
- •22. Web сервисы.
- •23. Серверы приложений.
- •24. Стек веб-сервисов.
- •26. Архитектура клиент-сервер
- •27ЮТиповая архитектура j2ee.
- •28. Схема работы по протоколу rmi.
- •29. Инструментальные средства создания серверных web приложений
- •30. Инструментальные средства создания клиентских web приложений
- •31. Разработка клиентской части сетевых приложений с помощью Java апплетов.
- •32. Разработка клиентской части сетевых приложений с помощью JavaScript.
- •33. Денвер
- •34. Применение инструментального средства создания серверных приложений php.
- •35. Синтаксис php
- •36. Переменные и константы php. Типы данных
- •37. Операторы php
- •38. Основные функции php: if, while, for, swich, case
- •39. Массивы в php
- •40. Работа со строками в php
- •42. Включение файлов php(include())
- •43. Комментарии в php
- •44. Классы и ооп в php
- •45. Формы. Кнопки и другие управляющие элементы
- •46. Работа с файлами в php
44. Классы и ооп в php
Принципы ООП.
Давайте вдумаемся в эти слова "объектно-ориентированный". Они подразумевают, что какая-то деятельность направлена на определенный объект. Объектами в нашей повседневной жизни выступают все окружающие нас предметы: автомобили, книги, стол, CD, домашние тапочки в конце концов.
Класс служит шаблоном для объекта. Он создается следующим образом:
class Myclass {
// определение класса
}
Класс может содержать внутри себя собственные определяющие этот класс переменные, называемые свойствами класса. Кроме того, класс, как правило, содержит функции, которые называются методами класса. Для разграничения методов и свойств следует запомнить, что методы ассоциируются с глаголами в нашем обыденном языке, а свойства - с прилагательными или существительными. Тем самым метод всегда подразумевает действие, а свойство - признак объекта.
К примеру, возьмем такой объект, как шариковая ручка. Его свойствами могут являться слова "пластмассовая", "синяя", "новая" и так далее. А методом будет лишь то, что она пишет (конечно, если вы не найдете другой способ ее применения).
Доступ к свойствам и методам класса достигается с помощью указания пути к нему, где первым его элементом является название класса, а вторым - название самого свойства или метода. Элементы пути разделяются знаком ->. Давайте рассмотрим, как это делается:
class Array_class {
var $array = array(); // Определение свойства
function getUniqSum() { // Получает сумму уникальных элементов
return array_sum(array_unique($this->array));
}
function getSortedMerge() { /* Возвращает отсортированный массив из
ключей и элементов массива */
$result = array_merge(array_keys($this->array), array_values($this->array));
sort($result);
return $result;
}
}
Вот мы написали небольшой класс работы с массивами. Он имеет одно свойство - $array. Обратите внимание, как мы прописываем к нему путь: как уже говорилось, первым элементом пути должно быть название класса, но ввиду того, что это свойство и так находится в самом классе, то название меняется на слово this.
Далее мы определяем два метода класса, представляющие собой функции getUniqSum() и getSortedMerge(). Обратите внимание, что свойства классов всегда являются глобальным в пределах этого класса, то есть нам не требовалось в каждой функции писать global $this->array. Также заметьте, где ставится знак $: его место в самом начале описания пути. Причем он ставится даже перед указанием пути к методу класса (то есть фактически к функции).
Теперь создадим новый класс, который будет наследовать все возможности родительского класса.
class Advanced_array extends Array_class {
function advanced_array($size) { /* заполняет массив подряд
идущими числами, чередуя их знаки */
$z = 1;
for ($i = 0; $i < $size; $i++) {
$this->array[$i] = $i *$z;
$z = - $z;
}
}
function getSizeofMerge() { /* возвращает число
неповторяющихся элементов массива, полученного getSortedMerge() */
$merge = $this->getSortedMerge();
return sizeof(array_unique($merge));
}
}
Обратите внимание на функцию с названием самого класса. Это так называемый конструктор класса, который автоматически вызовется при создании экземпляра класса.
Теперь рассмотрим ход работы с полученными классами.
$my = new Array_class;
$my->array = array(1, 2, 6, 1);
echo $my->getUniqSum();
$my = new Advanced_array(4);
echo $my->getSizeofMerge();
Сначала мы создаем новый экземпляр класса Array_class и определяем его свойство array, затем выводим сумму элементов без учета повторяющихся (в нашем примере выведется 9). Далее мы создаем экземпляр класса Advanced_array, который наследует все свойства и методы Array_class.
Обратите внимание, что при создании класса не требуется указывать никаких параметров, но так как у Advanced_array есть конструктор, требующий параметры, то в скобках мы указываем эти данные.
Таким образом не пришлось определять свойство класса Advanced_array, так как за нас это сделал конструктор. Затем мы применяем метод getSizeofMerge(), который сам по себе использует метод родителя getSortedMerge(), и выводим полученные данные.