Объектно-ориентированный дизайн Copyright © Мухортов В. В., Няньчук-Татарский Н. А., Copyright © ООО «Интекс»,
Цели объектно- ориентированного дизайна Адаптировать принципиальную модель системы (аналитическую модель) к конкретным языкам и технологиям, выбранным для реализации системы. Завершить проработку архитектуры системы Обеспечить: расширяемость системы (extensibility) Легкость поддержки системы в дальнейшем (maintainability) создание переиспользуемых компонент (reusability)
Design model М одель реализации системы. Создается на основе аналитической модели. Фиксирует язык реализации классов и используемые API. Сопровождается до конца разработки. Элементы design model: Layer - слой (application, business, middle, system) Subsystem - подсистема Package - пакет Class – класс Use-case realization - коллаборация
Переход от анализа к дизайну Аналитический класс при переходе к дизайну трансформируется в один или несколько классов дизайна, которые реализуются на каком-либо конкретном языке программирования
Подсистема (subsystem) Реализует некоторую группу функциональности. Например: подсистема работы с почтой, подсистема работы с контактами. Как правило отделена от системы одним или несколькими интерфейсами, поэтому может переиспользоваться в нескольких системах. Может находиться на нескольких уровнях системы
Переход от анализа к дизайну - boundary Один или несколько классов пользовательского интерфейса Интерфейс к внешней системе/для внешней системы
Переход от анализа к дизайну - control Некоторая подсистема, отделенная своим интерфейсом. Иногда пакет в составе подсистемы или класс.
Переход от анализа к дизайну - entity Объект данных, специфичный для предметной области Персистентный (хранимый) объект
Расщепление entity
Дизайн пакетов Пакет – группа тесно связанных классов. Пакеты должны создаваться таким образом, чтобы при использовании одного класса пакета использовался весь пакет.
Использование интерфейсов Интерфейсы определяют набор поведения (сервис, протокол), но не определяют реализации. Следовательно использование интерфейсов увеличивает инкапсуляцию. Интерфейс, разделяющий две подсистемы, позволяет независимо модифицировать их.