Андрей Попов. Доцент.

Ключ к тому, чтобы делать большие и расширяющиеся системы, заключается в том, чтобы придумывать, как модули будут общаться друг с другом, а не заботиться об их внутренних свойствах и поведении.
Алан Кей

Объектно-ориентированное программирование

Короткий вводный курс в ООП: основные понятия, механизмы и паттерны проектирования.


Регистрация на занятии: https://forms.gle/QfPoc2hFCJEcFwSH7

Вопросы к экзамену

  1. История развития ООП как парадигмы программирования.
  2. Процедурный и объектно-ориентированный стили программирования.
  3. Базовые принципы объектно-ориентированного программирования.
  4. Области видимости свойств и методов в классах и объектах.
  5. Создание и удаление объектов. Конструкторы и деструкторы объектов.
  6. Инкапсуляция в ООП.
  7. Наследование в ООП. Абстрактные класы.
  8. Принцип полиморфизма в ООП.
  9. Константы класса. Статические свойства и методы.
  10. Типы отношений между объектами: наследование, композиция, агрегация.
  11. Дополнительные инструменты ООП: интерфейсы и трейты.
  12. События и сообщения в ООП. Пространства имен для классов.
  13. UML-диаграммы классов.
  14. Принципы SOLID в ООП.
  15. Паттерны проектирования в ООП: назначение и основные принципы.
  16. Паттерны проектирования "Simple Factory", "Strategy", "Builder", "Decorator", "Singleton".
  17. Особенности ООП в JavaScript. Объектные литералы. Варианты создания объектов.
  18. Создание объектов в JavaScript с помощью фабричной функции. Паттерн "Модуль".
  19. Прототипы объектов в JavaScript. Создание объектов с помощью механизма прототипов.
  20. Создание объектов в JavaScript с помощью оператора new.
  21. Синтаксис классов в JavaScript. Создание объектов.
  22. Синтаксис классов в JavaScript. Геттеры и сеттеры, приватные свойства, наследование, перекрытие методов.
  23. ClassExpressions в JavaScript. Примеси для классов.
  24. Контекст выполнения функций и значение this в JavaScript.
  25. Потеря значения this в функциях JavaScript. this в стрелочных функциях.
  26. Компонентный подход к программированию, бинарные объекты. Языки сценариев для работы с компонентами.
  27. Внутренние объекты в операционной системе Windows. COM-объекты, WMI.
  28. Доступ к внешним объектам из сценариев Windows Script Host.
  29. Возможности и особенности командной оболочки PowerShell. Связь PowerShell с .NET Framework.
  30. Работа с объектами с помощью конвейеров в PowerShell.

Литература к курсу

  1. Зандстра М. "РНР: объекты, шаблоны и методики программирования", 4-е изд. ООО "И.Д. Вильяме", 2015. - 576 с.
  2. Фримен Э., Фримен Э., Сьерра К., Бейтс Б. "Паттерны проектирования" — СПб.: Питер, 2011. — 656 с.
  3. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. "Приемы объектно-ориентированного проектирования. Паттерны проектирования". – СПб.: Питер, 2016. – 368 с.
  4. Вайсфельд М. "Объектно-ориентированное мышление". – СПб.: Питер, 2014. – 304 с.
  5. Мартин Р. "Чистый код: создание, анализ и рефакторинг. Библиотека программиста". – СПб.: Питер, 2013. – 464 с.
  6. Блинов И.Н., Романчик В.С. "Java. Методы программирования : уч.-мет. пособие". – Минск : издательство «Четыре четверти», 2013. — 896 с.

Презентации и примеры к лекциям

Примеры: https://github.com/andpop/oop-examples

  1. Объектно-ориентированное программирование. Предыстория.
  2. Базовые понятия ООП. Классы, объекты, инкапсуляция, наследование, полиморфизм. Статические свойства и методы, интерфейсы, трейты, пространства имен.
  3. Разновидности объектов. Отношения между классами и объектами. Наследование, композиция, агрегация. Диаграммы UML.
  4. Итераторы и генераторы.
  5. Принципы SOLID построения кода в ООП.
  6. Паттерны (шаблоны) проектирования.
  7. Компонентный подход к программированию. Объекты-компоненты в операционной системе Windows.
  8. Работа с объектами с помощью Microsoft PowerShell.

Видео лекций

Лабораторные работы

Тематика заданий
  1. ООП на классах. Основные понятия классического подхода к ООП на примере языка PHP.
  2. ООП на прототипах. Особенности реализации ООП в языке JavaScript.
  3. Конвейерная обработка объектов. На примере языка программирования PowerShell.
Отчетность по заданиям

Статистика группы 402

  • Полное выполнение задания к контрольному сроку - 100% баллов за это задание.
  • Задержка с выполнением задания на срок до 14 дней - 80% баллов за это задание.
  • Задержка с выполнением задания на срок более 14 дней - 50% баллов за это задание.