351.00K
Категория: ПрограммированиеПрограммирование

9лекция диаграммы классов

1.

Диаграммы UML для логического
Диаграммы классов
(class diagrams)

2.

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

3.

Назначение диаграмм классов
Диаграмма классов (class diagram) служит для
представления статической структуры модели
системы в терминологии классов объектно –
ориентированного программирования.

4.

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

5.

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

6.

Определение класса как элемента
диаграммы классов
Класс (class) в языке UML – это абстрактное
описание или и представление множества
объектов, которые обладают одинаковой
структурой, поведением и отношениями с
объектами из других классов.

7.

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

8.

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

9.

Способы отображения класса на
диаграмме классов

10.

Имя класса
Имя класса должно быть уникальным в пределах
пакета, который описывается некоторой
совокупностью диаграмм классов (возможно, одной
диаграммой). Оно указывается в первой верхней
секции прямоугольника.
Рекомендуется в качестве имен классов
использовать существительные, записанные по
практическим соображениям без пробелов.

11.

Атрибут класса
Во второй сверху секции прямоугольника класса
записываются его атрибуты (attributes) или
свойства. В языке UML принята определенная
стандартизация записи атрибутов класса, которая
подчиняется некоторым синтаксическим правилам.

12.

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

13.

Значения квантора видимости
атрибута класса
Символ "+" обозначает атрибут с областью
видимости типа общедоступный (public). Атрибут с
этой областью видимости доступен или виден из
любого другого класса пакета, в котором
определена диаграмма.

14.

Значения квантора видимости
атрибута класса
Символ "#" обозначает атрибут с областью
видимости типа защищенный (protected). Атрибут с
этой областью видимости недоступен или невиден
для всех классов, за исключением подклассов
данного класса.

15.

Значения квантора видимости
атрибута класса
Символ "-" обозначает атрибут с областью
видимости типа закрытый (private).
Атрибут с этой областью видимости
недоступен или невиден для всех классов
без исключения.

16.

Значения квантора видимости
атрибута класса
Символ «~» обозначает атрибут с областью
видимости типа пакет (package). Атрибут с этой
областью видимости доступен в пределах пакета.
Пакет- это способ организации элементов модели в
UML.

17.

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

18.

Кратность(multiplcity)
Кратность атрибута характеризует общее
количество конкретных атрибутов данного типа,
входящих в состав отдельного класса. В общем
случае кратность записывается в форме строки
текста в квадратных скобках после имени
соответствующего атрибута:
[нижняя_граница1 .. верхняя_граница1,
нижняя_граница2.. верхняя_граница2, ...,
нuжняя_гpaнuцak .. верхняя_границаk],

19.

Кратность
Нижняя_граница и верхняя_граница являются
положительными целыми числами, каждая пара
которых служит для обозначения отдельного
замкнутого интервала целых чисел, у которого
нижняя (верхняя) граница равна значению
нижняя_граница (верхняя_граница).

20.

Примеры задания кратности
[0..1] означает, что кратность атрибута
может принимать значение О или 1. При
этом 0 означает отсутствие значения для
данного атрибута.
[0..*] означает, что кратность атрибута
может принимать любое положительное
целое значение большее или равное 0.
Эта кратность может быть записана
короче в виде простого символа - [*].

21.

Примеры задания кратности
[1.:*] означает, что кратность атрибута
может принимать любое положительное
целое значение большее или равное 1;
[1..5] означает, что кратность атрибута
может принимать любое значение из
чисел: 1, 2, 3, 4, 5.

22.

Примеры задания кратности
[1..3,5,7] означает, что кратность атрибута может
принимать любое значение из чисел: 1, 2, 3, 5, 7.
[1..3,7.. 10] означает, что кратность атрибута
может принимать любое значение из чисел: 1, 2,
3, 7, 8, 9, 10.
[1..3,7..*] означает, что кратность атрибута может
принимать любое значение из чисел: 1, 2, 3, а
также любое положительное целое значение
большее или равное 7.

23.

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

24.

