Объектно-ориентированный анализ и дизайн Copyright © Мухортов В. В., Няньчук-Татарский Н. А., 2001-2004 Copyright © ООО «Интекс», 2003-2004 Классы Class – набор объектов с общей структурой и поведением Interface – базовый класс, задающий только поведение, имеет стереотип <<interface>> Abstract class – базовый класс, не имеющий экземпляров Parameterized class – параметризованный класс, шаблон Instantiated class – депараметризованный шаблон Примеры классов Атрибуты классов Attribute – атрибут (поле) Class attribute – атрибут класса (static) Derived attribute – производный (вычислимый) атрибут Export control – доступ (public, protected, private) Containment – способ включения (value, reference) Syntax: <role_name>:<class_name><=default_value> Атрибуты классов name, birth_date – аттрибуты age – производный аттрибут (вычисляется через birth_date) Атрибуты классов name, birth_date и age - атрибуты класса Методы(операции) Method (operation) – метод Class method – метод класса (static) Export control – public, protected, private Syntax: <stereotype> name(<parameters>) : <return type> Parameter: parameter_name : type Диаграмма классов - определяет типы объектов системы и статические связи между ними Отношения между классами Зависимость Ассоциация Агрегация (отношение часть-целое) Композиция (отношение часть-целое c контролем жизненного цикла) Генерализация (наследование) Реализация (выполнение контракта) Ассоциация (Association) Ассоциация - отношение взаимодействия Обладает 2-мя ролями Роль обладает множественностью (1, n, *, 0..n, 1..n, 1..*) Пример: сотрудник может занимать несколько должностей, на одной должности находится не более одного сотрудника Position +position 1..n +person 0..1 Employee Ассоциация Ассоциация может иметь выделенное направление Должность связана базовым тарифом оплаты Тариф оплаты никак не связан с конкретной должностью -rate Position BasicRate 1 Агрегация (Aggregation) Агрегация – отношение часть-целое Композиция (Composition) Композиция – частный случай агрегации Жизненный цикл частей и целого совпадают Отделы не существуют без компании Часть принадлежит только одному целому +company +departments Company Department 1 0..* Зависимость (Dependency) Генерализация (Generalization) Генерализация (наследование, обобщение) – отношение частное-общее Реализация (Realization) Реализация – отношение выполнения соглашения Треугольник и квадрат реализуют алгоритм вращения, специфицированный абстрактной сущностью «Фигура» Диаграммы пакетов Package – пакет. Общий механизм организации элементов модели в группы Имеет имя Определяет пространство имен Может быть импортирован другим пакетом package1 package2 Диаграмма пакетов service <<Interface>> <<Interface>> Service ResultSet (f rom serv ice) (f rom serv ice) local (from service) server (from service) agent (from service) Диаграмма пакетов service agent (from service) server (from service) local (from service) пакет: service пакет: service::local пакет: service::server пакет: service::agent стереотипы пакетов system – вся система subsystem – подсистема facade – представление другого пакета Например, пакет внешних интерфейсов подсистемы framework – набор шаблонов stub – заместитель другого пакета Созданный, например, для тестирования Диаграммы взаимодействия Последовательностей - Sequence diagrams Коопераций (Коллабораций) - Collaboration diagrams • Отражают динамические аспекты поведения объектов • Семантически эквивалентны • Содержат: • Объекты • Связи • Сообщения • Потоки данных Диаграмма последовательностей : Application do( ) : ServiceAgent : ServiceServer : Service : ResultSet "initiate do request" "check authorization" do( ) "create" addData(String) "return results" Диаграмма коопераций 1: do( ) : Application : ServiceAgent 2: "initiate do request" 7: "return results" : ServiceServer 3: "check authorization" : ResultSet : Service 5: "create" 6: * addData(String) 4: do() Цели фазы анализа и дизайна Задачи: • Трансформировать требования собранные на предыдущем этапе в дизайн системы • Проработать архитектуру системы • Адаптировать дизайн к среде исполнения Модели: • Аналитическая модель (Analysis model) • Design model Аналитическая модель Абстрактная модель системы, описывающая ее в терминах use-case realization. Язык реализации классов не фиксируется. Обычно не сопровождается. Элементы analysis model: • Use-case realization – реализация use-case, набор activity, state, collaboration и class диаграмм • Boundary class – класс, разграничивающий actor-ов и систему • Control – класс, управляющий другими классами • Entity – класс, моделирующий информацию, используемую в системе Boundary class -Класс, разграничивающий (под-)систему и окружение. UML: class со стереотипом <<boundary>> Примеры: классы пользовательского интерфейса, классы интерфейсов систем и устройств <<boundary>> ContractViewer ContractViewer ContractViewer 3 представления boundary class в Rational Rose Control -Класс, управляющий другими классами. Можно сказать, что control “исполняет” use-case UML: class со стереотипом <<control>> <<control>> ContractsRegistry ContractsRegistry ContractsRegistry 3 представления control class в Rational Rose Entity -Класс, моделирующий информацию, используемую в системе UML: class со стереотипом <<entity>> <<entity>> Contract Contract Contract 3 представления entity class в Rational Rose Проверка контрактов проверка контрактов <<realize>> (f rom Use-case model) Class Diagram: Collaboration Diagram: проверка контрактов Диаграмма классов entity EstimationSystem Contract boundary * ContractViewer Director (f rom Use-case model) control ContractsRegistry Заключение контракта заключение контракта (f rom Use-case model) <<realize>> Collaboration Diagram: заключение контракта Class Diagram: Диаграмма классов ContractsRegistry (f rom Analy sis) * Contract ContractManagementSystem (f rom Analy sis) (f rom Analy sis) EstimationSystem (f rom Analy sis) Диаграмма взаимодействия : NewContractsRegistry 1: getNewContract( ) 4: remove( ) 3: register( ) : ContractsRegistry : ContractManagementSystem 2: estimate( ) : EstimationSystem Ограничения на связи From\To (navigability) Boundary Boundary Entity Control communicate communicate subscribe communicate communicate subscribe Entity Control communicate communicate subscribe communicate