ТОП 10:

Использование вложенных классов



В Rose классы можно вкладывать друг в друга. Во вложенные (nested) классы можно вкладывать другие классы, организуя столько уровней вложения, сколько необходимо.

Для создания вложенного класса:

· Откройте окно спецификации родительского класса.

· Перейдите на вкладку Nested (Вложенные).

· Щелкните правой кнопкой мыши на белом поле этой вкладки.

· В открывшемся меню выберите пункт Insert (Вставить).

· Введите имя вложенного класса.

Если нужно показать вложенный класс на диаграмме Классов:

· Откройте диаграмму Классов.

· Выберите в меню модели пункт Query Add Classes (Запрос >► Добавить классы).

· Перетащите вложенный класс из списка Classes (Классы) в список Selected Classes (Выбранные классы). Вложенный класс представлен в формате: Родительский класс :: Вложенный класс.

· Щелкните мышью на ОК. Вложенный класс появится на диаграмме с именем родительского класса, заключенным в скобки.

Для удаления из модели вложенного класса:

· Откройте окно спецификации родительского класса.

· Перейдите на вкладку Nested (Вложенные).

· Щелкните правой кнопкой мыши на имени вложенного класса, который нужно удалить.

· В открывшемся меню выберите пункт Delete (Удалить). Вложенный класс будет удален со всех диаграмм Класса

Работа с пакетами

Пакеты (packages) применяются для группирования классов, обладающих некоторой общностью. На языке UML пакет изображают следующим символом:

Объединять классы можно, как угодно, однако существует несколько наиболее распространенных подходов. Во-первых, можно группировать классы по стереотипу. В таком случае получается один па­кет с классами-сущностями, один с пограничными классами, один с управляющими классами и т.д. Этот подход может быть полезен с точки зрения размещения готовой системы, поскольку все находя­щиеся на клиентских машинах пограничные классы уже оказываются в одном пакете.

Второй подход заключается в объединении классов по их функциональности. Например, в пакете Security (Безопасность) будут содержаться все классы, отвечающие за безопасность приложения.

Другие пакеты могут называться Employee Maintenance (Работа с сотрудниками), Reporting (Под­готовка отчетов) и Error Handling (Обработка ошибок). Преимущество этого метода заключается в возможности повторного использования пакетов. Если внимательно подойти к группированию клас­сов, можно получить практически не зависящие друг от друга пакеты. Например, пакет Security мож­но использовать и в других приложениях.

Наконец, применяют комбинацию двух указанных подходов. Для дальнейшей организации клас­сов разрешается вкладывать пакеты друг в друга. На высоком уровне, например, можно сгруппиро­вать классы по функциональности, создав пакет Security. Внутри него можно создать другие пакеты, сгруппировав отвечающие за безопасность классы по функциональности или по стереотипу.

Добавление пакетов

Очередным этапом разработки модели является добавление пакетов, Пакеты классов создают в Логи­ческом представлении браузера.

Для добавления на диаграмму Классов существующего пакета:

· Перетащите пакет на диаграмму из браузера.

· Поместить на диаграмму Классов новый пакет можно следующим образом:

· Нажмите кнопку Package (Пакет) панели инструментов.

· Щелкните мышью внутри диаграммы Классов, чтобы поместить туда пакет.

· Введите его имя.

Практика 12. Работа с атрибутами.

Атрибут — это фрагмент информации, связанный с классом. Например, у класса Company (Компания) могут быть атрибуты Name (Название), Address (Адрес) и NumberOfEmployees (Число служащих).

Выявление атрибутов

Существует множество источников, где можно найти атрибуты. Для начала взгляните на описание ва­рианта использования. Ищите имена существительные в потоке событий. Некоторые из них будут классами или объектами, другие — действующими лицами, и, наконец, последняя группа — атрибута­ми. Например, в потоке событий может быть написано: "Пользователь вводит имя сотрудника, его ад­рес, номер социальной страховки и номер телефона". Это означает, что у класса Сотрудник имеются атрибуты Имя, Адрес, Номер страховки и Номер телефона.

Атрибуты можно также выявить, изучая документацию, описывающую требования к системе. Ищите такие требования, которые определяют собираемые системой данные. Любой элемент соби­раемой информации может быть атрибутом класса.

Наконец, взгляните на структуру базы данных. Если она уже определена, поля в ее таблицах дадут вам хорошее представление об атрибутах.

Часто имеется однозначное соответствие между таблицами базы данных и классами-сущностями. Если вернуться к предыдущему примеру, то в таблице Сотрудник должны быть поля Имя, Адрес, Но­мер телефона и Номер страховки. Соответствующий класс Сотрудник также имеет атрибуты Имя, Ад­рес, Номер телефона и Номер страховки. Следует отметить, однако, что не всегда существует такое однозначное соответствие. Подходы к проектированию баз данных и классов могут различаться.

В частности, реляционные базы данных не поддерживают наследование непосредственно.

