Активный класс (active class) имеет экземпляры, каждый из которых выполняет и управляет собственным потоком управления. Вызовы методов могут выполняться в клиентском потоке или в потоке активного объекта. Удачным примером может служить командный процессор, который принимает извне командные объекты, а затем исполняет команды в контексте собственного потока управления.
Как видно из рис. 5.21, при переходе от UML 1 к UML 2 нотация активных классов изменилась. В UML 2 активный класс обозначен дополнительными вертикальными линиями по краям; в UML 1 он имел толстую границу и назывался активным объектом.
Видимость
Видимость (visibility) - это понятие простое по существу, но содержащее сложные нюансы. Идея заключается в том, что у любого класса имеются открытые (public) и закрытые (private) элементы. Открытые элементы могут быть использованы любым другим классом, а закрытые элементы - только классом-владельцем. Однако в каждом языке действуют свои правила. Несмотря на то что во многих языках употребляются такие термины, какриЬИс (открытый), private (закрытый) крго-tected (защищенный), в разных языках они имеют различные значения. Эти различия невелики, но они приводят к недоразумениям, особенно у тех, кто использует в своей работе более одного языка программирования.
|
|
В языке UML делается попытка решить эту задачу, не устраивая жуткую путаницу. По существу, в рамках UML для любого атрибута или операции можно указать индикатор видимости. Для этой цели можно использовать любую подходящую метку, смысл которой определяется тем или иным языком программирования. Тем не менее в UML предлагается четыре аббревиатуры для обозначения видимости: + (public -открытый), - (private - закрытый), - (package - пакетный) и п (protected - защищенный). Эти четыре уровня определены и используются в рамках метамодели языка UML, но их определения очень незначительно отличаются от соответствующих определений в других языках программирования
При использовании видимости применяйте правила того языка программирования, на котором вы работаете. Рассматривая модель в UML с какой-нибудь точки зрения, аккуратно расшифровывайте значения маркеров видимости и старайтесь понять, как эти значения могут измениться при переходе от одного языка программирования к другому.
В подавляющем большинстве случаев я не рисую на диаграммах маркеры видимости; я их использую, только если необходимо подчеркнуть различия в видимости определенных свойств. И даже в таких случаях я могу, как правило, обойтись без + и -, которые, по крайней мере, достаточно легко запомнить.