Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
компьютерная техника (конспектировать ).docx
Скачиваний:
69
Добавлен:
05.11.2018
Размер:
1.56 Mб
Скачать

Параметры

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

Если параметр передается или возвращается только при определенных обстоятельствах (т.е. это условный параметр), вок обозначается прерывистыми линиями.

Если несколько параметров того же самого значения и типа являются вводом (или выводом) операции, диаграмма может быть сжата благодаря применению повторной нотации, иллюстрируемой воками операции Найти Дни Между Датами, показанной на рис.3.2.1. Здесь число "2" указывает, что для операции предоставляются ровно два параметра даты.

Обратите внимание, что параметры здесь формальные. Например, результат "значение", даваемый в верхней половине вока, - это имя для формального параметра, выбранного так, чтобы быть значимым для пользователя класса.

Базис операции и упорядочивание воков

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

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

Отсрочка

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

Если общедоступная операция является отсрочивающейся, то рамка, содержащая имя операции, изображается точечными линиями (рис.3.2.2). Отсроченные операции, которые определяются в соответствии с отсрочивающейся, изображают на других диаграммах классов, используя обычную нотацию общедоступной операции.

Связывание во время компиляции против связывания во время выполнения

В OOА общепринято определять общедоступные операции с тем же именем в нескольких различных классах. В такой ситуации выбор как раз той операции, которая вызывается, изменяется в зависимости от языка. В Smalltalk этот выбор определяется во время выполнения и основан на динамическом типе экземпляра - классе, в котором экземпляр был создан. Наоборот, в Аде это определение осуществляется в процессе компиляции и основано на статическом (объявленном) типе экземпляра. Более сложная ситуация существует в языке C++, в котором поддерживаются обе возможности.

Для того чтобы различать операции, которые связываются соответственно во время компиляции и во время .выполнения (виртуальная функция в C++), отмечают внешнее ребро рамки операции двойной чертой, если она связывается во время выполнения. Это нотация иллюстрируется на рис.6.2.1 (этого приложения) общедоступными операциями Обычный Текущий Счет. Дебетовать плату за обслуживание и Текущий Счет С Начислением Процентов. Дебетовать плату за обслуживание.

Рис.3.2.2. Дтаграмма класса, которая иллюстрирует представление абстрактных классов, условия исключения и отсрочивающиеся операции.

Исключения

Если общедоступная операция может возбуждать одну и. более исключительную ситуацию, которую, как ожидают, . будет обрабатывать источник вызова, то каждое условие исключения показывают в отдельном ромбе на внутренней грани операции, как изображено на рис.3.2.2. Это компактное представление заимствовано из OOSD [6].

3.3 Альтернативные представления

Как альтернативный вариант точечного вока можно аннотировать вок символом "у", для того чтобы указать, что параметр условный. Это аналогично представлению условной связи в ООА.

Для диаграмм, нарисованных от руки, "грейфер" (маленький овал, разделенный горизонтальной линией) представляв собой хороший заменитель для вока.

4 Схема структуры класса

4.1 Назначение

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

4.2 Символика

Схема структуры класса, подобно традиционной схеме структуры, основана на понятии модуля: фрагменте кода, который вызывается и, когда закончен, возвращает управление источнику вызова. Каждый модуль представляется прямоугольником (или пятиугольником-козырьком, как описано ниже) на схеме структуры класса, как показано на рис.4.2.1.

Вызов

Модуль может вызывать один или несколько других модулей. Вызов изображается на схеме структуры класса стрелкой от вызывающего модуля к вызываемому. Любые данные, как входные, так и выходные, представляются воком со значением и типом, не противоречащими символике диаграммы классов. Стрелка, присоединенная к воку, сообщает направление потока данных. Если входные данные изменяются и затем возвращаются источнику вызова, вок, несущий эти данные, будет иметь две присоединенные стрелки: одну, показывающую входное направление, и другую, показывающую выходное. Если ввод/(или вывод) производится только при определенных обстоятельствах, вок изображается с точечной границей.