Ответы к экзамену (Технология программирования)
.pdfКласс «Компания» и класс «Сотрудник» связаны между собой бинарной ассоциацией «Работает», имя которой указано на рисунке рядом с линией ассоциации. Для данного отношения определен следующий порядок чтения следования классов – «сотрудник работает в компании».
НАПРАВЛЕННАЯ БИНАРНАЯ АССОЦИАЦИЯ изображается сплошной линией с простой стрелкой на одной из ее концевых точек. Направление этой стрелки указывает на то, какой класс является первым, а какой – вторым.
Рисунок 38. Изображение ненаправленной бинарной ассоциации
Класс «Клиент» и класс «Счёт» связаны между собой бинарной ассоциацией с именем Имеет, для которой определен порядок следования классов. Это означает, что конкретный объект класса Клиент всегда должен указываться первым при рассмотрении взаимосвязи с объектом класса Счет. Другими словами, эти объекты классов образуют кортеж элементов, например, <клиент, счет_1, счет_2,…, счёт_n>.
ИСКЛЮЧАЮЩАЯ АССОЦИАЦИЯ (Xor-association) указывает на то, что из нескольких потенциально возможных вариантов данной ассоциации в каждый момент времени может использоваться только один. На диаграмме классов исключающая ассоциация изображается пунктирной линией, соединяющей две и более ассоциации, рядом с которой записывается ограничение в форме строки текста в фигурных скобках: {xor}.
Рисунок 39. Изображение исключающей ассоциации
ТЕРНАРНАЯ АССОЦИАЦИЯ связывает отношением три класса.
51
Рисунок 40. Изображение тернарной ассоциации
ОБОБЩЕНИЕ (generalization) - таксономическое отношение между более общим понятием и менее общим понятием. Данное отношение описывает иерархическое строение классов и наследование их свойств и поведения.
НАСЛЕДОВАНИЕ (inheritance) - специальный концептуальный механизм, посредством которого более специальные элементы включают в себя структуру и поведение более общих элементов.
РОДИТЕЛЬ, ПРЕДОК (parent) - в отношении обобщения более общий элемент.
ПОТОМОК (child) - специализация одного из элементов отношения обобщения, называемого в этом случае родителем.
На диаграммах отношение обобщения обозначается сплошной линией с треугольной стрелкой на одном из концов. Стрелка указывает на более общий класс (класс-предок или суперкласс), а ее начало - на более специальный класс (класс-потомок или подкласс).
Рисунок 41. Изображение отношения обобщения
52
Рисунок 42. Изображение отношения обобщения для нескольких классовпотомков
В дополнение к простой стрелке обобщения может быть присоединена строка текста, указывающая на специальные свойства этого отношения в форме ограничения. Этот текст будет относиться ко всем линиям обобщения, которые идут к классам-потомкам, и записывается в фигурных скобках:
{complete}- означает, что в данном отношении обобщения специфицированы все классы-потомки, и других классов-потомков у данного класса-предка быть не может;
{incomplete}- означает случай, противоположный первому. А именно, предполагается, что на диаграмме указаны не все классы-потомки. В последующем возможно разработчик восполнит их перечень, не изменяя уже построенную диаграмму;
{disjoint}- означает, что классы-потомки не могут содержать объектов, одновременно являющихся экземплярами двух или более классов;
{overlapping}- случай, противоположный предыдущему. А именно, предполагается, что отдельные экземпляры классов-потомков могут принадлежать одновременно нескольким классам.
53
Рисунок 43. Изображение дополненного отношения
22.*ДИАГРАММА КЛАССОВ. ОТНОШЕНИЕ ОБОБЩЕНИЯ
ДИАГРАММА КЛАССОВ (class diagram) — диаграмма языка UML, на которой представлена совокупность декларативных или статических элементов модели, таких как классы с атрибутами и операциями, а также связывающие их отношения. Она предназначена для представления статической структуры модели системы в терминологии классов ООП. Она может содержать интерфейсы, пакеты, отношения, отдельные экземпляры классификаторов (объекты и связи).
ОБОБЩЕНИЕ (generalization) - таксономическое отношение между более общим понятием и менее общим понятием. Данное отношение описывает иерархическое строение классов и наследование их свойств и поведения.
НАСЛЕДОВАНИЕ (inheritance) - специальный концептуальный механизм, посредством которого более специальные элементы включают в себя структуру и поведение более общих элементов.
РОДИТЕЛЬ, ПРЕДОК (parent) - в отношении обобщения более общий элемент.
ПОТОМОК (child) - специализация одного из элементов отношения обобщения, называемого в этом случае родителем.
На диаграммах отношение обобщения обозначается сплошной линией с треугольной стрелкой на одном из концов. Стрелка указывает на более
54
общий класс (класс-предок или суперкласс), а ее начало - на более специальный класс (класс-потомок или подкласс).
Рисунок 44. Изображение отношения обобщения
Рисунок 45. Изображение отношения обобщения для нескольких классовпотомков
В дополнение к простой стрелке обобщения может быть присоединена строка текста, указывающая на специальные свойства этого отношения в форме ограничения. Этот текст будет относиться ко всем линиям обобщения, которые идут к классам-потомкам, и записывается в фигурных скобках:
{complete}- означает, что в данном отношении обобщения специфицированы все классы-потомки, и других классов-потомков у данного класса-предка быть не может;
{incomplete}- означает случай, противоположный первому. А именно, предполагается, что на диаграмме указаны не все классы-потомки. В последующем возможно разработчик восполнит их перечень, не изменяя уже построенную диаграмму;
{disjoint}- означает, что классы-потомки не могут содержать объектов, одновременно являющихся экземплярами двух или более классов;
{overlapping}- случай, противоположный предыдущему. А именно, предполагается, что отдельные экземпляры классов-потомков могут принадлежать одновременно нескольким классам.
55
23. *ДИАГРАММА КЛАССОВ. ОТНОШЕНИЕ АГРЕГАЦИИ И ОТНОШЕНИЕ КОМПОЗИЦИИ
ДИАГРАММА КЛАССОВ (class diagram) — диаграмма языка UML, на которой представлена совокупность декларативных или статических элементов модели, таких как классы с атрибутами и операциями, а также связывающие их отношения. Она предназначена для представления статической структуры модели системы в терминологии классов ООП. Она может содержать интерфейсы, пакеты, отношения, отдельные экземпляры классификаторов (объекты и связи).
АГРЕГАЦИЯ - специальная форма ассоциации, которая служит для представления отношения типа "часть-целое" между агрегатом (целое) и его составной частью.
Отношение агрегации имеет место между несколькими классами в том случае, если один из классов представляет собой сущность, которая включает в себя в качестве составных частей другие сущности.
Графически отношение агрегации изображается сплошной линией, один из концов которой представляет собой не закрашенный внутри ромб. Этот ромб указывает на тот класс, который представляет собой "целое" или классконтейнер. Остальные классы являются его "частями":
56
Рисунок 46. Изображение отношения агрегации
КОМПОЗИЦИЯ (composition) - разновидность отношения агрегации, при которой составные части целого имеют такое же время жизни, что и само целое. Эти части уничтожаются вместе с уничтожением целого.
КОМПОЗИТ (composite) - класс, который связан отношением композиции с одним или большим числом классов.
Графически отношение композиции изображается сплошной линией, один из концов которой представляет собой закрашенный внутри ромб. Этот ромб указывает на тот класс, который представляет собой класс-композит. Остальные классы являются его "частями":
Рисунок 47. Изображение композиции
Для отношений композиции и агрегации могут использоваться дополнительные обозначения, применяемые для отношения ассоциации. А именно, могут указываться кратности отдельных классов, которые в общем случае не обязательны. Применительно к описанному выше примеру класс Окно программы является классом-композитом, а взаимосвязи составляющих его частей могут быть изображены следующей диаграммой классов.
Рисунок 48. Диаграмма классов для иллюстрации отношения композиции на примере класса-композита
57
24. *ЯЗЫК МОДЕЛИРОВАНИЯ UML. ДИАГРАММА СОСТОЯНИЙ. ТРИГГЕРНЫЕ И НЕТРИГГЕРНЫЕ ПЕРЕХОДЫ
Для моделирования поведения системы во времени используют диаграмму состояний (statechart) и диаграмму действий (activity).
Диаграмма состояний показывает состояние одного объекта.
Состояние изображается прямоугольником с закругленными углами, переход – сплошной линией со стрелкой. Закрашенный круг соответствует начальной точке последовательности состояний, а обведенный круг («глазок») представляет конечную точку.
Переменные состояния – таймеры, счётчики.
Стандартные виды деятельности:
Вход (что происходит, когда система входит в состояние);
Выход (что происходит, когда система выходит из состояния);
Выполнение (что происходит, когда система находится в состоянии).
Взависимости от вида происходящих событий-стимулов в UML различают
типы переходов:
ТРИГГЕРНЫЙ ПЕРЕХОД (его специфицирует событие-триггер, связанное с внешними условиями по отношению к рассматриваемому состоянию);
Нетриггерный переход (он происходит по завершении выполнения дудеятельности в данном состоянии).
58
Рисунок 49. Триггерный и нетриггерные переходы
Изображенный фрагмент диаграммы состояний моделирует изменение состояний банкомата при проверке ПИН-кода. Нетриггерные переходы на данной диаграмме помечены сторожевыми условиями, которые исключают конфликт между ними. Что касается триггерного перехода, помеченного событием отмена транзакции, то он происходит независимо от проверки ПИН-кода в том случае, когда клиент решил отказаться от ввода ПИН-кода.
ВЫРАЖЕНИЕ ДЕЙСТВИЯ (action expression) - вызов операции или передачу сообщения, имеет атомарный характер и выполняется сразу после срабатывания соответствующего перехода до начала действий в целевом состоянии. Выражение действия выполняется только в том случае, когда переход срабатывает. Данное выражение записывается после знака "/"в строке текста, присоединенной к соответствующему переходу.
Рисунок 50. Выражение действия перехода на диаграмме состояний
Отображение сообщения на экране банкомата в том случае, когда запрашиваемая клиентом сумма превосходит остаток на его счету. В случае если кредит не превышен, то происходит переход в состояние получения наличных.
СИНХРОНИЗИРУЮЩЕЕ СОСТОЯНИЕ обозначается небольшой окружностью, внутри которой помещен символ звездочки "*". Оно используется совместно
59
с переходом-слиянием или переходом-разделением для того, чтобы явно указать события в других конечных подавтоматах, оказывающие непосредственное влияние на поведение данного подавтомата.
25. *ЯЗЫК МОДЕЛИРОВАНИЯ UML. ДИАГРАММА ДЕЙСТВИЙ. РАЗДЕЛЕНИЕ И СЛИЯНИЕ ПОТОКОВ УПРАВЛЕНИЯ
ДИАГРАММЫ ДЕЙСТВИЙ (activity diagrams) отражают динамику проекта и представляют собой схемы потоков управления в системе от действия к действию, а также параллельные действия и альтернативные потоки.
В конкретной точке жизненного цикла диаграммы действий могут представлять потоки между функциями или внутри отдельной функции. На разных этапах жизненного цикла они создаются для отражения последовательности выполнения операции.
Рисунок 51. Нотация UML для элементов диаграммы действий
60