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