Определяя атрибуты, следите за тем, чтобы каждый из них можно было соотнести с требования­ми к системе. Это помогает решить классическую проблему приложения, собирающего огромный объем никому не нужной информации. Каждое требование должно быть отслежено до конкретного | потока событий варианта использования, конкретного требования или существующей таблицы базы ( данных. Если это не удается сделать, нельзя быть уверенным в том, что данное требование нужно заказчику. В этом заключается отличие данного подхода к проектированию приложений от более старых методов — вместо того чтобы сначала создавать структуру базы данных и затем на ее основе ; разрабатывать систему, вы проектируете систему и базу данных одновременно, добиваясь их соответствия одним и тем же требованиям.

Определив атрибуты, внимательно соотнесите их с соответствующими классами. Атрибут должен / соответствовать классу. Например, класс Сотрудник может содержать имя и адрес, но не должен / включать в себя сведения о выпускаемой компанией продукции. Для последних подошел бы класс I Продукция.

Обратите внимание на классы, у которых слишком много атрибутов. Возможно, такой класс следует разделить на два меньших. Так, класс с 10-ю или 15-ю атрибутами может быть вполне приемлемым — только убедитесь, что все его атрибуты нужны и действительно должны принадлежать этому классу. Будьте осторожны и с классами, у которых слишком мало атрибутов. Вполне возможно, что I все нормально — например, управляющий класс имеет мало атрибутов. Однако это может быть и признаком необходимости в объединении нескольких классов.

Иногда могут возникнуть сомнения, соответствует ли обнаруженная вами информация атрибуту I или классу. Рассмотрим, например, такой атрибут, как название компании. Является ли он атрибутом класса Person (Человек), или лучше создать отдельный класс Company (Компания)? Ответ зависит от того, какое приложение вы пишете. Если вы собираете сведения о компании и имеется связанное с ней поведение, она может быть классом. Допустим, что вы проектируете систему работы с заказчика­ми. В таком случае может потребоваться информация о компаниях, которым вы поставляете товары или услуги. Вам нужно знать, сколько сотрудников работает в компании, ее имя и адрес, контактный телефон и т.д.

С другой стороны, специфическая информация о компании может и не требоваться. Допустим, ваше приложение должно генерировать письма людям, работающим в других организациях. При этом вам достаточно знать названия их фирм. В таком случае имя компании будет атрибутом класса Контакт.

Кроме того, нужно рассмотреть, есть ли поведение у подозрительной информации. Если в вашем приложении компания имеет некоторое выраженное поведение, лучше моделировать ее как класс. Если поведения нет, то это скорее всего атрибут.

После выявления атрибутов необходимо добавить их в модель. В последующих разделах рассказы­вается о том, как добавлять атрибуты в модель и как описывать их подробно, задавая, например, зна­чения по умолчанию и типы данных.

Добавление атрибутов

Определив атрибуты, вы должны добавить их к соответствующим классам вашей модели. При этом с атрибутами можно связать три основных фрагмента информации: имя атрибута, тип его данных и первоначальное значение. Имя и тип атрибута должны быть определены перед генерацией кода, пер­воначальное значение задавать необязательно.

Добавление атрибута выполняется непосредственно на диаграмме Классов, в браузере или в окне спецификации класса.

С атрибутом можно связать некоторое текстовое описание. Как правило, это короткое описание или определение атрибута. В генерируемый код оно войдет в качестве комментария. Таким образом, документируя атрибут, вы начинаете документировать и код.

Для добавления атрибута к классу:

· Щелкните правой кнопкой мыши на классе диаграммы Классов.

· В открывшемся меню выберите пункт New Attribute (Создать Атрибут).

· Введите имя атрибута в формате Имя : Тип данных = Начальное значение. Например: Address : String IDNumber : Integer = Тип данных нужен при генерации кода, но начальное значение необязательно.

· Чтобы еще добавить атрибуты, нажмите клавишу Enter и введите новые атрибуты непосредст­венно на диаграмму Классов

Удаление атрибутов

В процессе работы может потребоваться удалить ранее созданные атрибуты. Например, часто при изменении требований к системе пропадает необходимость в конкретном атрибуте. В среде Rose это- легче делать в браузере. Можно также использовать диаграмму Классов. При удалении атрибута с диа­граммы Классов он будет автоматически удален со всех остальных диаграмм Классов и из модели.

Для удаления атрибута класса:

· Щелкните правой кнопкой мыши на атрибуте в браузере.

· В открывшемся меню выберите пункт Delete (Удалить).

Спецификации атрибута

Как и в случае других элементов модели Rose, можно определить подробные спецификации атрибута. Они включают в себя, помимо прочего, тип данных, значение по умолчанию, стереотип и видимость атрибута.

Все спецификации можно просматривать или изменять в окне спецификации атрибута, показанном на рис.

Открыть окно спецификации атрибута можно следующим образом:

· Щелкните правой кнопкой мыши на атрибуте в браузере.

· В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).

Задание типа данных атрибута

Одной из главных характеристик атрибута является его тип данных. Он специфичен для используемо­го языка. Это может быть, например, тип string, integer, long или boolean. Перед началом генерации кода необходимо указать тип данных каждого атрибута.

В качестве типов данных можно использовать либо встроенные типы языка программирования (string, integer, long и т.д.), либо определенные в вашей модели имена классов. Для того чтобы имена определенных в модели классов выводились в раскрывающемся списке типов данных атрибутов, уста­новите флажок Show Classes (Показать классы).

Для задания начального значения атрибута:

· Щелкните правой кнопкой мыши на атрибуте в браузере.

· В открывшемся меню выберите пункт Open Specification (Открыть спецификацию). Вы увидите окно спецификации атрибута класса.

· Укажите тип данных в раскрывающемся списке типов или введите собственный тип данных.







Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.29.190 (0.009 с.)