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

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

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

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


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

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

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

Видео лекций

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

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

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

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