Сведения о языке UML (1183998), страница 15
Текст из файла (страница 15)
Щелкните правой кнопкой мыши в браузере на нужном классе.2. В открывшемся меню выберите пункт New > Statechart Diagram.Чтобы добавить состояние:1. На панели инструментов нажмите кнопку State2. Щелкните мышью на диаграмме состояний в том месте, куда хотитеего поместить.Все элементы состояния можно добавить с помощью вкладки Detailокна спецификации состояния.Чтобы добавить деятельность:1. Откройте окно спецификации требуемого состояния.2.
Перейдите на вкладку Detail.3. Щелкните правой кнопкой мыши на окне Actions.4. В открывшемся меню выберите пункт Insert.5. Дважды щелкните на новом действии.6. Введите действие в поле Actions.7. В окне When укажите Do, чтобы сделать новое действиедеятельностью.98Чтобы добавить входное действие, в окне 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. Дважды щелкните на переходе, чтобы открыть окно егоспецификации.992.3.4.5.Перейдите на вкладку Detail.Введите событие в поле Send Event.Введите аргументы в поле Send Arguments.Задайте цель в поле Send Target.Для указания начального или конечного состояния:1. На панели инструментов нажмите кнопку Start State или End State.2. Щелкните мышью на диаграмме состояний в том месте, кудахотите поместить состояние.Уточнение ассоциаций: некоторые ассоциации (семантические,структурные, устойчивые связи по данным) могут быть преобразованыв зависимости (неструктурные, временные связи, отражают видимость),а агрегации – в композиции.<<control>>RegistrationController(from Registration)+ submitSchedule()+ saveSchedule()+ getCourseOfferings() : CourseOfferingList+ getCurrentSchedule(forStudent : Student, forSemester :Semester) : Schedule+ deleteCurrentSchedule()<<class>> + new(forStudent : string)+ getStudent(withID : string) : Student+currentSchedule0..10..1<<entity>>Schedule(from UniversityArtifacts)0..n0..n0..1+registrant<<Interface>>ICourseCatalogSystem(from External SystemInterfaces)0..n0..11<<entity>>Student(from University Artifacts)+ getTuition() : double+ addSchedule(theSchedule : Schedule)+ getSchedule(forSemester: Semester) : Schedule+ deleteSchedule(forSemester: Semester)boolean+ hasPrerequisites(forCourseOffering : CourseOffering) :boolean# passed(theCourseOffering : CourseOffering) : boolean<<class>> + getNextAvailID() : int+ getStudentID():int+ getName() : string+ getAddress(): string+alternateCourses0..2+primaryCourses0..4<<entity>>CourseOffering(from UniversityArtifacts)Рис.
3.27. Пример преобразования ассоциаций и агрегаций100Чтобы установить преобразовать агрегацию в композицию:1. Щелкните правой кнопкой мыши на том конце агрегации, которыйупирается в класс-часть (на рис.3.27 – Schedule).2. В открывшемся меню выберите пункт Containment.3. Укажите метод включения By Value.Примечание. Значение By Value предполагает, что целое и частьсоздаются и разрушаются одновременно, что соответствует композиции.Агрегация (By Reference) предполагает, что целое и часть создаются иразрушаются в разное время.Уточнение обобщений: в случае ситуации с миграцией подклассов(студент может переходить с очной формы обучения на вечернюю)иерархия наследования реализуется так, как показано на рис. 3.28 .
Такоерешение повышает устойчивость системы (не нужно модифицироватьописание объекта).<<entity>>Student.- name : string- address : string<<class>> - nextAvailID : int- studentID : int- dateofBirth : Date11Classification<<entity>>FulltimeClassification<<entity>>ParttimeClassification- gradDate- maxNumCoursesРис. 3.28 Преобразование обобщения1013.6.4. Проектирование баз данныхПроектирование реляционных баз данных выполняется сиспользованием средства Data Modeler. Его работа основана на известноммеханизме отображения объектной модели в реляционную. Результатомявляется построение диаграммы «сущность-связь» и последующаягенерация описания БД на SQL.Упражнение 14.
Проектирование реляционной базы данныхПроектирование БД состоит из следующих шагов:Создание нового компонента – базы данных:1. Щелкните правой кнопкой мыши на представлении компонентов.2. В открывшемся меню выберите пункт Data Modeler > New >Database.3. Откройте окно спецификации вновь созданного компонента DB_0и в списке Target выберите Oracle 8.x.Определение устойчивых (persistent) классов:1.
Откройте окно спецификации класса Student в пакете UniversityArtifacts.2. Перейдите на вкладку Detail.3. Установите значение переключателя Persistence в Persistent.4. Проделайте такие же действия для классов Classification,FulltimeClassification и ParttimeClassification.5. Откройте класс Student в браузере, нажав « + ».6. Щелкните правой кнопкой мыши на атрибуте studentID.7. В открывшемся меню выберите пункт Data Modeler > Part of ObjectIdentity (указание атрибута в качестве части первичного ключа).Примечание. Шаги 5, 6 и 7 можно выполнять в Rational Rose, начинаяс версии 2001.Создание схемы БД:1.
Щелкните правой кнопкой мыши на пакете University Artifacts.2. В открывшемся меню выберите пункт Data Modeler > Transform toData Model.1023. В появившемся окне в списке Target Database укажите DB_0 инажмите ОК. В результате в логическом представлении появитсяновый пакет Schemas.4. Откройте пакет Schemas и щелкните правой кнопкой мыши напакете <<Schema>> S_0.5. В открывшемся меню выберите пункт Data Modeler > New > DataModel Diagram.6. Откройте пакет, затем откройте вновь созданную диаграмму«сущность-связь» NewDiagram и перенесите на нее все классытаблицы, находящиеся в пакете <<Schema>> S_0. Получившаясядиаграмма показана на рис.
3.29.T_Student.+ name : NUMBER(5, 0)+ address : NUMBER(5, 0)+ nextAvailID : NUMBER(5, 0)- studentID : NUMBER(5, 0)+ dateofBirth : DATE<<PK>> + PK_T_Student.15()<<Identifying>>11T_Classification- T_Classification_ID : NUMBER(10, 0)studentID : NUMBER(5, 0)<<PK>> + PK_T_Classification14()<<Unique>> + TC_T_Classification18()<<FK>> + FK_T_Classification6()<<Index>> + TC_T_Classification17()11<<Identifying>>0..1<<Identifying>>0..1T_FulltimeClassificationT_ParttimeClassification+ gradDate : NUMBER(5, 0)studentID : NUMBER(5, 0)T_Classification_ID : NUMBER(10, 0)+ maxNumCourses : NUMBER(5, 0)studentID : NUMBER(5, 0)T_Classification_ID : NUMBER(10, 0)<<PK>> + PK_T_FulltimeClassification16()<<FK>> + FK_T_FulltimeClassification7()<<PK>> + PK_T_ParttimeClassification17()<<FK>> + FK_T_ParttimeClassification8()Рис.
3.29. Диаграмма «сущность-связь»103Генерация описания БД на SQL:1. Щелкните правой кнопкой мыши на пакете <<Schema>> S_0.2. В открывшемся меню выберите пункт Data Modeler > ForwardEngineer.3. В открывшемся окне мастера Forward Engineering Wizard нажмитеNext.4. Отметьте все флажки генерации DDL и нажмите Next.5. Укажите имя и расположение текстового файла с результатамигенерации и нажмите Next.6. После завершения генерации откройте созданный текстовый файли просмотрите результаты.3.7. Реализация системы3.7.1. Создание компонентовВ Rational Rose диаграммы компонентов создаются в представлениикомпонентов системы. Отдельные компоненты можно создаватьнепосредственно на диаграмме, или перетаскивать их туда из браузера.Упражнение 15.
Создание компонентовВыберем в качестве языка программирования С++ и для классаStudent создадим соответствующие этому языку компоненты.Создание диаграммы компонентов:1. Дважды щелкните мышью на главной диаграмме компонентовв представлении компонентов.2. На панели инструментов нажмите кнопку Package Specification.3. Поместите спецификацию пакета на диаграмму.4. Введите имя спецификации пакета Student и укажите в окнеспецификации язык С++.5. На панели инструментов нажмите кнопку Package Body.6. Поместите тело пакета на диаграмму.7.
Введите имя тела пакета Student и укажите в окне спецификацииязык С++.1048. На панели инструментов нажмите кнопку Dependency.9. Проведите линию зависимости от тела пакета к спецификациипакета.StudentStudentРис. 3.30. Диаграмма компонентовСоотнесение классов с компонентами:1.
В логическом представлении браузера найдите класс Student.2. Перетащите этот класс на спецификацию пакета компонентаStudent в представлении компонентов браузера. В результате классStudent будет соотнесен со спецификацией пакета компонентаStudent.3. Перетащите класс Student на тело пакета компонента Studentв представлении компонентов браузера. В результате класс Studentбудет соотнесен с телом пакета компонента Student.3.7.2. Генерация кодаПроцесс генерации кода состоит из четырех основных шагов:1. Проверка корректности модели.2.