Содержание
- 2. Принцип разделения ответственностей (напоминание) Разделение ответственности (separation of concerns, SoC) – программа должны состоять из функциональных
- 3. Связь с требованиями Функциональность программы проистекает из требований к ней. Требования бывают: (разделение по сути требований)
- 4. Виды ответственностей Core concerns (ответственности 1-го класса) – бизнес-логика приложения, следует непосредственно из функциональных требований Cross-cutting
- 5. Роль ООП (как методологии) в разработке ПО Функциональные требования Модель предметной области Концептуальная модель системы Архитектура
- 6. ООП + CCC Предметная область Функциональные требования Модель предметной области Концептуальная модель системы Архитектура Программный код
- 7. Нефункциональные требования Платформа («железо», ОС, языки, библиотеки) Производительность (performance) Масштабируемость (scalability) Распределение по физическим узлам Простота
- 8. Cross-cutting concerns Инициализация, конфигурация Управление жизненным циклом объектов Оптимизация (в т.ч. кэширование) Персистентность Журналирование Транзакции Многопоточность
- 9. Ограничения распространенных парадигм (или их общепринятых реализаций) Структурное программирование: процедура не может быть разделена на взаимно-независимые
- 10. Способы борьбы с CCC Композиция разных парадигм Расширенные объектные модели интроспекция вспомогательные методы динамические модели Meta-Object
- 11. Аспектно-ориентированное программирование Как парадигма программирования: Расщепление классов Расщепление методов «Контекстный полиморфизм» Как методология: архитектура строится в
- 12. Hollywood principle Don’t call us, we’ll call you
- 13. Цикл обработки сообщений WinAPI /* Так начиналось 99% программ образца 90х под Windows. Подсветка синтаксиса оригинала
- 14. Инверсия управления (Inversion of Control, IoC, Hollywood Principle) Задача: использовать альтернативный механизм запуска и/или исполнения приложения
- 15. Понятие framework Framework вводит новые или изменяет существующие механизмы абстрагирования. В частности, практически любая реализация IoC
- 16. IoC и жизненный цикл объекта Garbage Collector: вместо явного уничтожения объект «забывается» и далее обрабатывается некоторой
- 17. Инициализация зависимостей без применения Dependency Injection public interface ITool{ …} public class Fork implements ITool{ …
- 18. Тривиальный Dependency Injection (DI) на основе конструктора //constructor-based DI class public class Person2{ ITool tool; //требуем
- 19. Преимущества DI Агрегирующие классы (т.е. те, для которых работает DI) не обязаны зависеть от конкретных классов
- 20. Проблемы с тривиальным DI DI реализует «божественная» сущность, зависящая от всей системы Явно позволяет реализовать только
- 21. DI на основе контейнера Контейнер (сущность, реализующая IoC) универсален и не зависит от конкретных классов реализации.
- 23. Скачать презентацию