- •Р.А. Файзрахманов, А.В. Архипов
- •ПРОЕКТИРОВАНИЕ АВТОМАТИЗИРОВАННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ НА ОСНОВЕ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПОДХОДА
- •4.3. Подведение итогов
- •4.4. Контрольные вопросы
- •4.5. Контрольные задачи и упражнения
- •5. ДИАГРАММА КЛАССОВ
- •5.1. Теоретическая часть
- •5.2. Реализация в Rational Rose
- •5.5. Контрольные задачи и упражнения
- •6.1. Теоретическая часть
- •6.2. Реализация в Rational Rose
- •6.3. Подведение итогов
- •6.4. Контрольные вопросы
- •6.5. Контрольная задача
- •7. ДИАГРАММА ПОСЛЕДОВАТЕЛЬНОСТЕЙ
- •7.1. Теоретическая часть
- •7.2. Реализация в Rational Rose
- •7.3. Подведение итогов
- •7.4. Контрольные вопросы
- •7.5. Контрольные задачи
- •8. ДИАГРАММА СОТРУДНИЧЕСТВА
- •8.1. Теоретическая часть
- •8.2. Реализация в Rational Rose
- •8.5. Контрольные задачи
- •9. ДИАГРАММА СОСТОЯНИЙ
- •9.1. Теоретическая часть
- •9.3. Подведение итогов
- •9.4. Контрольные вопросы
- •9.5. Контрольные задачи
- •10. ДИАГРАММА ДЕЯТЕЛЬНОСТЕЙ
- •10.1. Теоретическая часть
- •10.3. Подведение итогов
- •10.4. Контрольные вопросы
- •11. ДИАГРАММА КОМПОНЕНТОВ
- •11.1. Теоретическая часть
- •11.4. Контрольные вопросы
- •11.5. Контрольные задачи
- •12.3. Подведение итогов
- •12.4. Контрольные вопросы
- •12.5. Контрольная задача
- •13. ГЕНЕРАЦИЯ КОДА
- •13.1. Алгоритм получения исходного кода C++
- •13.2. Задания для самостоятельного выполнения
- •ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
- •ИСПОЛЬЗОВАНИЕ МОДУЛЯ «RATIONAL ROSE C++ ANALYZER» ДЛЯ ОБРАТНОГО ВОССТАНОВЛЕНИЯ МОДЕЛИ ПО ИСХОДНОМУ КОДУ
- •РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ИСПОЛЬЗОВАНИЕМ UML
- •1. Разработка диаграммы прецедентов
- •2. Разработка диаграммы классов
- •3. Разработка диаграмм взаимодействия
- •4. Разработка диаграммы состояний
- •5. Разработка диаграммы деятельности
- •9. Разработка приложения
- •Контрольные вопросы
- •МОДЕЛЬ РАБОТЫ ПРЕДПРИЯТИЯ ОПТОВОЙ ТОРГОВЛИ. РАЗРАБОТКА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ
- •ОГЛАВЛЕНИЕ
- •1. Деятельность и структура предприятия
- •2.1. Реализация продукции со склада
- •2.2. Возврат товара клиентом
- •2.3. Закупка продукции
- •3.1. Общие требования и принципы построения системы
- •3.2. Обеспечение связи офис - склад
- •3.3. Требования к персоналу
- •4. Диаграмма прецедентов
- •4.1. Реализация продукции со склада
- •5. Диаграмма классов
- •5.2. Контрагенты предприятия оптовой торговли
- •5.3. Продукция предприятия оптовой торговли
- •5.4. Заказ продукции
- •5.5. Накладная на получение товара
- •6. Диаграмма взаимодействия
- •12. Разработка приложения
- •ПРОЕКТИРОВАНИЕ АВТОМАТИЗИРОВАННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ НА ОСНОВЕ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПОДХОДА
5.2. Реализация в Rational Rose
Прежде чем начать построение диаграммы классов, необходимо идентифицировать ключевые абстракции, т.е. определить классы сущностей. Строгой инструкции, которая предписывала бы способы отыскания классов, нет. Источники классов - знание предметной об ласти и требования, предъявляемые к системе. Поскольку процесс проектирования отличается итеративным характером, множество классов системы на протяжении ее жизненного цикла изменяется и пополняется [4].
Исходя из предметной области разрабатываемой системы, сразу можно выделить следующие классы сущностей: «Пользователь», «Преподаватель», «Студент», «Сотрудник деканата», «Дисциплина»
и«Предложение дисциплины».
Всистеме Rational Rose диаграмма классов является основой для генерации кода программы, поэтому названия классов, атрибутов, операций необходимо вводить на английском языке (в противном случае при генерации кода символы кириллицы будут заменены восьмеричным кодом).
Втабл. 5.1 представлены соответствующие английские названия вышеперечисленных классов.
|
Т аблица 5.1 |
Название класса в Rational Rose |
Расшифровка |
SysUser |
Пользователь системы |
Teacher |
Преподаватель |
Student |
Студент |
DeaneryEmployee |
Сотрудник деканата |
Discipline |
Дисциплина |
DisciplineOffer |
Предложение дисциплины |
Создадим классы, представленные в таблице. Для этого в окне браузера выделим элемент «Logical View», вызовем контекстное ме ню и выберем пункт «New», а затем «Class». В результате этого будет создан новый класс. Назовем его «SysUser». Так как этот и все пере численные в таблице классы являются классами сущностей, то сразу укажем соответствующий стереотип для созданного класса, открыв окно спецификации класса и выбрав стереотип «entity» (рис. 5.11).
«getOffers». Вызовем контекстное меню класса «DisciplineOffer»
и выберем пункт «New» > «Operation». Введем название «getOffers» для нового элемента. Двойным щелчком на элементе-операции от кроем окно спецификации и задокументируем данную операцию, введя в поле «Documentation» ее назначение из табл. 5.2. Аналогич ным образом создадим оставшиеся операции из табл. 5.2. В результа те получим класс «DisciplineOffer», представленный на рис. 5.18.
|
Т аблица 5.2 |
|
Название операции |
Назначение операции |
|
в Rational Rose |
||
|
||
getOffers() |
Получить список всех существующих предложений |
|
addTeacher() |
Назначить преподавателя |
|
removeTeacher() |
Снять преподавателя |
|
addStudent() |
Добавить студента |
|
removeStudent() |
Снять студента |
|
getStudentsQuantityO |
Получить список студентов по предложению |
|
save() |
Сохранить предложение |
|
close() |
Закрыть предложение |
|
cancel() |
Отменить предложение |
|
isOpen() |
Проверить, действительно ли еще предложение |
<<entity>>
DisciplineOffer
^>ID Integer ^studentsQuantity Integer ^studyYear Integer l%term Integer
^ d a y s Enum G|?startTime Time ^endT im e Time
^getOffersO
^addTeacherO
^removeTeacherO
^addStudentO *re moveStudentO
*saveO ^closeO
^cancelO
^isOpenO
Рис. 5.18. Класс «DisciplineOffer»
множественности. Для этого в окне диаграммы классов, дважды щелкнув на линии связи, открываем диалоговое окно спецификации «Association Specification». В этом окне переходим на закладку «Role A Detail» (или «Role В Detail»), соответствующую одной из двух ро лей связи (А или В), и в поле «Multiplicity» вводим требуемое значе ние признака множественности. В результате этого получаем диа грамму классов, представленную на рис. 5.20.
До сих пор мы рассматривали только классы сущностей. Теперь рассмотрим граничные классы и классы управления. Граничные классы и классы управления идентифицируются, как правило, при реализации сценариев соответствующих прецедентов.
В качестве примера рассмотрим сценарий «Внесение предложения дисциплины». Согласно этому сценарию преподаватель выбирает предмет, который он желал бы читать в течение семестра. Этот сцена рий является частным потоком событий, представленным в специфи кации прецедента «Выбор дисциплин преподавателем» (см. табл. 4.1). Соответствующая диаграмма представлена на рис. 4.16.
Создадим граничные классы. Напомним, что таковыми являются классы, представляющие собой «посредников» при взаимодействии актера с системой.
С прецедентом «Выбор дисциплин преподавателем» взаимодей ствует только один актер - «Преподаватель». В общем случае препо даватель может не только вносить новые предложения, но и просмат ривать, печатать, редактировать и удалять предложения, внесенные ранее. Система должна содержать некоторые средства, с помощью которых актер мог бы осуществить задуманное. С этой целью созда ем класс «ChoosingDisciplineOption» (опция выбора дисциплины). Рассматриваемый сценарий предполагает наличие одной опции - «внесение предложения дисциплины». Эта опция будет являться под классом класса «ChoosingDisciplineOption», назовем подкласс «AddingOffer».
Для обслуживания потока событий, происходящих в процессе выполнения прецедента «Выбор дисциплин преподавателем», созда дим один класс управления и назовем его «DisciplineOfferControl» (контроль предложения курса).
Создадим вышеперечисленные классы, указав для классов границ стереотип «boundary», а для класса управления стереотип «control». Да лее создаем дополнительную диаграмму классов «AddingOfferDgm», на