close

Вход

Забыли?

вход по аккаунту

?

LAB2Диагр Классов

код для вставкиСкачать
 2 Разработка диаграмм классов среде StarUML 2.1 Цель работы
Основная цель работы состоит в изучении особенностей разработки диаграмм классов в среде StarUML и приобретении практических навыков моделирования классов.
2.2 Методические указания по организации самостоятельной работы студентов
2.2.1 Рабочеее окно диаграммы классов и специальная панель инструментов Диаграмма классов является основным логическим представлением модели и содержит детальную информацию о внутреннем устройстве объектно-ориентированной программной системы или, используя современную терминологию, об архитектуре программной системы. На диаграммах классов изображаются сами классы с атрибутами, типами атрибутов, методами, их параметрами и типами, а так же иерархия наследования классов. И класс, и наследование в UML полностью соответствуют конструкциям объектно-ориентированных языков программирования. Но кроме них на диаграммах классов могут также присутствовать связи между классами-ассоциации.
Для активизации рабочего окна диаграммы классов необходимо в проекте создать диаграмму классов, после чего появится специальная панель инструментов для диаграммы классов. Назначение кнопок специальной панели инструментов для диаграммы классов приведено в табл. 2.1.
Таблица 2.1 - Назначение кнопок специальной панели инструментов для диаграммы классов
Графическое изображениеВсплывающая подсказкаНазначение кнопки
Select Превращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме
Subsystem Добавляет на диаграмму подсистему
Enumeration Добавляет на диаграмму перечисление
Class Добавляет на диаграмму класс
Interface Добавляет на диаграмму интерфейс Association Добавляет на диаграмму двунаправленную ассоциацию
Unidirectional Association Добавляет на диаграмму однонаправленную ассоциацию
Association Class Добавляет на диаграмму ассоциацию класс Package Добавляет на диаграмму пакет
Dependency Добавляет на диаграмму отношение зависимости
Generalization Добавляет на диаграмму отношение обобщения
Realize Добавляет на диаграмму отношение реализации 2.2.2 Спецификация классов
Для классов в UML определен следующий набор параметров:
- имя;
- тип;
- стереотип;
- видимость;
- устойчивость;
- множественность и некоторые другие параметры.
Имя класса должно быть уникальным и относительно коротким. В общем случае в качестве имени используются существительные в единственном числе. Обычно имена классов не содержат пробелов. На языке UML определены три основных типакласса: Boundary (Граница), Entity (Объект) и Control (Управление).
Пограничными классами (boundary classes) называются такие классы, которые расположены на границе системы со всем остальным миром. Они включают в себя формы, отчеты, интерфейсы с аппаратурой (такой, как принтеры или сканеры) и интерфейсы с другими системами. Обозначение пограничного класса приведено на рис. 2.1.
Рисунок 2.1 - Обозначение пограничного класса
Для выявления пограничных классов необходимо исследовать диаграммы прецедентов использования. Для каждого взаимодействия между действующим лицом и прецедентом использования должен существовать хотя бы один пограничный класс. Если два действующих лица инициируют один и тот же прецедент использования, они могут применять общий пограничный класс для взаимодействия с системой.
Классы-сущности (entity classes) содержат информацию, хранимую постоянно. Классы-сущности можно обнаружить в потоке событий и на диаграммах Взаимодействия. Каждый атрибут класса-сущности становится полем в базе данных. Обозначение класса-сущности приведено на рис. 2.2.
Рисунок 2.2 - Обозначение класса-сущности
Управляющие классы (control classes) отвечают за координацию действий других классов. Обычно у каждого прецедента использования имеется один управляющий класс, контролирующий последовательность событий этого варианта использования. Сам управляющий класс не несет в себе никакой функциональности - остальные классы посылают ему мало сообщений. Но сам он посылает множество сообщений. Управляющий класс делегирует ответственность другим классам. Обозначение управляющего класса приведено на рис 2.3.
Рисунок 2.3 - Управляющий класс На рис. 2.4 приведен пример диаграммы классов, содержащей описанные выше типы классов.
Рисунок 2.4 - Диаграмма классов реализации варианта использования "Оплатить счет"
В системе могут применяться и другие управляющие классы, общие для нескольких вариантов использования. Например, класс SecurityManager (Менеджер безопасности). Инкапсуляция в один класс, например, координации безопасности минимизирует последствия вносимых изменений. Любые изменения отвечающей за безопасность логики системы затронут только менеджера безопасности.
Помимо упомянутых выше стереотипов, можно создавать и свои собственные.
Для задания свойств класса необходимо воспользоваться окном свойств класса Properties, которое становится доступным в правой части экрана снизу при выделении класса на диаграмме (см. рис. 2.5). Параметр видимости класса (Visibility) показывает, будет ли класс виден вне своего пакета. Для класса можно указать одно из четырех значений:
- Public (Открытый). Этот класс виден всем остальным классам системы;
- Protected (Защищенный) - виден из вложенных в него классов, классов и подклассов того же пакета, а так же подклассов другого пакета;
- Private (Закрытый) - виден только из самого класса;
- Package (Пакетній) - виден только из классов того же пакета.
Кроме того класс имеет еще ряд характеристик:
* абстрактность (abstract) - невозможность создания экземпляров класса;
* активность класса (active) - экземпляры класса выполняются на отдельном потоке управления;
* завершенность класса (leaf) - лист в дереве наследования.
Атрибута класса может иметь следующие характеристики:
- тип данных; - значение по умолчанию; - стереотип ;
- видимость.
Рисунок 2.5 - Окно cвойств класса
Так же класс может иметь параметры типа (свойство TemplateParameters).
2.2.3 Спецификация атрибута
Для редактирования свойств атрибутов предназначено окно свойств атрибута Properties (см. рис. 2.6), которое становится доступным в правой части экрана снизу при выделении атрибута.
Рисунок 2.6 - Окно свойств атрибута класса
Тип данных специфичен для используемого языка. Это может быть, например, тип string, integer, long или определенные в модели имена классов, или. Перед началом генерации кода необходимо указать тип данных каждого атрибута.
Стереотип атрибута является способом его классификации. Например, некоторые атрибуты могут соответствовать полям базы данных, а другие нет. Для каждого такого типа можно определить свой стереотип.
Значения по умолчанию (InitialValue) задавать не обязательно, однако это значение используется при генерации кода для инициализации атрибута.
Параметр видимости (Vizibility) указывает, какие классы имеют право читать и изменять атрибут. Это свойство называется видимостью атрибута (attribute visibility).
Допустимы четыре значения этого параметра:
- Public (Общий, открытый) Атрибут виден всем остальным классам. В соответствии с нотацией UML общему атрибуту предшествует знак "+".
- Private (Закрытый, секретный) Атрибут не виден никаким другим классам. В соответствии с нотацией UML закрытый атрибут обозначается знаком "-".
- Protected (Защищенный) Атрибут доступен только самому классу и его потомкам. Нотация UML для защищенного атрибута - знак "#".
- Package (Пакетный) Атрибут является общим, но только в пределах своего пакета. Данный тип видимости не обозначается никаким специальным значком.
В общем случае атрибуты рекомендуется делать закрытыми или защищенными. Это позволяет лучше контролировать сам атрибут и код. При использовании закрытых или защищенных атрибутов удается избежать ситуации, когда значение атрибута изменяется всеми классами системы. Вместо этого логика изменения атрибута будет заключена в том же классе, что и сам атрибут. Для атрибута так же можно задавать следующие характеристики:
- изменяемость (Changeability) - указывает, может ли значение атрибута редактироваться либо только добавляться, либо не может изменяться вообще (FROZEN);
- кратность (Multiplicity) - задает количество значений, которые может принимать атрибут;
- сортировка (Ordering) - задает необходимость упорядочивания информации по значениям атрибута.
2.2.4 Работа с операциями
Операцией называется связанное с классом поведение. Операция состоит из трех частей: имени, параметров и типа возвращаемого значения. Параметры - это аргументы, получаемые операцией "на входе". Тип возвращаемого значения относится к результату действия операции.
На некоторых диаграммах полезно показывать полную сигнатуру операций. Если же нужно упростить диаграмму, лучше оставить только имена.
В языке UML операции имеют следующую нотацию:
Имя_операции (аргумент1: тип_данных_аргумента1, аргумент2: тип_данных_аргумента2,...): тип_возвращаемого_значения
Операции определяют ответственности классов. При идентификации операций и анализе классов имейте в виду, что класс должен иметь операций более, чем две, но не слишком много. Иначе класс будет трудно управляемым. В этом случае его лучше разбить на два меньших класса.
Добавить операцию к созданному ранее классу можно, выбрав свойство Operations в окне свойств класса. Операция класса имеет собственное окно спецификации свойств (Properties), которое становится доступным при выделении операции (см. рис. 2.7).
Рисунок 2.7 - Окно свойств операции класса
Для операций классов кроме квантора видимости можно также задать: аргументы и их тип, тип возвращаемого результата, стереотип операции, а также параллельность выполнения операции (Concurrency) и ряд других свойств. Параллельность выполнения операции можно специфицировать следующим образом:
- Sequential (Последовательная) - свойство по умолчанию, которое означает, что данная операция класса может быть выполнена только при наличии одного потока управления, т. е. соответствующая операция класса должна выполняться последовательно. - Guarded (Безопасная) - означает, что при наличии нескольких потоков управления выполнение данной операции класса гарантируется только в том случае, когда обеспечено взаимодействие объектов друг с другом в различных потоках. - Synchronous (Синхронная) - означает, что выполнение данной операции класса гарантируется при наличии нескольких потоков управления. Данная операция будет выполняться в отдельном потоке управления вплоть до своего завершения.
2.2.5 Отношения ассоциации и агрегации
Ассоциация - это отношение, показывающее, что объекты одного типа могут взаимодействовать с объектами другого типа посредством сообщений (запросов операций). Допускается задание ассоциаций на одном классе.
Для добавления на диаграмму ассоциации между двумя классами на специальной панели инструментов необходимо нажать кнопку с изображением пиктограммы направленной ассоциации (Unidirectional Association) и отпустить левую кнопку мыши. Если ассоциация - направленная, то на диаграмме классов надо выделить первый элемент ассоциации или источник, от которого исходит стрелка, и, не отпуская нажатую левую кнопку мыши, переместить ее указатель ко второму элементу отношения или приемнику, к которому направлена стрелка. После перемещения ко второму элементу кнопку мыши следует отпустить. Для ассоциации в окне спецификации свойств ассоциации (Association Specification) можно задать имя, кратность каждого из полюсов ассоциации, стереотип, использовать ограничения и роли, а также некоторые другие свойства.
Агрегация (aggregations) представляет собой разновидность ассоциации. Агрегация - это связь между целым и его частями. Например, может быть класс "Автомобиль", а также классы "Двигатель", "Покрышки" и классы для других частей автомобиля. В результате объект класса "Автомобиль" будет состоять из объекта класса "Двигатель", четырех объектов "Покрышек" и т.д. На языке UML агрегацию изображают в виде линии с ромбиком у класса, являющегося целым.
Один класс может участвовать в нескольких отношениях агрегации с другими классами.
2.2.6 Связи обобщения
С помощью обобщений (generalization) показывают связи наследования между двумя классами. Большинство объектно-ориентированных языков непосредственно поддерживает концепцию наследования. Она позволяет одному классу наследовать все атрибуты, операции и связи другого. На языке UML связь наследования называют обобщением и изображают в виде стрелки от класса потомка к классу-предку.
Для выявления обобщений на диаграмме можно развертывать структуру наследования сверху вниз или снизу вверх. В первом случае необходимо искать классы, у которых имеется несколько разновидностей, а при построении структуры снизу вверх следует искать классы, имеющие между собой что-то общее. Создаваемая структура должна быть управляемой. Иерархия со слишком большим количеством уровней может стать плохо управляемой. Пример модели классов проблемной области банкомата приведен на рис. 2.8.
Рисунок 2.8 - Модель классов проблемной области банкомата
3.3 Порядок выполнения работы
3.3.1 Проанализируйте разработанную ранее диаграмму (диаграммы) прецедентов использования и другие знания о проблемной области. 3.3.2 В навигаторе моделей выберите <<Logical View>>, и с помощью контекстного меню создайте новую диаграмму классов (Clas Diagram). 3.3.3 Составьте перечень классов и интерфейсов, нанесите их на диаграмму.
3.3.4 Задайте в окне спецификации класса следующие его свойства:
- стереотип (вкладка General окна спецификации класса, поле Stereotype);
- возможность реализации объектов данного класса в параллельных потоках управления (IsActive);
3.3.5 Задайте атрибуты для каждого класса и специфицируйте их свойства.
3.3.6 Создайте в классах необходимые для реализации функциональности операции. Специфицируйте их свойства.
3.3.7 Установите между классами связи типа: ассоциации, агрегации, композиции, обобщения,. При необходимости специфицируйте их свойства.
3.3.8 Для интерфейсов установите отношения использования и реализации.
3.3.9 Покажите разработанные диаграммы преподавателю.
3.3.10 Оформите отчет.
3.3.11 Сдайте выполненную и оформленную надлежащим образом работу преподавателю. 3.4 Содержание отчета
Индивидуальный отчет о выполненной лабораторной работе должен содержать:
1) цель работы;
2) наименование функционального комплекса задач или задачи, для которых разработана диаграмма прецедентов использования;
3) разработанную диаграмму классов; 4) выводы о полученных знаниях и умениях.
3.5 Контрольные вопросы 1. Какие элементы может содержать диаграмма классов?
2. Какие свойства спецификации имеет класс?
3. Что называют сообщением в UML?
4. Какого типа отношения существуют между классами?
5. В каком случае устанавливается связь агрегации? Как определяется ее направленность?
6. Чем отличается отношение композиции от отношения агрегации?
7. В каком случае устанавливается связь обобщения? Как определяется ее направленность? 8. Каким образом может быть использована диаграмма классов?
9. В каком случае необходимо именовать отношение ассоциации или ее полюсов?
10. Прообразом чего в программном коде является операция класса?
11. Что такое интерфейс? В каких случаях в диаграмму классов включают интерфейсы?
12. Как определить, является ли класс классом сущности?
Разработал: доц. каф. ЭВМ ХНУРЭ Борисенко Т. И. 1
Документ
Категория
Рефераты
Просмотров
381
Размер файла
446 Кб
Теги
классов, lab2диагр
1/--страниц
Пожаловаться на содержимое документа