(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Мобильные платформы | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Выпускники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация

Цель работы

Получить навыки работы с классами и объектами в PHP 5. Освоить следующие возможности объектной модели в PHP 5: модификаторы области видимости (private, public, protected), клонирование, константы, наследование, специальные методы (__clone, __construct)

Описание работы

Выполнить следующие пункты задания, объяснить результат
 #   Задание 
1 Описать класс NotePad, содержащий
Свойства:
$phone - свойство должно быть доступно только в контексте класса;
$name - свойство должно быть доступно как в контексте класса, так и вне его;
$surname - свойство должно быть доступно как в контексте класса, так и вне его.
Константы:
TEXT_SIZE = 20 - максимальная длина строки для свойств класса
Методы:
note_show - выводит значение $phone, $name, $surname и TEXT_SIZE.
2 Создать экземпляр $note1 класса NotePad. Вызвать метод note_show. Вывести значение TEXT_SIZE без использования метода note_show
3 Добавить в класс конструктор, принимающий три аргумента и устанавливающий значение свойств $phone, $name и $surname соответственно. Создать экземпляр $note2 класса NotePad. Вывести значение свойств класса с помощью метода note_show
4 Определить метод __clone() так, чтобы при клонировании значение свойств $phone, $name, $surname обнулялось. Создать копию $note2_copy объекта $note2. Вызвать метод note_show для объекта $note2_copy
5 Создать класс NoteChild, наследующий NotePad. В классе NoteChild переопределите метод note_show следующим образом:
а) note_show выводит имя текущего класса (см. набор предопределенных констант magic constants);
a) note_show выводит строку "Вызов родительского метода note_show ...";
б) вызывает метод note_show родительсткого класса
6 Создать объект $child1 класса NoteChild. Вызвать метод note_show. Создать копию $child1_copy объекта $child1. Вывести значение свойств $phone, $name, $surname для объекта $child1_copy
7 Добавить в класс NoteChild метод cut_note, который обрезает строковые значения свойств $phone, $name, $surname до максимальной длины, разрешенной значением константы TEXT_SIZE. Создать объект $child2 класса NoteChild и вызвать для него метод cut_note. Вывести значения свойств $phone, $name, $surname для объекта $child2.

Чтобы обрезать строки можно использовать функции для мультибайтовых строк mb_substr или mb_strcut, установив значение кодировки "UTF-8".

Обратите внимание на ошибку при обращении к частному (private) свойству $phone. Измените модификатор области видимости для $phone, чтобы избежать ошибки.