2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 26
Текст из файла (страница 26)
Например, вы можете указать, что нужно использовать дерево определенного сорта,более устойчивое перед вредными насекомыми.Все то же самое относится и к построению программных систем.ОбязанносНа ранней стадии проекта достаточно включить в систему, к прити обсужмеру, класс Customer (Покупатель), который будет выполнять опредаютсяделенные обязанности. По мере уточнения архитектуры и переходав главе 6.к конструированию вам придется принимать решения относительно структуры и поведения класса (соответственно, его атрибутови операций), которые необходимы для выполнения классом своихобязанностей. И наконец, когда вы доберетесь до исполняемой системы, вам понадобится смоделировать такие детали, как видимостьотдельных атрибутов и операций, семантика параллелизма классав целом и его отдельных операций, а также интерфейсы, которыеон реализует.UML предусматривает представление множества расширенныхПрямоеи обратноесвойств, как показывает рис.
9.1. Эта нотация позволяет вам визуапроектиролизировать, специфицировать, конструировать и документироватьвание обсуж- классы на любом уровне детализации, достаточном для поддержкидаетсяпрямого и обратного проектирования моделей и кода.в главах 8,14, 18, 19, 20,25, 30 и 31.статический атрибутРис. 9.1. Расширенные классыВведениеАрхитектура системобсуждается в главе 2.В начале проектирования дома вы принимаете решение о строительных материалах. Сперва речь идет просто о дереве, камнеили стали – это уровень детализации, достаточный для продолжения работ. Выбор материала диктуется требованиями проекта:например, сталь и бетон подходят для строительства в местностях,подверженных ураганам.
Определенный вами на начальном этапеБазовые понятияКлассификатор (classifier) – это механизм, описывающий структурные и поведенческие свойства. К классификаторам относятсяклассы, ассоциации, интерфейсы, типы данных, сигналы, компоненты, узлы, варианты использования и подсистемы.Расширенные классы136КлассификаторыМоделирование словарясистемыобсуждается в главе 4,дихотомиякласс/объект – в главе 2.В процессе моделирования вы исследуете абстракции, представляющие сущности реального мира и сущности, являющиесясоставными частями вашего решения. Например, если вы строитеWebFориентированную систему обработки заказов, то словарь вашего проекта, вероятно, будет включать классы Customer (Покупатель) и Transaction (Транзакция). Первый описывает людей, заказывающих продукцию, а второй реализует артефакт, представляющийатомарное действие.
В развернутой системе вы можете ввести компонент Pricing (Цены) с экземплярами, находящимися в каждомклиентском коде. У каждой из этих абстракций будут свои экземпляры. Разделение сущностей и экземпляров сущностей – важнаячасть моделирования.ЭкземплярыНекоторые элементы в UML – например, пакеты или связиобсуждают- обобщения – не имеют экземпляров. Те же элементы моделирося в главе 13, вания, которые имеют экземпляры, являются классификаторами.пакеты –Но более важный их признак – наличие как структурных свойствв главе 12,(в форме атрибутов), так и поведенческих (в форме операций).
Всеобобщения – экземпляры классификатора обладают общими свойствами, но прив главах 5этом каждый имеет свое собственное значение для каждого атрии 10, сообще- бута.ния – в глаНаиболее важный вид классификаторов в UML – это класс,ве 16,представляющий собой описание набора объектов с одинаковымиинтерфейатрибутами, операциями, связями и семантикой.
Однако классы –сы – в глане единственная разновидность классификаторов. UML представве 11, типыляет множество других видов, немаловажных для моделирования:данных –в главах 4и 11,сигналы –в главе 21,компоненты – в главе 15, узлы –в главе 27,вариантыиспользования – в главе 17,подсистемы – в главе 32. интерфейс – набор операций, используемых для спецификации сервиса класса или компонента; тип данных – тип, значения которого неизменны.
Примеры:примитивные встроенные типы (числа, строки и др.), типыперечислений (Boolean и др.). ассоциация – описание набора ссылок, каждая из которыхсоединяет ряд объектов; сигнал – спецификация асинхронного сообщения, передаваемого между экземплярами; компонент – модульная часть системы, скрывающая своюреализацию за набором внешних интерфейсов; узел – физический элемент, существующий во время исполнения и представляющий вычислительный ресурс, которыйобычно наделен по меньшей мере некоторой памятью и часто – вычислительными возможностями; вариант использования – описание последовательности действий (включая их разновидности), осуществляемых системойБазовые понятия137и порождающих значимый результат для определенногодействующего лица; подсистема – компонент, представляющий главную частьсистемы.Как правило, каждый вид классификаторов может иметь какструктурные, так и поведенческие свойства.
Более того, при моделировании системы с помощью любого из этих классификатороввы можете использовать все расширенные свойства, описанныев настоящей главе, чтобы обеспечить уровень детализации, достаточный для передачи смысла абстракции.Графически UML представляет все эти виды классификаторовтак, как показано на рис.
9.2.«interface»Stateful«type»«signal»set (v:Object)get (): Objectвариант использованияLoan ApprovalCall Handing«subsystem»Рис. 9.2. КлассификаторыНа заметку. Минималистский подход потребовал бы использования одной пиктограммы для всех видов классификаторов, а тенденция к максимализму, – наоборот, использованияособой пиктограммы для каждого вида.
Оба эти вариантане имеют смысла, потому что, с одной стороны, к классификаторам относится слишком много элементов, а с другой,некоторые из них, например классы и типы данных, не так ужсильно различаются. В UML соблюдается разумный баланс:ряд классификаторов имеет свои собственные пиктограммы,а для различения других используются специальные ключевые слова (в частности, type, signal и subsystem).Расширенные классы138Базовые понятияВидимостьВидимость (visibility) – одна из деталей дизайна, которую вы можете определить для атрибута или операции.
Это свойство, указывающее на возможность использования данного атрибута или операции другими классификаторами. В UML можно специфицироватьчетыре уровня видимости:1. public (открытый). Любой внешний классификатор, котороКлассификаму виден данный, может использовать это свойство. Обознатор можетчается символом + перед именем атрибута или операции.видеть2.protected (защищенный).
Любой наследник классификаторадругой класможетиспользовать данное свойство. Обозначается симвосификатор,лом#(решетка)перед именем атрибута или операции.если он3.private(закрытый).Данное свойство может использоватьнаходитсятолькосамклассификатор.Обозначается символом – (дев областифис)передименематрибутаили операции.действияpackage(пакетный).Толькоклассификаторы,объявленные4.и есливтомжепакете,могутиспользоватьданноесвойство.Обозначаетсясуществуетсимволом ~ (тильда) перед именем атрибута или операции.явная илиНа рис.
9.3 показана совокупность открытых, защищенных и занеявнаякрытых атрибутов и операций класса Toolbar.связь междуними; связиобсуждаются в главах 5 и 10;наследникипроисходятиз связейобобщения,как описанов главе 5;права доступа позволяют классификаторуразделятьего закрытые свойства с другими,как описанов главе 10.139Область действия экземпляра и статическаяобласть действияЭкземплярыобсуждаются в главе 13.Еще одна важная деталь, которую вы можете задать для атрибутов и операций вашего классификатора, – область действия (scope).Область действия свойства указывает на то, может ли каждый экземпляр данного классификатора иметь собственное значение этого свойства либо должно существовать только одно его значение,разделенное всеми экземплярами классификатора.
В UML существуют два типа области действия:1. instance – область действия экземпляра. Каждый экземпляр классификатора имеет собственное значение свойства. Этот вариантпринят по умолчанию и не требует дополнительной нотации;2. static – статическая область действия, или область действиякласса (class scope). Предусмотрено только одно значениесвойства для всех экземпляров классификатора.Рис.
9.4 – это упрощенный вариант рис. 9.1. Здесь показан атрибут со статической областью действия, о чем свидетельствует подчеркивание его имени. Для отображения области действия экземпляра не используются никакие дополнения.статическаяобластьдействияРис. 9.4. Область действияпакетный- reconfigure()Рис. 9.3. ВидимостьУказывая видимость средств классификатора, вы обычно скрываетедетали его реализации и делаете видимыми только те свойства, которыенеобходимы для исполнения им своих обязанностей абстракции. Этооснова скрытия информации, обеспечивающая построение прочнойустойчивой системы. Если вы не снабжаете свойство символом видимости явным образом, то по умолчанию принимается значение public.На заметку.