- •1. Краткая характеристика предметной области
- •2. Создание диаграммы прецедентов
- •3. Создание диаграммы последовательности
- •4. Создание диаграммы сотрудничества
- •5. Создание диаграммы классов
- •6. Добавление деталей к описаниям операций и определение атрибутов классов. Добавление связей между классами
- •7. Создание диаграммы состояний для классов и диаграммы компонентов
- •8. Создание диаграммы размещения
6. Добавление деталей к описаниям операций и определение атрибутов классов. Добавление связей между классами
Для последующего правильного отображения на диаграмме классов всей необходимой информации по операциям и атрибутам необходимо произвести настройку диаграмм. Алгоритм выполнения настройки:
В меню модели выбрать пункт Tools > Options.
Перейти на вкладку Diagram.
Убедиться, что переключатель Show Visibility отмечен.
Убедиться, что переключатель Show Stereotypes отмечен.
Убедиться, что переключатель Show Operation Signatures отмечен.
Убедиться, что переключатели Show All Attributes и Show All Operations отмечены.
Убедиться, что переключатели Suppress Attributes и Suppress Operations не отмечены.
Перейти на вкладку Notation.
Убедиться, что переключатель Visibility as Icons не отмечен.
Добавим к каждому классу атрибуты и операции. Откроем окно спецификации отдельного класса, нажав правой кнопкой мыши по классу на диаграмме и затем Open Specification (Рисунок 6.1).
Перейдем на вкладку Operations, правой кнопкой по полю, затем Insert. Вводим имя новой операции в поле Name, а также задаем ее тип в поле Return type (рисунок 6.2). Далее, переходим на вкладку Attributes, правой кнопкой по полю, затем Insert. Задаем имя атрибута и его тип, в нашем случае String – строковый (рисунок 6.3).
Рисунок 6.1 - Окно спецификации класса «Account»
Рисунок 6.2 - Окно спецификации операции
Рисунок 6.3 - Окно спецификации атрибута «Фамилия»
Выполняя аналогичные операции, заполним классы «RegInfo» и «DataBase».
В таблице 6.1 представлено описание каждого класса диаграммы.
Таблица 6.1 – Описание классов разрабатываемой информационной подсистемы
Класс «Account» | |
Параметр |
Значение |
Атрибуты |
Фамилия: String – фамилия студента Имя: String – имя студента Отчество: String – отчество студента |
Операции |
EnterSystem() – позволяет войти в систему ExitSystem() – позволяет выйти из системы SearchStudent() – осуществляет поиск студента в списке |
Класс «RegInfo» | |
Атрибуты |
FIO: String – ФИО студента CardNumber: String – номер зачетной книжки Subject: String – название дисциплины Attestation: String – аттестация студента Admission: String – допуск к экзаменам/зачетам Exam: String – оценка по экзамену/зачет |
Операции |
EnterFIO() – получает от пользователя ФИО студента EnterCardNumber () – получает номер зачетной книжки студента EnterSubject () – сохраняет название дисциплины EnterAttestation () – получает от пользователя информацию об аттестации студента EnterAdmission () – получает от пользователя информацию о допуске студента EnterExam () – получает от пользователя информацию об оценках студента по экзамену Update() – изменяет записи в полях SendToDB() – отправляет запрос в базу данных |
Класс «Database» | |
Атрибуты |
DBName: String – имя базы данных DBServerName: String – имя сервера базы данных DBPassword: String – пароль к базе данных |
Операции |
Connect() – получает доступ к базе данных Disconnect() – разрывает связь с базой данных GetRecord() – получить запись из базы данных CheckRecord() – найти запись в базе данных UpdateRecord() – сохранить данные SendData() – отправить ответ на запрос |
После того как классы полностью созданы, необходимо установить между ними отношения:
а) связь между классами «Account» и «RegInfo» - ассоциативная, т.к. один класс вызывает метод другого, здесь другой тип связи неуместен. Аккаунтов может быть много, т.к. много студентов, а учетная система всего лишь одна, поэтому кратность связи со стороны класса «Account» - 1..n, а со стороны «RegInfo» - 1;
б) связь между классами «RegInfo» и «DataBase» - ассоциативная, т.к. один класс вызывает метод другого, здесь другой тип связи неуместен. И учетная система со стандартными полями одна, также и база данных одна. Следовательно, кратность связи со стороны обоих классов – 1;
в) связь между классами «Account» и «DataBase» - ассоциативная, т.к. один класс вызывает метод другого, здесь другой тип связи неуместен. Аккаунтов может быть много, т.к. много студентов, а база данных одна. Следовательно, кратность связи со стороны класса «Account» - 1..n, а со стороны «DataBase» - 1.
Процесс связывания классов отношениями аналогичен процессу связывания объектов на диаграмме состояний, или диаграмме последовательности. Для начала необходимо выбрать тип отношения, выберем «Unidirectional Association», зажмем левую кнопку мыши на классе «Account» и протянем связь к классу «RegInfo». Теперь необходимо установить кратность связей. Для этого открываем спецификацию связи двойным щелчком на связи, представленную на рисунке 6.4.
Переходим на вкладку «Role A Detail» и в поле «Multiplicity» выбираем цифру один. На вкладке «Role B Detail» в поле «Multiplicity» выбираем «1..n».
Рисунок 6.4 – Окно спецификации связи между классами
Аналогичным образом необходимо установить кратности связей для остальных связей на диаграмме классов.
Законченный вариант диаграммы классов представлен на рисунке 6.5.
Рисунок 6.5 – Диаграмма классов разрабатываемой информационной подсистемы
Выводы
1. Между всеми классами диаграммы установлены отношения ассоциации. В результате выполнения этапов были добавлены атрибуты и операции к трем классам диаграммы классов.
2. Кратность связи между классами «Account – DataBase» - многие-к-одному. Кратность связи между классами «Account – RegInfo» - многие-к-одному. Кратность связи между классами «RegInfo – DataBase» - один-к-одному.