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