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

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

78

:CourseOffering

 : Student

: RegisterForCourses

Form

: Registration

Controller

:Schedule

:Student

Студент

хочет

удалить

график

Студент

удаляется

из

списков

курсов

на

  

которые

он

был

записан

1

: // delete schedule( )

5: // request schedule delete confirmation( )

6: // confirm schedule deletion( )

4: // display schedule(Schedule)

2: // get current schedule(Student, forSemester)

7: // delete current schedule( )

3: // get schedule(forSemester)

8: // delete schedule(forSemester)

9: // delete( )

1

0: // remove student(Schedule)

Система
запрашивает
подтверждение

Рис

. 3.

1

0. 

Диаграмма

последовательности

 Register for Courses – Basic

Flow (Delete Schedule)

Соотнесение

сообщений

с

операциями

1

.

Щелкните

правой

кнопкой

на

сообщении

1

, // register for courses.

2.

В

открывшемся

меню

выберите

пункт

 <new operation>. 

Появится

окно

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

операции

.

3.

В

поле

имени

оставьте

имя

сообщения

 – // register for courses.

4.

Нажмите

на

кнопку

ОК

чтобы

закрыть

окно

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

операции

и

вернуться

на

диаграмму

.

5.

Повторите

действия

1

 – 4, 

пока

не

соотнесете

с

операциями

все

остальные

сообщения

.

background image

79

Выполните

аналогичные

действия

для

создания

диаграмм

последовательности

показанных

на

рис

. 3.8 – 3.

11

Обратите

внимание

,

что

на

диаграмме

рис

. 3.

11

появился

объект

нового

класса

PrimarySheduleOfferingInfo (

класса

ассоциаций

описывающего

связь

между

классами

 Shedule 

и

 OfferingInfo), 

который

нужно

предварительно

создать

.

:PrimarySchedule

OfferingInfo

: Course

Offering

: Student

:RegisterFor

CoursesForm

:Registration

Controller

:Schedule

:Student

Повторяется
для

каждого

курса

из

графика

1

: // submit schedule( )

2: // submit schedule( )

4: // submit( )

7: // still open?( )

9: // add student(Schedule)

6: // has pre-requisites

(CourseOffering)

8: // any conflicts?( )

5: // is selected?( )

1

0: // mark as enrolled in( )

3: // save( )

[ has pre-requisites, course offering
open, and no schedule conflicts ]

[ is selected ]

Рис

. 3.

11

Диаграмма

последовательности

 Register for Courses – Basic

Flow (Submit Schedule)

Создание

примечаний

Чтобы

поместить

на

диаграмму

примечание

:

1

.

Нажмите

на

панели

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

кнопку

 Note.

2.

Щелкните

мышью

в

том

месте

диаграммы

куда

собираетесь

поместить

примечание

.

3.

Выделив

новое

примечание

введите

туда

текст

.

background image

80

4.

Чтобы

прикрепить

примечание

к

элементу

диаграммы

на

панели

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

нажмите

кнопку

 Anchor Notes To Item (

Прикрепить

примечания

к

элементу

).

5.

Нажав

левую

кнопку

мыши

проведите

указатель

от

примечания

до

элемента

диаграммы

с

которым

оно

будет

связано

.

Между

примечанием

и

элементом

возникнет

штриховая

линия

.

6.

Чтобы

создать

примечание

-

ссылку

на

другую

диаграмму

  (

как

это

сделано

на

диаграмме

рис

. 3.7 

и

других

), 

создайте

пустое

