Добавил:
выбрасываю тут свой мусор, надеюсь, что он кому-то может пригодится... Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP-KONEChNYJ.docx
Скачиваний:
20
Добавлен:
03.12.2023
Размер:
7.72 Mб
Скачать

46. Назначение, формулировка и примеры использования шаблона чистая синтетика.

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

Шаблон чистая выдумка(синтетика) позволяет решить данную проблему, путем введения в программную среду дополнительного класса (не отражающего реальной сущности из предметной области) и наделение его требуемыми обязанностями. Т.е. создать класс сущности, которая в реальном мире не существует – выдуманный класс.

Пример задачи: Не используя средства класса «А», внести его объекты в базу данных.

Решение: Создать класс «Б» для записи объектов класса «А»

В данном случае класс «Б» - выдуманный класс, которого нет в реальном мире. А объект класс «А» - модель реально существующего объекта.

Проблема: шаблон «Эксперт» не обеспечивает подходящего решения и нарушает шаблоны «Высокое зацепление» и «Слабая связанность» или других принципов проектирования

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

Другими словами, согласно шаблону «Чистая синтетика», классы проектируются на основе общей функциональности и представляют собой поведенческие или функционально-ориентированные объекты.

Достоинства:

  • при использовании шаблона «Чистая синтетика» реализуется шаблон «Высокое зацепление», поскольку обязанности передаются отдельному классу, сконцентрированному на решении специфического набора взаимосвязанных задач;

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

(?)47. Правила построения диаграмм последовательностей UML.

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

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

Объекты располагаются слева направо таким образом, чтобы крайним слева был тот объект, который инициирует взаимодействие.

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

На диаграммах последовательности допустимо использование стандартных стереотипов класса:

На диаграммах последовательности допустимо использование стандартных стереотипов класса:

Actor – экземпляр участника процесса (роль на диаграмме прецедентов)

B oundary – Класс-Разграничитель - используется для классов, отделяющих внутреннюю структуру системы от внешней среды (экранная форма, пользовательский интерфейс, устройство ввода-вывода). Объект со стереотипом < отличается от, привычного нам, класса <<Интерфейс>>, который по большей части предназначен для вызова методов класса, с которым он связан. Объект boundary показывает именно экранную форму, которая принимает и передает данные обработчику.

Control – Класс-контроллер - активный элемент, который используются для выполнения некоторых операций над объектами (программный компонент, модуль, обработчик)

Entity – Класс-сущность - обычно применяется для обозначения классов, которые хранят некую информацию о бизнес-объектах (соответствует таблице или элементу БД)

Также одним из основных понятий, связанных с диаграммой последовательности, является Сообщение.

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

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

  • Сообщения, побуждающие объект к действию

  • Действия, которые вызываются сообщениями (методы) – зачастую это передача сообщения следующему объекты или возвращение определенных данных объекта

  • Последовательность обмена сообщениями между объектами

На диаграммах последовательностей внимание акцентируется на временной упорядоченности сообщений.

На диаграмме последовательностей объект изображается в виде прямоугольника на вершине пунктирной вертикальной линии. Эта вертикальная линия называется линией жизни объекта. Она представляет собой фрагмент жизненного цикла объекта в процессе взаимодействия.

Общая форма именования объектов имеет вид «ИмяОбъекта:ИмяКласса», где либо имя объекта, либо имя класса могут отсутствовать.

Каждое сообщение представляется в виде стрелки между линиями жизни двух объектов. Сообщения появляются в том порядке, как они показаны на диаграмме (сверху вниз).

Каждое сообщение должно быть помечено именем. При желании к сообщению можно добавить также аргументы и некоторую управляющую информацию.

Сообщение, которое объект посылает самому себе, называется самоделегированием, при этом стрелка сообщения указывает на ту же самую линию жизни.

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

На разные виды сообщений объект может выполнять различные действия. UML позволяет моделировать сообщения нескольких видов:

  • call - вызывает операцию, применяемую к объекту. Объект может послать сообщение самому себе, что приведет к локальному вызову операции;

  • return - возвращает значение вызывающему объекту;

  • send - посылает объекту сигнал;

  • create - создает новый объект;

  • destroy - удаляет объект.

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

Для указания того, что сообщение посылается много раз, применяется маркер итерации в виде символа «*» или какого-либо другого выражения (например: i=1 to N).

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

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

