- •Методология объектно-ориентированного анализа и проектирования
- •Модель предметной области
- •Идентификация концептуальных классов
- •Основные элементы языка uml
- •Канонические диаграммы языка uml.
- •Элементы графической нотации диаграммы прецедентов.
- •Отношения на диаграмме прецедентов
- •Отношения на диаграмме прецедентов
- •Отношения и их графические изображения на диаграмме классов
- •Отношение ассоциации
- •Типы ассоциаций
- •Типы классов
- •Отношение агрегации
- •Отношение композиции
- •Отношение обобщения
- •Наследование и виртуальные функции
Отношения на диаграмме прецедентов
Отношения на диаграмме прецедентов
Актеры взаимодействуют с системой посредством передачи и приема сообщений от прецедента.
Сообщение – запрос сервиса актером от системы, и получение этого сервиса. Такое взаимодействие между элементами модели на языке UML изображается в виде отношений пяти типов:
Ассоциация
Отношение зависимости (dependency)
2.1) Включение (include)
2.2) Расширение (extend)
3) Обобщение, генерализация (generalization)
Ассоциация – одному из фундаментальных понятий в языке UML и используется при построении почти всех графических моделей систем в виде канонических диаграмм. Применительно к диаграмме прецедентов, ассоциация служит для обозначения специфической роли актера при его взаимодействии с отдельным прецедентом. Обозначается сплошной линией со стрелкой или без стрелки (ненаправленное и направленное ассоциирование). Если ассоциация направленная и стрелка идет от актера, то это актер начинает действие, запрашивая какой-либо сервис от системы. Если наоборот, то система предоставляет информацию актеру для реализации. Отношение ассоциации между актером и прецедентом может указывать на то, что актер инициирует соответствующий прецедент. Такого актера, называют основным (главным). В других случаях система может указывать на актера, которому предоставляется справочная информация о результатах функционирования моделируемой системы. Такой актер называется вспомогательным.
Отношение зависимости – такой тип отношений между двумя элементами модели, при котором изменение одного элемента, называемого независимым, приводит к изменению другого элемента, называемого зависимым. Оно обозначается пунктирной линией, объединяющей два элемента модели.
2.1) Отношение включения – разновидность отношения зависимости только между двумя прецедентами. То есть между базовыми прецедентами и его специальным случаем. Такой вид отношения указывает на то, что заданное поведение для одного прецедента включается в качестве составного фрагмента в последовательность поведения другого прецедента. Таким образом, процесс выполнения базового прецедента включает в себя как собственное подмножество последовательностей действий, которая определена для включаемого прецедента, при этом выполнение включаемой последовательности действий происходит всегда при инициировании базового прецедента. Обозначается пунктирной линией со стрелкой, идущей от базового прецедента (зависимого), к его специальному случаю (независимому) прецеденту. Помечается стереотипом <<include>>. Один прецедент может входить в несколько других прецедентов, а также содержать в себе другие прецеденты. Включаемый прецедент является независимым от базового в том смысле, что он предоставляет базовому прецеденту инкапсулированное поведение, детали и реализации которого скрыты от базового прецедента и могут быть егко перераспределены. Кроме того, базовый прецедент зависит только от результатов выполне ния включаемого в него прецедента, но не от структуры включаемы в него прецедентов.
2.2) Расширение тоже является отношением зависимости и определяет взаимосвязь базового прецедента с некоторым другим прецедентом, функциональное поведение которого задействуется базовым прецедентом не всегда, а только при выполнении дополнительных условий. Обозначается пунктирной линией со стрелкой, указывающей на базовый прецедент. В данном виде отношений базовый прецедент является независимым, и стрелкой объединяется с базовым прецедентом в так называемой точке расширения (<<extend>>)
Пропуск…
Варианты графического изображения класса на диаграмме классов
Но если атрибуты или операции не существуют, то их секции должны быть обязательно указаны.
Вторая секция называется секцией атрибутов и на ней представлены атрибуты класса. Атрибут класса служит для представления отдельной структурой характеристики или свойства, которое является общим для всех объектов класса. Каждому атрибуту класса соответствует отдельная строка текста, общий формат которой записывается в следующей форме:
<Квантор видимости><имя_атрибута>:<[кратность]><тип_атрибута> = <исходное_значение>
{строка-свойство}
Видимость элементов класса на языке UML фиксируется в виде следующих кванторов:
+ (public) – обозначает атрибут с областью видимости типа «общедоступный». Атрибут с такой областью видимости доступен или видим из любого другого класса в пределах данной диаграммы классов.
– (private) – обозначает атрибут с областью видимости типа «закрытый». Атрибут с такой областью видимости недоступен или невидим для всех классов, без исключения.
# (protected) – обозначает атрибут с областью видимости типа «защищенный». Атрибут с такой областью видимости невидим или недоступен для всех классов, кроме подклассов данного класса.
~ (package) – обозначает атрибут с областью видимости типа «пакетный». Атрибут с такой областью видимости видим только в рамках пакета.
В данном формате атрибутов единственным обязательным элементом является имя атрибута. Имя атрибута представляет собой строку текста, которая используется в качестве идентификатора соответствующего атрибута, и потому должна быть уникальной в пределах данного класса. Имя атрибута должно начинаться со строчной буквы и, как правило, пишется без пробелов.
Кратность атрибута характеризует общее количество конкретных значений для атрибута, которые могут быть заданы для объектов данного класса. В общем случае кратность записывается в виде строки текста из цифр в квадратных скобках, после имени атрибута. При этом цифры разделяются двумя точками в следующем виде: [нижняя_граница..верхняя_граница], где нижняя и верхняя границы – положительные целые числа. В качестве верхней границы может быть использован символ ‘*’, обозначающий произвольное положительное целое число, то есть неограниченное сверху значение кратности, для данного атрибута. Если в качестве кратности указывается единственное число, то кратность атрибута принимается равной данному числу. Если указывается единственный знак ‘*’, то это означает, что кратность атрибута может быть произвольным положительным целым числом или нулем.
Тип атрибута представляет собой выражение, семантика которого определяется некоторым встроенным типом данных самого языка UML или языка, на котором, предполагается, будет реализована разработанная модель системы или определяется самим разработчиком. В секции атрибутов тип атрибута пишется с заглавной буквы.
Исходное значение или значение по умолчанию – некоторое выражение, которое служит для задания начального значения или значений конкретного атрибута в момент создания отельного экземпляра соответствующего класса. Если исходное значение не указано, то значение соответствующего атрибута не определено на момент создания нового экземпляра класса. С другой стороны, конструктор объекта может переопределять исходное значение в процессе выполнения программы.
Пояснительный текст в фигурных скобках может означать следующее: если в этой строке имеется знак равенства, то вся запись {строка-свойство} служит для указания дополнительных свойств атрибута, которые могут характеризовать особенности изменения значений атрибута в ходе выполнения программы. Таким образом, {} обозначают фиксированное значение соответствующего атрибута для класса в целом. Значение фиксированное, которые должны принимать все создаваемые экземпляры класса без исключения. Это значение принимается за исходное значение атрибута, которое не может быть переопределено в последующем. Отсутствие строки свойства по умолчанию трактуется так, что значение соответствующего атрибута может быть изменено в программе.
Некоторые значения атрибутов, которые могут быть написаны в строке-свойстве:
readOnly – атрибут является только для чтения.
redefines <имя атрибута> - атрибут переопределяет некоторый наследуемый атрибут.
ordered – значения атрибута являются упорядоченными.
unique – значения многозначного атрибута не могут повторяться. Предполагается, что кратность соответствующего атрибута должна быть больше 1.
Примеры:
+ имяСотрудника : String {readOnly}
– датаРождения : Data {readOnly}
# возрастСотрудника : Integer
+ номерТелефона : Integer [1..*] {unique} (можно просто [*])
– заработнаяПлата : Currency = 500.00
