Материал: Лабораторные_Архитерктура ИС

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
background image

98

выделить

еще

два

состояния

инициализация

  (

до

начала

регистрации

студентов

на

курс

и

отмена

 (

курс

исключается

из

расписания

).

Рис

. 3.26. 

Диаграмма

состояний

для

класса

 CourseOffering

Упражнение

 13. 

Создание

диаграммы

состояний

для

класса

CourseOffering

Для

создания

диаграммы

состояний

:

1

.

Щелкните

правой

кнопкой

мыши

в

браузере

на

нужном

классе

.

2.

В

открывшемся

меню

выберите

пункт

 New > Statechart Diagram.

Чтобы

добавить

состояние

:

1

На

панели

инструментов

нажмите

кнопку

 State

2. 

Щелкните

мышью

на

диаграмме

состояний

в

том

месте

куда

хотите

его

поместить

.

Все

элементы

состояния

можно

добавить

с

помощью

вкладки

 Detail

окна

спецификации

состояния

.

Чтобы

добавить

деятельность

:

1

.

Откройте

окно

спецификации

требуемого

состояния

.

2.

Перейдите

на

вкладку

 Detail.

3.

Щелкните

правой

кнопкой

мыши

на

окне

 Actions.

4.

В

открывшемся

меню

выберите

пункт

 Insert.

5.

Дважды

щелкните

на

новом

действии

.

6.

Введите

действие

в

поле

 Actions.

7.

В

окне

 When 

укажите

 Do, 

чтобы

сделать

новое

действие

деятельностью

.

Initialization

do/ initialize course offering

data

Open

entry/ Register student

exit/ ^CourseRoster.AddStudent(Student)

Closed

do/ Finalize course

Canceled

add student / set count=0 ^CourseRoster.create

add student[ count < 

1

0 ]

cancel

 ^CourseRoster.delete

cancel

[ count = 

1

0 ]

background image

99

Чтобы

добавить

входное

действие

в

окне

 When 

укажите

 On Entry.

Чтобы

добавить

выходное

действие

в

окне

 When 

укажите

 On Exit.

Чтобы

послать

событие

:

1

.

Откройте

окно

спецификации

требуемого

состояния

.

2.

Перейдите

на

вкладку

 Detail.

3.

Щелкните

правой

кнопкой

мыши

на

окне

 Actions.

4.

В

открывшемся

меню

выберите

пункт

 Insert.

5.

Дважды

щелкните

на

новом

действии

.

6.

В

качестве

типа

действия

укажите

 Send Event.

7.

В

соответствующие

поля

введите

событие

 (event), 

аргументы

(arguments) 

и

целевой

объект

 (Target).

Чтобы

добавить

переход

:

1

.

Нажмите

кнопку

 Transition 

панели

инструментов

.

2.

Щелкните

мышью

на

состоянии

откуда

осуществляется

переход

.

3.

Проведите

линию

перехода

до

того

состояния

где

он

завершается

.

Чтобы

добавить

рефлексивный

переход

:

1

.

Нажмите

кнопку

 Transition to Self 

панели

инструментов

.

2.

Щелкните

на

том

состоянии

где

осуществляется

рефлексивный

переход

.

Чтобы

добавить

событие

его

аргументы

ограждающее

условие

и

действие

:

1

.

Дважды

щелкните

на

переходе

чтобы

открыть

окно

его

спецификации

.

2.

Перейдите

на

вкладку

 General.

3.

Введите

событие

в

поле

 Event.

4.

Введите

аргументы

в

поле

 Arguments.

5.

Введите

ограждающее

условие

в

поле

 Condition.

6.

Введите

действие

в

поле

 Action.

Чтобы

отправить

событие

:

1

.

Дважды

щелкните

на

переходе

чтобы

открыть

окно

его

спецификации

.

background image

1

00

2.

Перейдите

на

вкладку

 Detail.

3.

Введите

событие

в

поле

 Send Event.

4.

Введите

аргументы

в

поле

 Send Arguments.

5.

Задайте

цель

в

поле

 Send Target.

Для

указания

начального

или

конечного

состояния

:

1

.

На

панели

инструментов

нажмите

кнопку

 Start State 

или

 End State.

2.

Щелкните

мышью

на

диаграмме

состояний

в

том

месте

куда

хотите

поместить

состояние

.

Уточнение

ассоциаций

некоторые

ассоциации

  (

семантические

,

структурные

устойчивые

связи

по

данным

могут

быть

преобразованы

в

зависимости

  (

неструктурные

временные

связи

отражают

видимость

),

а

агрегации

 – 

в

композиции

.

Рис

. 3.27. 

Пример

преобразования

ассоциаций

и

агрегаций

0..n

+alternateCourses

0..2

+primaryCourses

0..4

0..

1

boolean

11

+ submitSchedule()
+ saveSchedule()
+ getCourseOfferings() : CourseOfferingList
+ getCurrentSchedule(forStudent : Student, forSemester :
   Semester) : Schedule
+ deleteCurrentSchedule()
<<class>> + new(forStudent : string)
+ getStudent(withID : string) : Student

<<control>>

RegistrationController

(from Registration)

0..

1

+registrant

0..

1

<<entity>>

Student

(from University Artifacts)

<<entity>>

CourseOffering

(from University

Artifacts)

0..n

0..n

<<entity>>

Schedule

(from University

Artifacts)

<<Interface>>

ICourseCatalogSystem

(from External System

Interfaces)

0..

1

+currentSchedule

+ getTuition() : double
+ addSchedule(theSchedule : Schedule)
+ getSchedule(forSemester: Semester) : Schedule
+ deleteSchedule(forSemester: Semester)
+ hasPrerequisites(forCourseOffering : CourseOffering) :
   boolean
# passed(theCourseOffering : CourseOffering) : boolean
<<class>> + getNextAvailID() : int
+ getStudentID():int
+ getName() : string
+ getAddress(): string

background image

1

0

1

Чтобы

установить

преобразовать

агрегацию

в

композицию

:

1

.

Щелкните

правой

кнопкой

мыши

на

том

конце

агрегации

который

упирается

в

класс

-

часть

 (

на

рис

.3.27 – Schedule).

2.

В

открывшемся

меню

выберите

пункт

 Containment.

3.

Укажите

метод

включения

 By Value.

Примечание

Значение

 By Value 

предполагает

что

целое

и

часть

создаются

и

разрушаются

одновременно

что

соответствует

композиции

.

Агрегация

 (By Reference) 

предполагает

что

целое

и

часть

создаются

и

разрушаются

в

разное

время

.

Уточнение

обобщений

в

случае

ситуации

с

миграцией

подклассов

(

студент

может

переходить

с

очной

формы

обучения

на

вечернюю

)

иерархия

наследования

реализуется

так

как

показано

на

рис

. 3.28 . 

Такое

решение

повышает

устойчивость

системы

  (

не

нужно

модифицировать

описание

объекта

).

Рис

. 3.28 

Преобразование

обобщения

FulltimeClassification

- gradDate

<<entity>>

ParttimeClassification

- maxNumCourses

<<entity>>

Classification

Student.

- name : string
- address : string
<<class>> - nextAvailID : int
- studentID : int
- dateofBirth : Date

<<entity>>

1

1

1

1

background image

1

02

3.6.4. 

Проектирование

баз

данных

Проектирование

реляционных

баз

данных

выполняется

с

использованием

средства

 Data Modeler. 

Его

работа

основана

на

известном

механизме

отображения

объектной

модели

в

реляционную

Результатом

является

построение

диаграммы

  «

сущность

-

связь

» 

и

последующая

генерация

описания

БД

на

 SQL.

Упражнение

 14.

Проектирование

реляционной

базы

данных

Проектирование

БД

состоит

из

следующих

шагов

:

Создание

нового

компонента

 – 

базы

данных

:

1

.

Щелкните

правой

кнопкой

мыши

на

представлении

компонентов

.

2.

В

открывшемся

меню

выберите

пункт

 Data Modeler > New >

Database.

3.

Откройте

окно

спецификации

вновь

созданного

компонента

 DB_0

и

в

списке

 Target 

выберите

 Oracle 8.x.

Определение

устойчивых

 (persistent) 

классов

:

1

.

Откройте

окно

спецификации

класса

 Student 

в

пакете

 University

Artifacts.

2.

Перейдите

на

вкладку

 Detail.

3.

Установите

значение

переключателя

 Persistence 

в

 Persistent.

4.

Проделайте

такие

же

действия

для

классов

 Classification,

FulltimeClassification 

и

 ParttimeClassification.

5.

Откройте

класс

 Student 

в

браузере

нажав

 « + ».

6.

Щелкните

правой

кнопкой

мыши

на

атрибуте

 studentID.

7.

В

открывшемся

меню

выберите

пункт

 Data Modeler > Part of Object

Identity (

указание

атрибута

в

качестве

части

первичного

ключа

).

Примечание

Шаги

 5, 6 

и

 7 

можно

выполнять

в

 Rational Rose, 

начиная

с

версии

 200

1

.

Создание

схемы

БД

:

1

.

Щелкните

правой

кнопкой

мыши

на

пакете

 University Artifacts.

2.

В

открывшемся

меню

выберите

пункт

 Data Modeler > Transform to

Data Model.

Источник: https://files.student-it.ru/previewfile/15390