Типовыми операторами управления являются следующие:

  • opt (необязательный) – тело оператора управления выполняется если выполняется сторожевое условие.

  • alt (условный) – тело оператора управления делится на несколько подобластей, разделенные пунктирными линиями. Каждая такая подобласть выполняется если истинно соответствующее сторожевое условие, которое указано внутри этой подобласти. Если несколько сторожевых условий одновременно окажутся истинными, то какая подобласть будет выполнятся не регламентируется. Одна из подобластей может иметь специальное сторожевое условие [else], которое обеспечивает ее выполнение, если ни одно из сторожевых условий не является истинным.

  • par (параллельный) - тело оператора управления также делится на несколько подобластей, разделенные пунктирными линиями. При этом потоки сообщений в каждой подобласти выполняются параллельно. Внутри каждой подобласти сообщения выполняются последовательно.

  • loop (цикличный) - тело оператора управления выполняется несколько раз пока истинно сторожевое условие.

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

(?)48. Правила построения диаграмм деятельностей UML.

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

То есть если варианты использования ставят перед Системой цель, то диаграмма деятельности показывает последовательность действий, необходимых для ее достижения. Действия (action) это элементарные шаги, которые не предполагают дальнейшую декомпозицию.

Деятельность может содержать входящие и/или исходящие дуги деятельности, показывающие потоки управления и потоки данных. Если поток соединяет две деятельности, он является потоком управления. Если поток заканчивается объектом, он является потоком данных.

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

Чтобы указать, где именно находится процесс, используется абстрактная точка «маркер» (или «токен»). Визуально на диаграмме маркер не показывается, данное понятие вводится только для удобства описания динамического процесса.

Для создания диаграммы деятельности используются следующие узлы:

Узел управления (control node) – это абстрактный узел действия, которое координирует потоки действий

Начальный узел деятельности (или начальное состояние деятельности) (activity initial node) является узлом управления, в котором начинается поток (или потоки) при вызове данной деятельности извне

К онечный узел деятельности (или конечное состояние деятельности) (activity final node) является узлом управления, который останавливает (stop) все потоки данной диаграммы деятельности. На диаграмме может быть более одного конечного узла

К онечный узел потока (или конечное состояние потока) (flow final node) является узлом управления, который завершает данный поток. На другие потоки и деятельность данной диаграммы это не влияет

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

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

В точку ветвления входит ровно один переход, а выходит - два или более. Для каждого исходящего перехода задается булевское выражение, которое вычисляется только один раз при входе в точку ветвления. Ни для каких двух исходящих переходов эти сторожевые условия не должны одновременно принимать значение "истина", иначе поток управления окажется неоднозначным. Желательно чтобы условия покрывали все возможные варианты, иначе поток остановится.

Далее следует обратить внимание на такой элемент, как узел объединение. Узел объединения имеет два и более входящих узла и один исходящий.

Точка разделения обеспечивает разделение одного потока на несколько параллельных потоков:

  • входит ровно один поток;

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

Точка слияния обеспечивает синхронизацию нескольких параллельных потоков.

  • входят два или более потока, причем эти потоки выполняются параллельно;

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

Передача сигнала (send signal action) - действие, которое на основе своих входов создает экземпляр сигнала и передает его внешней Системе.

Прием события (receive event action) - действие, которое ожидает некоторого события, принимает и обрабатывает полученное сообщение.

Центральный буфер - объект, который управляет потоками между множественными источниками и приемниками. На диаграмме центральный буфер представляется в виде объекта со стереотипом <.

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

На диаграмме деятельности могут быть включены ветвления, которые описывает различные пути выполнения в зависимости от значения некоторого булевского выражения. Точка ветвления представляется ромбом. В точку ветвления может входить ровно один переход, а выходить - два или более. Для каждого исходящего перехода задается булевское выражение, которое вычисляется только один раз при входе в точку ветвления. Ни для каких двух исходящих переходов эти сторожевые условия не должны одновременно принимать значение «истина», иначе поток управления окажется неоднозначным.

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

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

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

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

При моделировании динамических аспектов системы диаграммы деятельности применяются в основном двумя способами:

1. Для моделирования рабочего процесса. Здесь внимание фокусируется на деятельности с точки зрения актеров, взаимодействующих с системой. Рабочие процессы часто оказываются с внешней, обращенной к пользователю стороны программной системы и используются для визуализации, специфицирования, конструирования и документирования бизнес-процессов, составляющих существо разрабатываемой системы.

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

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

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

Если результатом выполнения деятельности является несколько объектов-значений или если за ней следует несколько потоков управления, то стрелки начинаются от знака разделения. Точно так же, в случае наличия нескольких входных значений, стрелки заканчиваются на знаке слияния.

Соседние файлы в предмете Объектно-ориентированное программирование