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

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

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

Цель работы

Получить навыки работы с классами и объектами в PHP 5. Освоить основные возможности объектной модели в PHP 5: модификаторы области видимости, клонирование, константы, статические свойства и методы, наследование, перегрузка методов, управление перегрузкой с помощью final, абстрактные классы, интерфейсы

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

 #   Задание 
1 Определить интерфейс student_interface с методами: show_info, set_debts, show_debts, show_students
2 В файле students.php описать класс students, который реализует интерфейс student_interface и содержит следующие свойства и методы:
Свойства:
$name - имя студента. Значение свойства должно быть доступно только в контексте класса;
$group - группа. Значение свойства должно быть доступно только в контексте класса;
$n_assignments - количество выполненных заданий;
$n_absents - количество пропущенных лекций;
$debts - boolean, false - нет долгов, true - есть долги;
$n_questions - количество вопросов на зачете.
Константы:
N_LECT - число прочитанных лекций;
N_LAB - число лабораторных заданий.
Методы:
show_info - выводит информацию: имя студента, группу, количество выполненных заданий, количество пропущенных лекций, количество посещенных лекций;
set_debts - устанавливает значение переменной $debts, true - если есть пропущенные лекции и остались невыполненные задания, false - иначе; устанавливает значение $n_questions = числу пропущенных лекций;
show_debts - выводит "нет долгов" если $debts=false, иначе выводит "есть долги" и информацию: количество вопросов на зачете, количество невыполненных лабораторных.
3 Добавить в класс конструктор, принимающий 4 аргумента: имя студента, номер группы, количество выполненных заданий, количество пропущенных лекций и устанавливающий значение свойств $name, $group, $n_assignments и $n_absents соответственно
4 Определить метод __clone() так, чтобы при создании копии объекта класса students сбрасывались значения свойств $n_assignments, $n_absents, $debts, $n_questions
5 Добавить в класс статическое свойство $n_students - счетчик объектов и метод show_students для вывода текущего количества объектов класса students. Добавить деструктор класса и модифицировать конструктор для учета числа объектов
6 Создать файл view_debts.php для работы с классом students, сделать загрузку с помощью __autoload
7 Создать несколько объектов класса, передав в конструктор различные значения параметров. Вывести информацию о студенте (show_info) для произвольного объекта
8 Создать копию $copy произвольного объекта. Вывести информацию show_info для $copy
9 Вызвать метод set_debts, а затем вывести долги конкретного студента с помощью show_debts
10 Создать класс child_students, наследующий класс students. Переопределить метод show_debts таким образом, чтобы при выводе $n_questions учитывались пропуски лекций по-болезни (пропущенная по-болезни лекция считается посещенной). Для этого добавьте в класс child_students свойство $n_reports и переопределите конструктор
11 С помощью final запретить перегрузку метода show_debts в классе students. Объяснить возникновение ошибки

Критерии оценки работы

Задание оценивается в 8 баллов при условии соблюдения срока, определенного для данной лабораторной работы. При этом задание должно быть выполнено полностью, результат должен соответствовать требованиям задания, автор обязан понимать собственное решение. При несоблюдении сроков сдачи задания, базовый балл уменьшается вдвое каждую пару после срока.