|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Создание диаграммы классов
Объекты из диаграмм последовательности группируются в классы. Основываясь на нашей диаграмме последовательности, мы можем идентифицировать следующие объекты и классы: q registration form является объектом класса RegForm; q manager является объектом класса Manager; q math 101 является объектом класса Course; q section 1 является объектом класса CourseOffering; q bill является интерфейсом к внешней учетной системе, поэтому мы будем использовать имя BillingSystem как имя его класса. Классы создаются в логическом представлении системы (рис. 17.17). 1. В окне браузера щелкните правой кнопкой по значку пакета Logical View. 2. В появившемся контекстном меню выберите команду New:Class. В результате в дерево окна браузера будет добавлен класс с именем NewClass. 3. Пока значок класса остается выделенным, введите имя RegForm. 4. Повторите предыдущие шаги для добавления других классов: Manager, Course, CourseOffering и BillingSystem. После создания классов они описываются (документируются). Описания добавляются с помощью Documentation Window (рис. 17.18). 1. В окне браузера щелкните по значку класса CourseOffering. 2. Введите описание класса в Documentation Window. Процесс построения сценариев и нахождения классов продолжается до тех пор, пока вы не скажете: «Больше находить нечего — нет ни новых классов, ни новых сообщений». Следующий шаг — построение диаграммы классов. Откроем главную диаграмму (рис. 17.19) классов и добавим в нее классы. Рис. 17.17. Логическое Рис. 17.18. Окно документации — представление — Logical View Documentation Window
Рис. 17.19. Главная диаграмма классов
1. Для открытия диаграммы выполним двойной щелчок по значку Main в окне браузера. 2. В главном меню выберем команду Query:Add Classes. 3. Для добавления всех классов нажмем кнопку АИ» (выбрать все). 4. Для закрытия окна и добавления классов в диаграмму нажмем кнопку ОК. 5. Переупорядочим классы в диаграмме (выделяя конкретный класс и перетаскивая, его на новое место). ПРИМЕЧАНИЕ Классы можно добавлять в диаграмму перетаскиванием их из окна браузера (по одному классу в единицу времени).
Для создания новых типов моделирующих элементов в UML используется понятие стереотипа. С помощью стереотипа можно «нагрузить» элемент новым смыслом. Используем предопределенный стереотип Interface для класса BillingSystem (рис. 17.20), так как этот класс определяет только интерфейс к внешней учетной системе (billing system). Рис. 17.20. Класс Billing System
1. В главной диаграмме классов выполним двойной щелчок по значку класса BillingSystem. В результате появляется окно спецификации класса (Class Specification). 2. Щелкнем по стрелке раскрывающегося списка Stereotype. 3. Наберем на клавиатуре слово-стереотип Interface. 4. Закроем окно спецификации, нажав кнопку ОК. Для определения взаимодействия объектов нужно указать отношения между классами. Для того чтобы увидеть, как объекты должны разговаривать друг с другом, исследуются диаграммы последовательности. Если объекты должны разговаривать, то должен быть путь для коммуникации между их классами. Двумя типами структурных отношений являются ассоциации и агрегации. Ассоциация определяет соединение между классами. Исследуя диаграмму последовательности Add a Course, мы можем определить существование следующих ассоциаций: от RegForm к Manager, от Manager к Course и от Manager к BHHngSystem (рис. 17.21). Рис. 17.21. Ассоциации между классами
1. На панели инструментов щелкните по значку однонаправленной ассоциации (стрелке). 2. Щелкните по классу RegForm и перетащите линию ассоциации на класс Manager. 3. Повторите предыдущие шаги для ввода следующих отношений: q от Manager к Course; q от Manager к BillingSystem. Ассоциации задают пути между объектами-партнерами одинакового уровня. Агрегация фиксирует неравноправные связи. Она показывает отношение между целым и его частями. Создадим отношение агрегации между классом Course и классом CourseOffering (рис. 11.22),так как предложение Курса CourseOfferings является частью агрегата — класса Course. 1. На панели инструментов щелкните по значку агрегации (линии с ромбиком). 2. Щелкните по классу, представляющему целое — Course. 3. Перетащите линию агрегации на класс, представляющий часть — CourseOffering. Рис. 17.22. Отношение агрегации
Рис. 17.23. Индикаторы мощности
Для отображения того, «как много» объектов участвует в отношении, к ассоциациям и агрегациям диаграммы могут добавляться индикаторы мощности (рис. 17.23). 1. Щелкните правой кнопкой по линии агрегации возле класса CourseOffering. 2. Из контекстного меню выберите команду Multipticity:0ne or More. 3. Щелкните правой кнопкой по линии агрегации возле класса Course. 4. Из контекстного меню выберите команду Multiplicity:1. Вспомним, что задание имени — это первый из трех шагов определения класса. Любой класс должен инкапсулировать в себе структуру данных и поведение, которое определяет возможности обработки этой структуры. Примем, что на фиксацию структуры ориентируется второй шаг, а на фиксацию поведения — третий шаг. Структура класса представляется набором его свойств. Структура находится путем исследования проблемных требований и соглашений между разработчиками и заказчиками. В нашей модели каждое предложение курса (CourseOffering) является свойством (attribute) класса-агрегата Course. Конечно, класс CourseOffering тоже имеет свойства (рис. 17.24). Определим одно из них — количество студентов. Рис. 17.24. Свойства
1. В диаграмме классов щелкните правой кнопкой по классу CourseOffering. 2. Из контекстного меню выберите команду Insert New Attribute. Это приведет к добавлению в класс свойства. 3. Пока новое свойство остается выделенным, введите его имя — numberStudents. Итак, два шага формирования класса сделаны. Перейдем к третьему шагу — заданию поведения класса. Поведение класса представляется набором его операций. Исходная информация об операциях класса находится в диаграммах последовательности. В операции отображаются сообщения из диаграмм последовательности. Первое действие этого шага заключается в привязке объектов (из диаграмм последовательности) к конкретным классам. Выполним такую привязку для нашей модели (рис. 17.25). Рис. 17.25. Привязка объектов к классам
1. Для открытия диаграммы последовательности Add a Course выполним двукратный щелчок по ее значку в окне браузера. 2. В окне браузера щелкнем по значку класса CourseOffering. 3. Перетащим класс CourseOffering на объект section 1. Вот и все. Видим, что имя объекта удлинилось, в нем появились две части, разделенные двоеточием. Слева от двоеточия записывается имя объекта, а справа — имя класса. После назначения объекта классу выполняется второе действие — наполнение класса операциями. Как правило, в операции класса превращаются сообщения, получаемые его объектом. При этом обычно сообщения переименовываются — производится согласование имени сообщения и имени операции (рис. 17.26). Причины переименования просты и понятны. Во-первых, имя операции должно отражать ее принадлежность к классу (а не к источнику соответствующего сообщения). Во-вторых, имя операции должно указывать на ее обязанность, а не на способ ее реализации. В-третьих, имя должно быть допустимым с точки зрения синтаксиса языка программирования, который будет использоваться для кодирования класса. Рис. 17.26. Новая операция
1. Щелкните правой кнопкой по сообщению «add Joe». В результате станет видимым контекстное меню. 2. Выберите команду new operation. В результате станет видимой спецификация операции Operation Specification. 3. Введите имя новой операции — add. 4. Перейдите на вкладку Detail. 5. Щелкните правой кнопкой мышки по полю Arguments. 6. Выберите в контекстном меню команду Insert. В появившейся рамке наберите имя аргумента — Joe. Щелкните вне рамки. 7. Закройте окно спецификации, нажав кнопку ОК. Вы создали новую операцию класса и связали с ней сообщение — оно автоматически поменяло свое имя. Несмотря на переименование, это прямое действие — отталкиваясь от имени сообщения, получить имя операции. Возможно и обратное действие — отталкиваясь от имени операции, получить имя сообщения. При этом реализуется такая последовательность: отдельно создается новая операция класса, а затем она отображается на существующее сообщение (рис. 17.27). 1. Щелкните правой кнопкой по классу в браузере. 2. В появившемся контекстном меню выберите команду New: Operation. Появляется рамка с надписью opname. 3. Вместо надписи opname наберите имя новой операции класса — offeringOpen. 4. На диаграмме последовательности щелкните правой кнопкой по сообщению «accepting students?». В результате станет видимым контекстное меню. 5. В меню выберите операцию offeringOpen() —сообщение переименовывается (на него отображается операция класса). Рис. 17.27. Отображение операции на сообщение
Следующий шаг разработки состоит в настройке описаний классов на конкретный язык программирования. Сам язык выбирается по команде Tools:0ptions. В появившемся диалоговом окне переходят на вкладку Notation. Название языка выбирается из раскрывающегося списка Default Language. Для нашего примера используем язык Ada 95. Итак, в ходе анализа и проектирования в визуальную модель добавляются проектные решения (рис. 17.28). После выбора языка программирования для свойств определяют типы данных, а для операций конкретизируют сигнатуры — имена и типы параметров, типы возвращаемых значений. 1. Выполним двукратный щелчок по значку класса CourseOffering в окне браузера или диаграмме классов. В результате станет видимым окно спецификации класса. 2. Выберите страницу Attributes (свойства). 3. Щелкните по полю Туре. В результате станет видимым раскрывающийся список. 4. Введите требуемый тип данных (Integer). 5. Закройте окно спецификации, нажав кнопку ОК. Рис. 17.28. Добавление проектных решений
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.) |