Группировка классов в пакеты

МИНОБРНАУКИ РОССИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ ИМ. Р.Е. АЛЕКСЕЕВА»

Кафедра: «Графические информационные системы»

Лабораторная работа №2

по дисциплине
«Проектирование информационных систем в дизайне»

ИС «Университет»

Выполнила: Изосова С.Е.

Группа 12-ИТ

Проверил: Райкин Л.И.

г. Нижний Новгород

2015 г.

1. Цель работы

Получить навыки построения диаграмм классов, создания пакетов и группировки классов в пакеты в среде визуального объектно-ориентированного моделирования систем IBM Rational Rose Enterprise.

2. Создание диаграммы вариантов

Предметной областью разработки системы является «Университет» со следуюей ER-диаграммой:

Вариант №2
Предметная область: Университет
ER-диаграмма к лабораторной работе №2 Группировка классов в пакеты - student2.ru Примечание: Циклы дисциплин: гуманитарный, общеинженерный, математический, компьютерный и т.д.

Создание диаграммы классов для сценария "Добавить новую лекцию" прецедента "Управление информацией о лекции"

Диаграммы классов будем рассматривать с концептуальной точки зрения. Для упрощения задачи и чтобы не загромождать диаграммы несущественными деталями методы setX, getX для каждого атрибута Х классов задавать не будем.

Создадим в Логическом представлении браузера новую диаграмму классов и назовем ее "Добавить новую лекцию". В поле документации запишем для нее следующий текст: "Диаграмма классов для сценария" Добавить новую лекцию " прецедента " Управление информацией о лекции".

Заполнение диаграммы начнем с определения классов-сущностей. Рассматриваемый сценарий состоит из:

- Самой лекции;

- Дисциплины, которой принадлежит лекция;

- Преподавателя, который ведет лекцию.

Создадим классы-сущности Лекция, Дисциплина и Преподаватель. Опишем каждый класс.

Таблица 1

Класс Lecture

Параметр Значение
Комментарий Класс, представляющий собой лекцию
Атрибуты name: String-наименование лекции data : String – Дата проведения лекции aud : String – Аудитория, в которой будет проходить лекция time : String – Время проведения лекции group : String – Группа, для которой проводится лекция Все атрибуты имеют модификатор доступа – public
Операции Create() – Создать лекцию RemoveLek() - Удаление лекции GetInfo() – Получить информацию о лекции SetInfo() – Внести информацию о лекции Copy() – Копировать лекцию Все операции имеют модификатор доступа - private


Таблица 2

Класс Discipline

Параметр Значение
Комментарий Класс, представляющий собой дисциплину
Атрибуты name: String-наименование дисциплины code : String – Код лекции cycle : String – Цикл дисциплин, к которому относиться дисциплина numhours : Integer – Количество часов дисциплины Все атрибуты имеют модификатор доступа – private
Операции Create() – Создать дисциплину RemoveDis() - Удаление дисциплины GetInfo() – Получить информацию о дисциплине SetInfo() – Внести информацию о дисциплине Все операции имеют модификатор доступа - private

Таблица 3

Класс Teacher

Параметр Значение
Комментарий Класс, представляющий собой преподавателя
Атрибуты name: String-Имя преподавателя lastname: String – Фамилия преподавателя soname: String – Отчество преподавателя post : String – Должность преподавателя Departament : String – Кафедра, на которой числится преподаватель sciensedegree : String – Ученая степень преподавателя Все атрибуты имеют модификатор доступа – private
Операции Add() – Добавить нового преподавателя RemoveTeacher() - Удаление клиента GetInfo() – Получить информацию о клиенте SetInfo() – Внести информацию о клиенте Все операции имеют модификатор доступа - private

Результат создания классов-сущностей показан на рис.1

Группировка классов в пакеты - student2.ru

Рис. 1

Добавим отношения между классами (рис. 2):

