Вы находитесь на странице: 1из 4

1 Язык UML

Концептуальной основой объектно-ориентированного анализа и проектирования ПО


(ООАП) является объектная модель. Ее основные принципы – абстрагирование,
инкапсуляция, модульность и иерархия, понятия – объект, класс, атрибут, операция,
интерфейс.
Большинство современных методов ООАП основаны на использовании языка UML.
Унифицированный язык моделирования UML (Unified Modeling Language) представляет
собой язык для определения, представления, проектирования и документирования
программных систем, организационно-экономических систем, технических систем и других
систем различной природы. UML содержит стандартный набор диаграмм и нотаций самых
разнообразных видов.
UML – это преемник того поколения методов ООАП, которые появились в конце 1980-х
и начале 1990-х годов. UML является прямым объединением и унификацией методов Буча,
Рамбо и Якобсона, однако дополняет их новыми возможностями. Главными в разработке
UML были следующие цели:
− предоставить пользователям готовый к использованию выразительный язык
визуального моделирования, позволяющий им разрабатывать осмысленные
модели и обмениваться ими;
− предусмотреть механизмы расширяемости и специализации для расширения
базовых концепций;
− обеспечить независимость от конкретных языков программирования и
процессов разработки.
− обеспечить формальную основу для понимания этого языка моделирования
(язык должен быть одновременно точным и доступным для понимания, без
лишнего формализма);
− стимулировать рост рынка объектно-ориентированных инструментальных
средств;
− интегрировать лучший практический опыт.
UML находится в процессе стандартизации, проводимом OMG (Object Management
Group) – организацией по стандартизации в области объектно-ориентированных методов и
технологий, в настоящее время принят в качестве стандартного языка моделирования и
получил широкую поддержку в индустрии ПО. Полное описание UML можно найти на
сайтах http://www.omg.org и http://www.rational.com.
Стандарт UML содержит следующий набор диаграмм:

Структурные (structural) модели:


− диаграммы классов (class diagrams);
− диаграммы компонентов (component diagrams);
− диаграммы размещения (deployment diagrams).
Модели поведения (behavioral):
− диаграммы вариантов использования (use case diagrams);
− диаграммы взаимодействия (interaction diagrams);
− диаграммы последовательности (sequence diagrams) и кооперативные
диаграммы (collaboration diagrams);
− диаграммы состояний (statechart diagrams);
− диаграммы деятельности (activity diagrams).

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

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

Классы

Класс (class) в языке UML служит для обозначения множества объектов, которые
обладают одинаковой структурой, поведением и отношениями с объектами других классов.
Графически класс изображается в виде прямоугольника, который дополнительно может быть
разделен горизонтальными линиями на разделы или секции. В этих разделах могут
указываться имя класса, атрибуты (переменные) и операции (методы).
Имя класса указывается в первой верхней секции прямоугольника. Класс может не иметь
экземпляров или объектов. В этом случае он называется абстрактным классом, а для
обозначения его имени используется курсив.
Атрибуты класса или свойства записываются во второй сверху секции прямоугольника
класса. В языке UML каждому атрибуту класса соответствует отдельная строка текста,
которая состоит из квантора видимости атрибута, имени атрибута, его кратности, типа
значений атрибута и, возможно, его исходного значения:
<квантор видимости><имя атрибута>[кратность]: <тип атрибута> = <исходное значение> {строка-свойство}
Квантор видимости может принимать одно из трех возможных значений и
отображается при помощи соответствующих специальных символов:
 «+» обозначает атрибут с областью видимости типа общедоступный (public);
 «#» обозначает атрибут с областью видимости типа защищенный (protected);
 «-» обозначает атрибут с областью видимости типа закрытый (private).
Имя атрибута представляет собой строку текста, которая используется в качестве
идентификатора соответствующего атрибута и поэтому должна быть уникальной в пределах
данного класса. Имя атрибута является единственным обязательным элементом
синтаксического обозначения атрибута.
Тип атрибута представляет собой выражение, семантика которого определяется языком
спецификации соответствующей модели.
Исходное значение служит для задания начального значения соответствующего атрибута
в момент создания отдельного экземпляра класса..
Строка-свойство служит для указания значений атрибута, которые не могут быть
изменены в программе при работе с данным типом объектов. Фигурные скобки обозначают
фиксированное значение соответствующего атрибута для класса в целом, которое должны
принимать все вновь создаваемые экземпляры класса без исключения.
Методы класса записываются в третьей сверху секции прямоугольника. Каждому
методу класса соответствует отдельная строка, которая состоит из квантора видимости
операции, имени операции, выражения типа возвращаемого операцией значения и,
возможно, строка-свойство данной операции:
<квантор видимости><имя метода>(список параметров): <выражение типа возвращаемого значения>{строка-
свойство}
Имя метода представляет собой строку текста, которая используется в качестве
идентификатора соответствующего метода.
Список параметров является перечнем разделенных запятой формальных параметров,
каждый из которых может быть представлен в следующем виде:
<вид параметра><имя параметра>:<выражение типа>=<значение параметра по умолчанию>.

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

Отношения между классами

Кроме внутреннего устройства или структуры классов на соответствующей диаграмме


указываются отношения между классами. При этом совокупность типов таких отношений
фиксирована в языке UML и предопределена семантикой этих типов отношений. Базовыми
отношениями в языке UML являются:
 зависимости (dependency relationship);
 ассоциации (association relationship);
 обобщения (generalization relationship)
Отношение зависимости используется в такой ситуации, когда некоторое изменение
одного элемента модели может потребовать изменения другого зависимого от него элемента
модели. Отношение зависимости графически изображается пунктирной линией между
соответствующими элементами со стрелкой, направленной от класса-клиента зависимости к
независимому классу или классу-источнику.
Отношение ассоциации соответствует наличию некоторого отношения между классами.
Данное отношение обозначается сплошной линией с дополнительными специальными
символами, которые характеризуют отдельные свойства конкретной ассоциации.
Отношение обобщения является обычным таксономическим отношением между более
общим элементом (предком) и более частным или специальным элементом (потомком).
Применительно к диаграмме классов данное отношение описывает иерархическое строение
классов и наследование их свойств и поведения. При этом предполагается, что класс-
потомок обладает всеми свойствами и поведением класса-предка, а также имеет свои
собственные свойства и поведение, которые отсутствуют у класса-предка. На диаграммах
отношение обобщения обозначается сплошной линией с треугольной стрелкой на одном из
концов. Стрелка указывает на общий класс (класс-предок или суперкласс), а ее отсутствие -
на специальный класс (класс-потомок или подкласс).

Объекты. Диаграмма объектов.

Объект (object) является отдельным экземпляром класса, который создается на этапе


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

Cir:CIRCLE Cir_1:CIRCLE
radius = 10 radius =1
X =0 X =0
Y =0 Y =0

3
Пример диаграммы классов
STYLE
POLYGON
* + Color : int =3
1 + IsFilled : bool =0
+ <<Constructor>> POLYGON ()
+ <<Destructor>> ~P OLYGON ()

1
3..*

0..*

P OINT 1
{abstract}

# X : int =0 CIRCLE
# Y : int =0 - radius : int =1
+ GetY () : int + GetR () : int
+ SetY (int YY) : void + SetR (int RR) : void
+ GetX () : int + <<Constructor>> CIRCLE ()
+ SetX (int XX) : void + <<Destructor>> ~CIRCLE ()
+ area () : int + <<Override>> area () : int
+ <<Constructor>> P OINT ()
+ <<Destructor>> ~POINT ()

Оценить