примечание

 (

без

текста

и

перетащите

на

него

из

браузера

нужную

диаграмму

.

Кроме

примечаний

на

диаграмму

можно

поместить

также

и

текстовую

область

С

ее

помощью

можно

например

добавить

к

диаграмме

заголовок

.

Чтобы

поместить

на

диаграмму

текстовую

область

:

1

.

На

панели

управления

нажмите

кнопку

 Text Box.

2.

Щелкните

мышью

внутри

диаграммы

чтобы

поместить

туда

текстовую

область

.

3.

Выделив

эту

область

введите

в

неё

текст

.

Создание

кооперативной

диаграммы

Для

создания

кооперативной

диаграммы

достаточно

открыть

диаграмму

последовательности

и

нажать

клавишу

 F5.

Определение

обязанностей

 (responsibilities), 

атрибутов

и

ассоциаций

классов

Обязанность

 (responsibility) – 

действие

которое

объект

обязан

выполнять

по

запросу

других

объектов

Обязанность

преобразуется

в

одну

или

более

операций

класса

на

шаге

проектирования

Обязанности

определяются

исходя

из

сообщений

на

диаграммах

взаимодействия

и

документируются

в

классах

в

виде

операций

  «

анализа

», 

которые

background image

8

1

появляются

там

автоматически

в

процессе

построения

диаграмм

взаимодействия

 (

соотнесения

сообщений

с

операциями

).

Так

диаграмма

классов

 VOPC (classes only) (

рис

. 3.6)

после

построения

диаграмм

взаимодействия

в

упражнении

 8 

должна

принять

вид

изображенный

на

рис

. 3.

1

2.

Рис

. 3.

1

2. 

Диаграмма

классов

 VOPC (classes only) 

с

операциями

 «

анализа

»

Атрибуты

классов

анализа

определяются

исходя

из

знаний

о

предметной

области

требований

к

системе

и

глоссария

.

Упражнение

 9. 

Добавление

атрибутов

к

классам

Настройка

1

.

В

меню

модели

выберите

пункт

 Tools > Options.

2.

Перейдите

на

вкладку

 Diagram.

3.

Убедитесь

что

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

 Show All Attributes 

помечен

.

4.

Убедитесь

что

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

 Suppress Attributes 

и

 Suppress

Operations 

не

помечены

.

CourseOffering

// add student()
// remove student()
// close registration()
// get number of students()
// cancel()
// still open?()
// add professor()
// close()
// save()

<<entity>>

PrimaryScheduleOfferingInfo

// is selected?()
// mark as enrolled in()

<<entity>>

RegisterForCoursesForm

// submit schedule()
// display course offerings()
// update schedule()
// delete schedule()
// confirm schedule deletion()
// request schedule delete confirmation()
// display schedule()
// register for courses()

 // display possible operations()

// save schedule()
// create schedule()
// select 4 primary and 2 alternate offerings()
// display blank schedule()
// update offering selections()

<<boundary>>

CourseCatalogSystem

// get course offerings()

<<boundary>>

RegistrationController

// get course offerings()
// get current schedule()
// delete current schedule()
// submit schedule()
// is registration open?()
// save schedule()
// create schedule with offerings()
// update schedule with new selections()

<<control>>

Student

// get tuition()
// add schedule()
// get schedule()
// delete schedule()
// has pre-requisites()

<<entity>>

Schedule

// commit()
// select alternate()
// remove offering()
// level()
// cancel()
// get cost()
// delete()
// submit()
// save()
// any conflicts?()
// create with offerings()
// update with new selections()

<<entity>>

background image

82

Добавление

атрибутов

1

.

Щелкните

правой

кнопкой

мыши

на

классе

 Student.

2.

В

открывшемся

меню

выберите

пункт

 New Attribute.

3.

Введите

новый

атрибут

 address

4.

Нажмите

клавишу

 Enter.

5.

Повторите

шаги

1

 – 4, 

добавив

атрибуты

 name 

и

 studentID.

6.

Добавьте

атрибуты

к

классам

 CourseOffering, Shedule 

и

PrimaryScheduleOfferingInfo, 

как

показано

на

рис

. 3.

1

3.

Рис

. 3.

1

3. 

Классы

с

операциями

 «

анализа

» 

и

атрибутами

Связи

между

классами

  (

ассоциации

определяются

на

основе

диаграмм

взаимодействия

Если

два

объекта

взаимодействуют

(

обмениваются

сообщениями

), 

между

ними

должна

существовать

связь

(

путь

взаимодействия

). 

Для

ассоциаций

задаются

множественность

и

,

возможно

направление

навигации

Могут

использоваться

множественные

ассоциации

агрегации

и

классы

ассоциаций

.

Упражнение

 10. 

Добавление

связей

Добавим

связи

к

классам

принимающим

участие

в

варианте

использования

 Register for Courses. 

Для

отображения

связей

между

Schedule

semester

// commit()
// select alternate()
// remove offering()
// level()
// cancel()
// get cost()
// delete()
// submit()
// save()
// any conflicts?()
// create with offerings()
// update with new selections()

<<entity>>

PrimaryScheduleOfferingInfo

grade

// is selected?()
// mark as enrolled in()

<<entity>>

Student

address
name
studentID

// get tuition()
// add schedule()
// get schedule()
// delete schedule()
// has pre-requisites()

<<entity>
>

CourseOffering

/ numStudents : Int
days : Enum
endTime : Time
number : String = "

1

00"

startTime : Time

// add student()
// remove student()
// close registration()
// get number of students()
// cancel()
// still open?()
// add professor()
// close()
// save()

<<entity>>

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