- - класс Teacher и Discipline – отношение ассоциации, поскольку данные два класса просто связаны друг с другом и никакие другие типы связей здесь применить нельзя. Один преподаватель может преподавать несколько дисциплин, каждую дисциплину может преподавать несколько преподавателей, поэтому кратность связи со стороны класса Teacher и Discipline – 1…n;

- класс Discipline и Lecture - отношение композиции, поскольку лекция является частью дисциплины, и без неё существовать не может. К одной дисциплине относиться несколько лекций, в то время как лекция может принадлежать только одной дисциплине, поэтому кратность связи со стороны Discipline - 1, со стороны Lecture - 1..n;

Группировка классов в пакеты - student2.ru

Рис. 2

Добавим теперь на диаграмму граничные (стереотип boundary) и управляющие (стереотип control) классы (рис. 3). Рассматриваемый сценарий - это только одно из действий, которые обеспечивает прецедент "Добавить лекцию". Прецедент также позволяет просмотреть, отредактировать или удалить лекцию. Это означает, что необходимо предусмотреть механизм, который позволяет выбирать необходимое действие. Создадим для этого граничный класс LectureOptions (Параметры работы с лекцией) с комментарием "Класс, обеспечивающий механизм работы с лекциями". Также создадим граничный класс AddNewLecture (Добавление новой лекции), который будет служить для добавления новой лекции (комментарий - "Класс служит для добавления новой лекции"). Отношение между этими классами - агрегация, поскольку в данном случае класс AddNewLecture рассматривается как часть класса LectureOptions, частями которого также будут классы для просмотра, редактирования и удаления заказов. Кратность связи 1 к 1, поскольку в состав класса LectureOptions входит только один класс AddNewLecture.

Перейдем теперь к управляющим классам. Добавим управляющий класс ColleagueEducDep (Сотрудник учебного отдела) с комментарием "Управляющий класс для обработки потока событий прецедента "Добавить новую лекцию", который будет обеспечивать обработку потока событий для рассматриваемого прецедента. Данный класс будет связан с классами AddNewLecture и Lecture. Отношение между классами AddNewLecture и ColleagueEducDep - однонаправленная ассоциация с кратностью связи 1 к 1, поскольку один экземпляр класса AddNewLecture взаимодействует только с одним экземпляром класса ColleagueEducDep. Отношение между классами ColleagueEducDep и Lecture - однонаправленная ассоциация с кратностью связи 1 к 1..n, поскольку один класс ColleagueEducDep может взаимодействовать с несколькими классами Lecture.

Окончательный вариант диаграммы классов показан на рис. 3:

Группировка классов в пакеты - student2.ru

Рис. 3

Создание пакетов

Пакеты предназначены для группировки элементов в группы по определенным критериям. В простейшем случае классы можно группировать по их стереотипам. Создадим три пакета: Entities (классы-сущности), Boundaries (граничные классы) и Control (управляющие классы). Для этого необходимо щелкнуть правой кнопкой мыши на Logical View (Логическое представление) браузера, в появившемся контекстном меню выбрать пункт New > Package (Создать > Пакет), и ввести имя пакета. Результат создания пакетов показан на рис.4:

Группировка классов в пакеты - student2.ru

Рис. 4

В поле документации (Documentation) для каждого пакета зададим комментарий:

- для пакета Boundaries комментарий: пакет содержит граничные классы;

- для пакета Control комментарий: пакет содержит управляющие классы;

- для пакета Entities комментарий: пакет содержит классы-сущности.

Группировка классов в пакеты

Группировка классов в пакеты осуществляется путем перетаскивания в Логическом представлении браузера соответствующего класса в соответствующий пакет. Группировать созданные классы будем следующим образом:

- классы Teacher, Lecture, Discipline перенесем в пакет Entities;

- классы LectureOptions и AddNewLecture перенесем в пакет Boundary;

- класс ColleagueEducDep перенесем в пакет Control.

Итоговой результат приведен на рис. 5

Группировка классов в пакеты - student2.ru

Рис. 5

Наши рекомендации