ТОП 10:

Назначение стереотипа для атрибута



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

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

Для назначения стереотипа атрибуту:

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

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

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

Задание начальных значений атрибута

Атрибуты могут иметь значения по умолчанию. Например, класс Order содержит информацию и пове­дение, связанное с заказами, которые получает ваша компания. Атрибут TaxRate этого класса пред­ставляет собой ставку налога с покупки. В вашем городе налог равен 7.5%, так что почти все заказы будут облагаться налогом 7.5%. Следовательно, у атрибута TaxRate можно определить значение по умолчанию, равное 0.075.

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

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

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

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

· В поле Initial Value (Начальное значение) введите значение атрибута по умолчанию.

Задание видимости атрибута

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

Класс можно представить себе следующим образом:

Так как атрибуты содержатся внутри класса, они скрыты от других классов. В связи с этим нужно указать, какие классы имеют право читать и изменять атрибуты. Это свойство называется видимостью атрибута (attribute visibility)

Допустимы четыре значения этого параметра. Рассмотрим каждый из них в контексте примера. Пусть у нас имеется класс Employee с атрибутом Address и класс Company.

Public (Общий, открытый) Атрибут виден всем остальным классам. Любой класс может про­смотреть или изменить значение атрибута. В таком случае класс Company может изменить значе­ние атрибута ^Address класса Employee. В соответствии с нотацией UML общему атрибуту предшествует знак "+".

Private (Закрытый, секретный) Атрибут не виден никаким другим классам. Классу Employee бу­дет известно значение атрибута Address, и он сможет редактировать его, но класс Company не сможет его ни увидеть, ни изменить. При необходимости он должен попросить у класса Employee разрешение на просмотр или изменение значения этого атрибута, что обычно делается с помо­щью общих операций (см. ниже). В соответствии с нотацией UML закрытый атрибут обозначает­ся знаком "-".

Protected (Защищенный) Атрибут доступен только самому классу и его потомкам. Допустим, что имеются два различных типа сотрудников: с почасовой оплатой и с окладом. Таким образом, мы получаем классы HourlyEmp и SalariedEmp, являющиеся потомками класса Employee. Защи­щенный атрибут Address можно просмотреть или изменить из классов Employee, HourlyEmp и SalariedEmp, но не из класса Company. Нотация UML для защищенного атрибута — знак "#".

Package or Implementation (Пакетный) Атрибут является общим, но только в пределах своего пакета. Допустим, что атрибут Address имеет пакетную видимость. В таком случае он может быть изменен из класса Company, только если этот класс находится в том же пакете. Данный тип види­мости не обозначается никаким специальным значком.

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

Задание метода локализации атрибута

Метод локализации атрибута (containment) показывает, каким образом атрибут хранится в классе.: Возможны три значения этого параметра:

By value (По значению) Предполагается, что атрибут содержится внутри класса. Например, если атрибут относится к типу string, эта строка будет содержаться внутри определения класса.

By reference (По ссылке) Предполагается, что атрибут локализован вне класса, но класс содер-: жит указатель на него. Например, у класса Timecard (Карточка табельного учета) может быть ат-: рибут типа Employee (Сотрудник). Сам объект employee размещен вне объекта timecard. Таки\с образом, этот атрибут является указателем на внешний объект employee.

Unspecified (Не определен) Метод локализации атрибута еще не определен. В этом случае прк генерации кода по умолчанию применяется значение By value этого параметра.

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

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

· В открывшемся меню выберите пункт Open Specification (Открыть спецификацию) или Орегь Standard Specification (Открыть стандартную спецификацию), если вы работаете с Rose 98i. По­явится окно спецификации атрибута класса.

· Перейдите на вкладку Detail (Подробно).

· Укажите значение метода локализации атрибута (containment): By value, By reference или Unspez cified. Значение этого параметра по умолчанию — Unspecified.







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

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