Модуль 2. Введение в ООП
Программа модуля
- Введение и основы
- Константы классов
- Конструкторы и деструкторы
- Магические методы
- Наследование
- Абстрактные классы
- Интерфейсы объектов
- Трейты
- Анонимные классы
- Перегрузка
- Пространство имён
- Автоматическая загрузка классов
Приложения к модулю
Презентация:
Лабораторная работа № 1
Создание Классов Request и Response.
- Создайте класс Request, который в конструкторе должен получать get, post и cookie массивы.
- Этот класс должен иметь методы для работы с этими массивами, например: getPostArray() - для получения всего массива и getPost() для получения одного элемента.
- Реализуте класс Cookie, который в конструкторе будет получать основные данные, необходимые для создание cookie.
- Реализуйте у него все необходимые геттеры.
- Реализуйте класс Response, который принмает в конструкторе Http код ответа и отправляет этот код в браузер.
- Реализуйте в этом классе метод setCookie(), который принимает объект класса Cookie и устанавливает cookie в браузер.
Лабораторная работа № 2
Создание логгера для отладки.
- Создайте интерфейс LoggingInterface с методом getMsg, который должен возвращать строку.
- Создайте класс Logger с методом setLogger, который будет принимать объект, реализующий интерфейс LoggingInterface и устанавливать его во внутреннее свойство.
- Реализуйте в Logger метод log, который будет записывать в файл, информацию, полученную от установленного выше объекта из метода getMsg.
- Метод log должен также записывать в файл время.
- Создайте класс User, реализующий интерфейс LoggingInterface.
- Создайте объект Logger и объект User.
- Передайте User в Logger и вызовите метод log.
- Проверьте созданный файл.
Домашнее задание № 1
ООП-реализация.
- Создайте класс, реализующий RLE-сжатие.В конструкторе он должен принимать любую произвольную строку и булевый флаг, который позволяет указать тип переданной строки(закодированная или нет), а также иметь следующие методы:
- encode() - кодирует строку и устанавливает флаг
- decode() - раскодирует строку и устанавливает флаг
- getText() - вовзвращет строку
- isRle() - булев флаг
- Создайте экземпляр объекта и проверьте его работоспособность на произвольных строках.
Домашнее задание № 2
Наследование.
- Создайте абстрактный класс EmailInformer с абстрактными методами setMail и send.
- Создайте два дочерних класс GoogleInformer и YandexInformer.
- Они должны отличаться тем, что метод setMail у первого принимает почту с gmail.ru, а второй yandex.ru.
- Если передана неверная почта, то они сообщают об ошибке.
- Метод send должен выводить на экран сообщение: "Отправлено на почту [тип(google или yandex)][почта(переданная в setMail)]".
- Реализуйте объекты GoogleInformer и YandexInformer и проверьте, что они работают верно.
Домашнее задание № 3
Singleton.
- Создайте класс настроек приложения, реализующий паттерн singleton.
- При инициализации он должен парсить файл настроек app.ini(его тоже нужно создать). Для удобства используйте формат конфигурационного файла php и функцию parse_ini_file.
- В этом файле опишите основные настройки приложения: хост mysql, юзера mysql, пароль mysql и название базы данных.
- Реализуйте следующие методы класса: getDbHost(), getDbUser(), getDbPass(), getDbName().
- Создайте объект класса и проверьте корректность работы.