Пример задания типа атрибута
имя_сотрудника [1..2] : string – здесь
имя_сотрудника является именем атрибута,
который служит для представления информации об
имени, а возможно, и отчестве конкретного
сотрудника.
Тип атрибута string (Строка) как раз и указывает на
тот факт, что отдельное значение имени
представляет собой строку текста из одного
или двух слов (например, "Кирилл" или "Дмитрий
Иванович").

25.

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

26.

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

27.

Операции класса
Операция (operation) представляет собой
некоторый сервис, предоставляющий каждый
экземпляр класса по определенному требованию.
Совокупность операций характеризует
функциональный аспект поведения класса. Запись
операций класса в языке UML стандартизована и
подчиняется определенным синтаксическим
правилам.

28.

Операции класса
При этом каждой операции класса соответствует
отдельная строка, которая состоит из квантора
видимости операции, имени операции, выражения
типа возвращаемого операцией значения и строка
свойство данной операции:
<квантор видимости> <имя операции> (список
параметров): <выражение типа возвращаемого
значения> {строка-свойство}

29.

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

30.

Квантор видимости операции
Символ "+" обозначает операцию с
областью видимости типа общедоступный
(public).
Символ "#" обозначает операцию с областью
видимости типа защищенный (protected).
Символ "-" используется для обозначения операции
с областью видимости типа закрытый (private).

31.

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

32.

Список параметров операции
Список параметров является перечнем
разделенных запятой формальных параметров,
каждый из которых может быть представлен в
следующем виде:
<вид параметра><имя параметра>:<выражение
типа>=<значение параметра по умолчанию>.

33.

Список параметров операции
Здесь вид параметра - есть одно из ключевых слов
in, out или inout со значением in по умолчанию, в
случае если вид параметра не указывается. Имя
параметра есть идентификатор соответствующего
формального параметра.

34.

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

35.

Строка – свойство операции
Строка-свойство служит для указания значений
свойств, которые могут быть применены к данному
элементу. Строка-свойство не является
обязательной, она может отсутствовать, если
никакие свойства не специфицированы.

36.

Выполнение операций
Для повышения производительности системы одни
операции могут выполняться параллельно или
одновременно, а другие - только последовательно.

37.

Указание режима выполнение
операций
В этом случае для указания параллельности
выполнения операции используется строка
свойство вида "{concurrency = режим}" .

38.

Указание режима выполнение
операций
Свойство concurency принимает следующие
значения:
последовательная (sequential) - для данной
операции необходимо обеспечить ее
единственное выполнение в системе,
одновременное выполнение других операций
может привести к ошибкам или нарушениям
целостности объектов класса.

39.

Указание режима выполнение
операций
параллельная (concurrent) - данная операция в силу
своих особенностей может выполняться
параллельно с другими операциями в системе,
при этом параллельность должна
поддерживаться на уровне реализации модели.

40.

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

41.

Примеры классов
Заказ
+датаполучения
+проплачен
+номер: строка
+цена: деньги
+отправить()
+закрыть()
КлиентБанка
+имя
+адрес
+кредитныйрейтинг(): строка

42.

Отношения между классами
Отношение ассоциации (association relationship)
Отношение обобщения (generalization relationship)
Отношение реализации (realization relationship)
Отношение зависимости (dependency relationship)

43.

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

44.

Бинарная ассоциация
Бинарная ассоциация связывает в точности два
класса и, как исключение, может связывать класс с
самим собой. Бинарная ассоциация может быть
направленной и ненаправленной.
Ненаправленная ассоциация изображается линией
без стрелки. На ней может быть указан
необязательный значок указания порядка чтения
классов ►.

45.

Пример ненаправленной бинарной
ассоциации
Работает
Сотрудник
1..*
Компания
1

46.

Пример направленной бинарной
ассоциации
Содержит
Многоугольник
1
Сторона
3..*

47.

N-арная ассоциация
N-арная ассоциация связывает 3 и более классов.
Рассмотрим пример тернарной ассоциации.
Футбольная
команда
2
Год
*
*
Игра

48.

Отношение обобщения
Отношение обобщения – это отношение между
более общим элементом (родителем или предком)
и более частным или специальным элементом
(дочерним или потомком).
Данное отношение может использоваться для
представления взаимосвязей между пакетами,
классами, вариантами использования и другими
элементами языка UML.

49.

Отношение обобщения
На диаграммах отношение обобщения
обозначается сплошной линией с треугольной
стрелкой на одном из концов. Стрелка указывает на
более общий класс (класс-предок или суперкласс).

50.

Изображение отношения обобщения
на диаграмме классов
Класс-родитель
Класс-потомок

51.

Пример отношения обобщения
Геометрическая фигура
Прямоугольник
Круг
Треугольник

52.

Ограничения отношения обобщения
{complete} - означает, что в данном
отношении обобщения специфицированы
все классы-потомки, и других классовпотомков у данного класса-предка быть не
может.

53.

Пример ограничения отношения
обобщения
Пример - класс Клиент_банка является
предком для двух классов: Физическое_лицо
и Компания, и других классов-потомков он
не имеет. На соответствующей диаграмме
классов это можно указать явно, записав
рядом с линией обобщения данную строку
ограничение;

54.

Ограничения отношения обобщения
{disjoint} - означает, что классы-потомки не
могут содержать объектов, одновременно
являющихся экземплярами двух или
более классов.

55.

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

56.

Ограничения отношения обобщения
{incomplete} - означает случай, противоположный
первому. А именно, предполагается, что на
диаграмме указаны не все классы-потомки. В
последующем возможно восполнить их перечень
не изменяя уже построенную диаграмму.

57.

Ограничения отношения обобщения
Пример - диаграмма класса "Автомобиль", для
которой указание всех без исключения моделей
автомобилей соизмеримо с созданием
соответствующего каталога. С другой стороны,
для отдельной задачи, такой как разработка
системы продажи автомобилей конкретных
моделей, в этом нет необходимости. Но указать
неполноту структуры классов-потомков все же
следует;

58.

Ограничения отношения обобщения
{overlapping} - означает, что отдельные
экземпляры классов-потомков могут
принадлежать одновременно нескольким
классам.

59.

Ограничения отношения обобщения
Пример - класс "Многоугольник" является
классом-предком для класса
"Прямоугольник" и класса "Ромб". Однако
существует отдельный класс "Квадрат",
экземпляры которого одновременно
являются объектами первых двух классов.
Вполне естественно такую ситуацию
указать явно с помощью данной строкиограничения.

60.

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

61.

Отношение агрегации
Раскрывая внутреннюю структуру системы,
отношение агрегации показывает, из каких
компонентов состоит систем и как они связаны
между собой.
С точки зрения модели отдельные части системы
могут выступать как в виде элементов, так и в виде
подсистем, которые, в свою очередь, тоже могут
образовывать составные компоненты или
подсистемы.

62.

Отношение агрегации
Это отношение по своей сути описывает
декомпозицию или разбиение сложной системы на
более простые составные части.
Графически отношение агрегации изображается
сплошной линией, один из концов которой
представляет собой незакрашенный внутри ромб.
Этот ромб указывает на класс-контейнер, который
представляет собой "целое". Остальные классы
являются его "частями".

63.

Изображение отношения агрегации
Класс-контейнер
Класс-часть

64.

Пример отношения агрегации
Персональный
компьютер
Системный
блок
Монитор
Клавиатура
Мышь

65.

Отношение композиции
Отношение композиции – это частный случай
отношения агрегации. Это отношение служит для
выделения специальной формы отношения "часть
целое", при которой составляющие части в
некотором смысле находятся внутри целого.
Специфика взаимосвязи между ними заключается в
том, что части не могут выступать в отрыве от
целого, т. е. с уничтожением целого уничтожаются и
все его составные части.

66.

Изображение отношения
композиции
Класс-композит
Класс-часть

67.

Пример отношения композиции
Окно приложения
1
Заголовок
1
1
2
Полоса
прокрутки
1
1
1
Рабочая
область
1
Главное
мню

68.

Отношение зависимости
Отношение зависимости в общем случае указывает
некоторое семантическое отношение между двумя
элементами модели или двумя множествами таких
элементов, которое не является отношением
ассоциации, обобщения или реализации.

69.

Отношение зависимости
Оно касается только самих элементов модели и не
требует множества отдельных примеров для
пояснения своего смысла. Отношение зависимости
используется в такой ситуации, когда некоторое
изменение одного элемента модели может
потребовать изменения другого зависимого от него
элемента модели.

70.

Изображение отношения
зависимости
Отношение зависимости графически изображается
пунктирной линией между соответствующими
элементами со стрелкой на одном из ее концов (">”
или "<-"). На диаграмме классов данное отношение
связывает отдельные классы между собой, при
этом стрелка направлена от класса-клиента
зависимости к независимому классу или классу
источнику.

71.

Изображение отношения
зависимости
<<access>>
Класс А
Источник
Класс В
Зависимый класс

72.

Стандартные зависимости
"access" - служит для обозначения доступности
открытых атрибутов и операций класса-источника
для классов-клиентов;
"bind" - класс-клиент может использовать
некоторый шаблон для своей последующей
параметризации;
"derive" - атрибуты класса-клиента могут быть
вычислены по атрибутам класса-источника;

73.

Стандартные зависимости
"import" - открытые атрибуты и операции классаисточника становятся частью класса-клиента, как
если бы они были объявлены непосредственно в
нем;
"refine" - указывает, что класс-клиент служит
уточнением класса-источника в силу причин
исторического характера, когда появляется
дополнительная информация в ходе работы над
проектом.

74.

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

75.

Интерфейсы
При построении диаграммы классов
отдельные интерфейсы могут уточняться и
в этом случае для их изображения
используется специальный графический символ –
прямоугольник класса с ключевым словом или
стереотипом "interface".
При этом секция атрибутов у прямоугольника
отсутствует, а указывается только секция операций.

76.

Изображение интерфейса на диаграмме
классов
<<interface>>
ДатчикТемпературы
+ЗначениеТемпературы()

77.

Вставка интерфейса в диаграмму
Вставка осуществляется с помощью значка
«интерфейс» в формате Stereotype interface
– Textual.

78.

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

79.

Объекты
Для графического изображения объектов
используется такой же символ прямоугольника, что
и для классов.
При этом запись имени объекта представляет
собой строку текста "имя объекта: имя класса",
разделенную двоеточием.

80.

Объекты
Имя объекта может отсутствовать, в этом случае
предполагается, что объект является анонимным, и
двоеточие указывает на данное обстоятельство.
Отсутствовать может и имя класса. Тогда
указывается просто имя объекта. Атрибуты
объектов принимают конкретные значения.

81.

Примеры объектов
квадрат : Прямоугольник
квадрат : Прямоугольник
вершина = (1,10)
сторона
цвет_границы
цвет_заливки

82.

Пример диаграммы классов
< < bounda ry > >
У с т р о йс т в о Ч т е н ия
< < inte rfa ce > >
Ко н т р о л л е р Ба н к а
+ зна ч е ние ПИНк о д а
+ но ме рС ч е т а К лие нт а
+ про в е рит ь ПИНк о д ()
+ про в е рит ь Номе рС ч е т а ()
+ о т к ры т ь С че т ()
+ у ме нь шит ь С ч е т ()
+ про ч ит а т ь ПИНк о д ()
+ про ч ит а т ь Номе рС ч е т а ()
+ изв ле ч ь К а рт у ()
1
А у т е нт иф ициру е т к лие нт а и в ы полня е т т ра нза к ции
1
С ч ит ы в а е т инф о рма цию
1
1
< < co ntro l> >
Ко н т р о л л е р Ба н к о м а т а
1
О т о бра ж а е т инф о рма цию
1
1
Вы д а е т на личны е
Пе ч а т а е т спра в к у
< < bounda ry > >
Эк р а н Ба н к о м а т а
+ по к а за т ь Ме ню О пций()
+ по к а за т ь Ме ню С у ммы ()
1
1
1
< < bounda ry > >
П р ин т е р Ба н к о м а т а
< < bounda ry > >
У с т р о йс т в о П о л у ч е н ия Н а л ич н ы х
+ пе ч а т ь С пра в к и()
+ в ы д а т ь На лич ны е ()
Д иагр ам м а клас с о в д ля с ис те м ы упр ав ле ния б анко м ато м
English     Русский Правила