Модуль 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-сжатие.В конструкторе он должен принимать любую произвольную строку и булевый флаг, который позволяет указать тип переданной строки(закодированная или нет), а также иметь следующие методы:
    1. encode() - кодирует строку и устанавливает флаг
    2. decode() - раскодирует строку и устанавливает флаг
    3. getText() - вовзвращет строку
    4. isRle() - булев флаг
  • Создайте экземпляр объекта и проверьте его работоспособность на произвольных строках.

Домашнее задание № 2

Наследование.
  • Создайте абстрактный класс EmailInformer с абстрактными методами setMail и send.
  • Создайте два дочерних класс GoogleInformer и YandexInformer.
  • Они должны отличаться тем, что метод setMail у первого принимает почту с gmail.ru, а второй yandex.ru.
  • Если передана неверная почта, то они сообщают об ошибке.
  • Метод send должен выводить на экран сообщение: "Отправлено на почту [тип(google или yandex)][почта(переданная в setMail)]".
  • Реализуйте объекты GoogleInformer и YandexInformer и проверьте, что они работают верно.

Домашнее задание № 3

Singleton.
  1. Создайте класс настроек приложения, реализующий паттерн singleton.
  2. При инициализации он должен парсить файл настроек app.ini(его тоже нужно создать). Для удобства используйте формат конфигурационного файла php и функцию parse_ini_file.
  3. В этом файле опишите основные настройки приложения: хост mysql, юзера mysql, пароль mysql и название базы данных.
  4. Реализуйте следующие методы класса: getDbHost(), getDbUser(), getDbPass(), getDbName().
  5. Создайте объект класса и проверьте корректность работы.

© 2020-2021 Александр Пантелеев