- •Вступление
- •Задачи курса.
- •Описание пособия
- •Тема 1. Основные принципы объектно-ориентированного проектирования. История развития языка uml. Программный продуктRationRose. Процедурно-ориентированная методология
- •Объектно-ориентированная методология
- •Особенности унифицированного языка моделирования (uml)
- •Основные диаграммы языка uml:
- •Программный продукт RationalRose
- •Основные возможности RationalRose:
- •Вопросы:
- •Тема 2 Диаграмма прецедентов (Use Case Diagram) Назначение диаграммы прецедентов
- •Основные элементы диаграммы
- •Типы отношений на диаграмме прецедентов
- •Вопросы:
- •Тема 3. Диаграмма последовательности (SequenceDiagram)
- •Вопросы:
- •Тема 4. Диаграмма классов (ClassDiagram) Основные понятия
- •Типы отношений на диаграмме классов
- •Выявление классов (одна из основных задач проектирования системы- определить классы и отношения между ними)
- •Вопросы
- •Тема 5. Диаграмма кооперации (Collaboration Diagram)
- •Вопросы:
- •Тема 6. Диаграмма состояний (Statechart Diagram)
- •Рассмотрим примеры:
- •Спецификация состояний
- •Переход (transition) из одного состоянияв другое (из предыдущего в последующее)
- •Вопросы:
- •Тема 7. Диаграмма компонентов (Component Diagram) Основные понятия
- •Типы компонентов
- •Подготовка к генерации программного кода:
- •Проверка модели на корректность
- •Установка свойств генерации кода
- •Генерация программного кода
- •Полиморфизм
- •Инкапсуляция
- •Абстрагирование
- •Отношение агрегации и композиции
- •Задания для знакомства с RationRose. Создание пакетов.
- •Задача для лабораторных работ
- •Лабораторная работа № 2. Создание диаграммы прецедентов.
- •Этапы выполнения работы Создать основных Прецедентов и Актёров
- •Добавить ассоциации
- •Создать уточняющих прецедентов и актёров
- •Указать абстрактных актёров
- •Указать связи обобщения между актёрами
- •Добавить связи расширения, включения, ассоциации
- •Добавить интерфейсы
- •Прикрепление файла с документацией к прецеденту
- •Лабораторная работа № 3. Создание диаграмм последовательностей
- •Этапы выполнения работы Настройка
- •Создание диаграммы последовательности
- •Добавление на диаграмму актёровиобъектов
- •Добавление сообщенийна диаграмму
- •Добавление на диаграмму примечаний(нотаций).
- •Добавление нового объектаисообщений
- •Указание типов сообщений
- •Построенная диаграмма должна выглядеть как на рис. 3l.2.
- •Лабораторная работа № 4. Диаграмма классов.
- •Этапы выполнения работы Настройка
- •Создание пакетов
- •Создание Главной диаграммы классов
- •Создание диаграммы классов для сервиса (прецедента) «Наполнить виртуальную корзину»
- •Добавление стереотипов к классам
- •Объединение классов в пакеты
- •Соотнесение объектов с классами
- •Добавление атрибутов и методов для классов
- •Структурирование классов
- •Лабораторная работа № 5. Определение связей между классами.
- •Добавление связей обобщения
- •Построение недостающих связей (с указанием свойств)
- •Построение связей между пакетами
- •Построение диаграммы кооперации
- •Лабораторная работа № 6.Создание диаграмм компонентов. Генерация программного кода. Проверка построенной модели
- •Этапы создания диаграммы компонентов Создание пакетов компонентов
- •Добавление пакетов и связей на Главную диаграмму компонентов
- •Добавление компонентов к пакетам и рисование зависимостей
- •Создание диаграммы компонентов для сервиса «наполнить виртуальную корзину»
- •Размещение компонентов на диаграмме компонентов «наполнить виртуальную корзину»
- •Соотнесение классов с компонентами
- •Добавление зависимостейна диаграмму компонентовTo_fill_Virtual_Basket
- •Ввод тел пакетов на диаграмму Компонентов To_fill_Virtual_Basket
- •Заключение
- •Новые термины
- •Источники
Типы компонентов
Существует несколько классификаций для компонентов. В качестве примера приведем несколько типов компонентов.
Спецификация и тело подпрограммы (Subprogram Specification and Body). Обычно подпрограмма не содержит определений класса. Спецификация подпрограммы – это, как правило, файл, включающий описание различных процедур и функция, а тело подпрограммы – включает программную реализацию указанных в спецификации процедур и функций на каком-то языке программирования (процедурном) (см. рис. 7.1).
Главная программа (main program). Как правило, этот компонент соответствует файлу, который является корневым (содержит корень программы). Например, если разрабатывается проект web-сайта, тогда корневым файлом является файл index.htm (см. рис. 7.2).
| |
Рис. 7.1. Пример представления компонента типа спецификация программы и компонента типа тело подпрограммы. |
Рис. 7.2. Пример представления компонента типа главная программа. |
Подготовка к генерации программного кода:
Процесс генерации программного кода включает несколько этапов:
Проверка модели на корректность.
Создание диаграммы компонентов, указание для каждого компонента языка реализации программного кода.
Соотнесение построенных классов с компонентами.
Установка свойств генерации.
Генерация программного кода, для выбранного класса, компонента или пакета.
В зависимости от используемого языка генерации какие-то шаги могут быть опущены или модифицированы. Например, для языка Си++ необязательно создавать компоненты, можно генерировать код класса или пакета.
Проверка модели на корректность
Ration Rose предоставляет разработчику средства для проверки модели на корректность, независимые от языка реализации. Проверку рекомендуется всегда выполнять, хотя данный этап не является необязательным. Для проверки следует выбрать Tools --> Check model. А затем проанализировать найденные ошибки в журнале ошибок.
Существуют связи между классами, принадлежащие разным пакетам, при этом между рассматриваемыми пакетами нет связи зависимости (такие ошибки называют нарушением правил доступа). Чтобы обнаружить этот тип ошибок следует выполнить: Report --> Show access violations.
Можно (следует) проверить созданную модель на соответствие правилам конкретного языка, для этого выберите tools --> c++ --> check model.
Установка свойств генерации кода
Можно перенастроить некоторые параметры генерации программного кода для атрибутов, методов, компонентов, связей и т.д. Например, одним из свойств генерации программного кода для атрибута класса на языке Си++ является параметр GenerateGetOperation, который определяет - будет ли для этого атрибута создан метод доступа в программном коде класса.
Для каждого языка в среде Ration Rose предусмотрен набор свойств генерации программного кода, перед генерацией рекомендуется их анализировать и вносить изменения. Для этого выберите Tools --> Optionsа затем вкладку языка реализации.
Генерация программного кода
В пункте меню Tools предложено несколько вариантов языков для генерации кода. Чтобы добавить или удалить соответствующие языки следует выбрать вкладку Add-In manager в пункте меню Add-Ins. После выбора класса или компонента на диаграмме выберите в меню соответствующий вариант для генерации кода.
Каждый компонент после кодогенерации реализуется в виде соответствующего файла с заготовкой исходного кода.
Вопросы:
Для каких целей предназначены диаграммы реализации?
Какие существуют классификации типов компонентов?
Какие источники используются для создания и спецификации компонентов, для определения связей между компонентами?
Какими свойствами обладает компонент в Rational Rose?
Какие существуют способы для проверки модели на корректность в Rational Rose? Примеры возможных ошибок.
Лабораторные работы
В первой лабораторной работе предложены задания на знание основных принципов объектно-ориентированного проектирования. Итогом выполнения пяти лабораторных работ (со второй по шестую включительно) является построение готового проекта для программного обеспечения системы «Интернет-магазин». Подробное описание проектируемой системы представлено перед второй лабораторной работой. В седьмой лабораторной работе необходимо самостоятельно разработать модель по индивидуальному заданию.
Лабораторная работа № 1. Принципы объектно-ориентированного проектирования.
Класс - объект
Указать несколько представителей для каждого класса.
Класс |
Представители (ОБЪЕКТЫ) |
Человек |
|
Помещение |
|
Телевизор |
|
Книга |
|
Наследование и свойства класса
1. Указать несколько потомков (3-4) для каждого родителя.
Предок (РОДИТЕЛЬ) |
Потомки |
Прибор |
|
Ученый |
|
Устройство отображения |
|
Растение |
|
2. Указать несколько родителей (2-3) для каждого потомка.
Предки (РОДИТЕЛи) |
Потомок (НАСЛЕДНИК) |
|
Футболист |
|
Геоинформатик |
|
Microsoft Word |
|
Лиса |
Указать необходимые свойства для каждого класса.
Класс |
Свойства | |
Данные (Атрибуты) |
Действия (методы, Операции) | |
Автомобиль |
|
|
Цветок |
|
|
Пульт управления |
|
|
Определить недостающие классы для указанной иерархии наследования (рис. 1).
Указать для каждого класса ДАННЫЕ (АТРИБУТЫ), наследуемые и «свои собственные» (рис. 1).
Рис. 1L.1. Иерархия наследования. |