Лекционные материалы (1158642), страница 15
Текст из файла (страница 15)
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.
Установка свойств генерации кода.3. Выбор класса, компонента или пакета.4. Генерация кода.105Для проверки модели:1. Выберите в меню Tools > Check Model.2. Проанализируйте все найденные ошибки в окне журнала.К наиболее распространенным ошибкам относятся такие, например,как сообщения на диаграмме последовательности или кооперативнойдиаграмме, не соотнесённые с операцией, либо объекты этих диаграмм,не соотнесённые с классом.С помощью пункта меню Check Model можно выявить большую частьнеточностей и ошибок в модели. Пункт меню Access Violations позволяетобнаруживать нарушения правил доступа, возникающие тогда, когдасуществует связь между двумя классами разных пакетов, но связи междусамими пакетами нет.Чтобы обнаружить нарушение правил доступа:1.
Выберите в меню Report > Show Access Violations.2. Проанализируйте все нарушения правил доступа в окне.Можно установить несколько параметров генерации кода для классов,атрибутов, компонентов и других элементов модели. Этими свойствамиопределяется способ генерации программ. Для каждого языка в Roseпредусмотренрядопределенныхсвойствгенерациикода.Перед генерацией кода рекомендуется анализировать эти свойства ивносить необходимые изменения.Для анализа свойств генерации кода выберите Tools > Options, а затемвкладку соответствующего языка.
В окне списка можно выбрать класс,атрибут, операцию и другие элементы модели. Для каждого языка в этомсписке указаны свои собственные элементы модели. При выборе разныхзначений на экране появляются разные наборы свойств.Любые изменения, вносимые в набор свойств в окне Tools > Options,воздействуют на все элементы модели, для которых используется данныйнабор.Иногда нужно изменить свойства генерации кода для одного класса,атрибута, одной операции и т.д. Для этого отройте окно спецификацииэлемента модели. Выберите вкладку языка (C++, Java, …) и изменитесвойства здесь. Все изменения, вносимые в окне спецификации элементамодели, оказывают влияние только на этот элемент.106При генерации кода за один раз можно создать класс, компонент илицелый пакет.