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

UML

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

Диаграмма классов

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

Диаграмма классов представляет собой некоторый граф, вершинами которого являются элементы типа “классификатор”, которые связаны различными типами структурных соотношений.

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

Класс

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

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

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

Атрибуты

Во втором (с верху) разделе класса описываются его атрибуты в следующем виде:

<квантор видимости><имя атрибута>[кратность]:<тип атрибута>=<исходное значение>{строка-свойство} Квантор видимости:

“+” – обозначает общедоступную область видимости (public)

“#” – защищенная область видимости (protected) “–“ – закрытая область видимости (private)

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

Имя атрибута – единственный обязательный параметр.

Кратность атрибута.[0..1], [0..*], [1..5], [2..3, 7..10]. Если кратность атрибута не указана, то она равна [1..1]. Строка-свойство – значение, которое присваивается атрибуту и в дальнейшем не может быть изменено.

Операции

Операции заносятся в третью секцию (сверху) класса в следующем виде:

<квантор видимости><имя операции>(список параметров):<тип возвращаемого значения>{строка-свойство} Список параметров:

<вид параметра><имя параметра>:<тип параметра>=<значение по умолчанию> вид параметра – in, out, inout; Строка-свойство:

{query} –

{concurrency = имя}, где имя sequential, concurrent, quarded (охраняемая – все обращения к данной операции должны быть строго упорядочены по времени для сохранения целостности объектов данного класса. При этом желательно, что были приняты дополнительные методы по контролю исключительных ситуаций в ходе ее выполнения). {abstract}

{signal} – если объекты данного класса и реагируют на некоторый сигнал Также здесь можно записывать дополнительные комментарии.