SiTAiRIS_LabWork1_UML_Diagramm_of_classes

Содержание

Слайд 2

1. Объектно-ориентированный анализ и моделирование, разработка статических моделей

Язык UML и инструментальные средства

1. Объектно-ориентированный анализ и моделирование, разработка статических моделей Язык UML и инструментальные
разработки моделей программных систем. Общая характеристика особенностей и применения UML-моделей для разработки архитектуры программного продукта. Разработка:
- диаграммы вариантов использования (Use cases);
- диаграмма классов;
- диаграмма последовательности.
Программирование диаграммы классов на языке Java

Слайд 3

Объектно-ориентированный подход к проектированию информационных систем. Диаграммы UML

Диаграмма классов
(Class Diagram)

Объектно-ориентированный подход к проектированию информационных систем. Диаграммы UML Диаграмма классов (Class Diagram)

Слайд 4

ООП в проектировании ИС

В ООП центральным понятием является объект. Объект – это

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

C++
class A {
public: int a, b;//данные открытого интерфейса
int ReturnSomething();//метод открытого интерфейса
private: int Aa, Ab;//скрытые данные
void DoSomething();//скрытый метод
};

Java
class A {
private int a;
private int b;
private void doSomething()//скрытый метод
{ //actions }
public int returnSomething(){}//открытый интерфейс
}

Слайд 5

ООП в проектировании ИС

Наследование декларирует создание новых классов от общего к частному.

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

C++ :
class A
{ //базовый класс };
class B : public A
{ //public наследование };
class C : protected A
{ //protected наследование };
class Z : private A
{ //private наследование };

Java :
class A
{ //базовый класс };
class B extends A
{ //производный класс В };
class C extends A
{ //производный класс С };
class Z extends A
{ //производный класс Z };

Слайд 6

ООП в проектировании ИС

Полиморфизм декларирует возможность объектов с одинаковой спецификацией иметь различную

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

Слайд 7

Методология объектного проектирования средствами UML

Унифицированный язык моделирования (Unified Modeling Language, UML)

Методология объектного проектирования средствами UML Унифицированный язык моделирования (Unified Modeling Language, UML)
- язык для специфицирования, визуализации, конструирования и документирования на основе объектно-ориентированного подхода разных видов систем: программных, аппаратных, программно-аппаратных, смешанных и т. д.
Помимо прочего, язык UML применяется для проектирования реляционных БД. Для этого используется небольшая часть языка (диаграммы классов), да и то не в полном объеме. С точки зрения проектирования реляционных БД модельные возможности не слишком отличаются от возможностей ER-диаграмм

Слайд 8

Диаграммы UML

компонентов,
вариантов использования,
развертывания,
взаимодействия,
состояний,
последовательности действий.

Диаграммы UML компонентов, вариантов использования, развертывания, взаимодействия, состояний, последовательности действий.

Слайд 9

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

Является центральным звеном объектно-ориентированного подхода
Содержит информацию об объектах системы и

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

Слайд 10

Класс

Класс – это множество объектов, которые обладают одинаковой структурой, поведением и отношениями

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

Простейший вид класса состоит только из секции имени

Класс с указанием атрибутов (переменных)

Полное описание класса, состоящее из 3 разделов – секции имени, секции атрибутов, секции операций

Слайд 11

Класс

Имя класса должно быть уникально и начинаться с заглавной буквы.
Класс может не

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

Слайд 12

Атрибуты класса

Атрибут = свойство, которое является общим для всех объектов данного класса
Общий

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

Слайд 13

Атрибуты класса. Квантор видимости атрибута

Квантор видимости может принимать одно из следующих значений:

Атрибуты класса. Квантор видимости атрибута Квантор видимости может принимать одно из следующих
+, #, - , ~.
«+» – атрибут с областью видимости типа общедоступный (public).
«#» – атрибут с областью видимости типа защищенный (protected).
«-» – атрибут с областью видимости типа закрытый (private).
«~» – атрибут с областью видимости типа пакетный (package).

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

Слайд 14

Атрибуты класса. Имя атрибута

Представлено в виде уникальной строки текста
Имя атрибута является единственным

Атрибуты класса. Имя атрибута Представлено в виде уникальной строки текста Имя атрибута
обязательным элементом в синтаксическом обозначении атрибута
Должно начинаться со строчной буквы
Не должно содержать пробелов

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

Слайд 15

Атрибуты класса. Кратность атрибута

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

Атрибуты класса. Кратность атрибута Кратность атрибута характеризует общее количество конкретных атрибутов данного
входящих в состав отдельного класса.
Формат:[нижняя граница . . верхняя граница]
Например: [0..1], [0..*], [1..3,5..7]

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

[0..1] – кратность атрибута может принимать значение или 0 или 1
[0..*] – кратность атрибута может принимать любое положительное целое значение большее или равное 0. Эта кратность может быть записана короче в виде простого символа – [*].
[1..*] – кратность атрибута может принимать любое положительное целое значение большее или равное 1
[1..5] – кратность атрибута может принимать любое значение из чисел: 1, 2, 3, 4, 5.
[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.
Если кратность атрибута не указана, то по умолчанию принимается ее значение равное 1..1, т. е. 1

Слайд 16

Атрибуты класса. Тип атрибута

Выражение, определяемое некоторым типом данных (в зависимости от языка

Атрибуты класса. Тип атрибута Выражение, определяемое некоторым типом данных (в зависимости от
программирования)
В простейшем случае – осмысленная строка текста.
Пример:
цвет: Color
имяСотрудника[1..2]: String;
видимость: Boolean

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

Слайд 17

Атрибуты класса. Исходное значение

Служит для задания некоторого начального значения в момент создания

Атрибуты класса. Исходное значение Служит для задания некоторого начального значения в момент
отдельного экземпляра класса
Пример:
цвет: Color = (255, 0, 0)
имяСотрудника[1..2]: String = ‘Иван Иванов’;
видимость: Boolean = истина

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

Слайд 18

Атрибуты класса. Строка-свойство

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

Атрибуты класса. Строка-свойство Служит для указания дополнительных свойств атрибута, которые могут характеризовать
изменения значений атрибута в ходе выполнения программы.
Это значение принимается за исходное значение атрибута, которое не может быть изменено в дальнейшем.
Пример:
заработнаяПлата: Currency = $500 {frozen}

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

Слайд 19

Операции класса

Представляют собой некоторый сервис, интерфейс, который предоставляет каждый экземпляр класса или

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

Слайд 20

Операции класса. Список параметров

Список параметров является перечнем разделенных запятой формальных параметров, каждый

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

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

Слайд 21

Операции класса. Строка-свойство

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

Операции класса. Строка-свойство Строка-свойство служит для указания значений свойств, которые могут быть
к данной операции.
Например, для указания последовательности действий будет использована строка-свойство вида:
{concurrency = имя} , где имя может принимать одно из следующих значений:
sequential (последовательная),
concurrent (параллельная),
guarded (охраняемая)

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

Слайд 22

Операции класса. Строка-свойство

<квантор видимости> <имя операции> (список параметров): <выражение типа возвращаемого значения>

Операции класса. Строка-свойство (список параметров): {строка-свойство}
{строка-свойство}

Слайд 23

Операции класса. Примеры

+нарисовать (форма : Многоугольник = прямоугольник, цветЗаливки : Color =

Операции класса. Примеры +нарисовать (форма : Многоугольник = прямоугольник, цветЗаливки : Color
(0, 0, 255));
-изменитьСчетКлиента (номерСчета : Integer) : Currency;
#выдатьСообщение() : (‘Ошибка деления на ноль’).

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

Слайд 24

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

Базовыми отношениями на диаграмме классов являются:
отношения зависимости (dependency);
отношения обобщения (generalization);
отношения

Отношения между классами Базовыми отношениями на диаграмме классов являются: отношения зависимости (dependency);
ассоциации (association);
отношения агрегации (aggregation);
отношения композиции (composition).

Слайд 25

Отношение ассоциации

Отношение ассоциации свидетельствует о наличии произвольного отношения между классами.

Кратность ассоциации

Имя

Отношение ассоциации Отношение ассоциации свидетельствует о наличии произвольного отношения между классами. Кратность ассоциации Имя ассоциации
ассоциации

Слайд 26

Отношение обобщения

Является отношением классификации между более общим элементом (родителем или предком) и

Отношение обобщения Является отношением классификации между более общим элементом (родителем или предком)
более частным или специальным элементом (дочерним или потомком)

Слайд 27

Отношение обобщения

Обобщение (generalization) показывает, что один из двух связанных классов (подтип) является

Отношение обобщения Обобщение (generalization) показывает, что один из двух связанных классов (подтип)
частной формой другого (надтипа), который называется обобщением первого. Любой экземпляр подтипа является также экземпляром надтипа. Например: животные  – это супертип млекопитающих, которые, в свою очередь, являются супертипом приматов. Эта взаимосвязь может быть описана фразой «А – это Б» (приматы  – это
млекопитающие, млекопитающие 
– это животные).

Слайд 28

Отношение обобщения

Графически обобщение представляется линией с пустым треугольником у супертипа.
Обобщение также известно

Отношение обобщения Графически обобщение представляется линией с пустым треугольником у супертипа. Обобщение
как наследование или «is a» взаимосвязь.

Слайд 29

Отношение агрегации

Один из классов представляет собой некоторую сущность, которая включает в себя

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

Слайд 30

Отношение агрегации

Агрегация встречается, когда один класс является коллекцией или контейнером других. Причём

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

Слайд 31

Отношение композиции

Является частным случаем отношения агрегации.
Части не могут выступать в отрыве

Отношение композиции Является частным случаем отношения агрегации. Части не могут выступать в
от целого, т.е. с уничтожением целого уничтожаются составные части.

Слайд 32

Отношение композиции

Композиция имеет жёсткую зависимость времени существования экземпляров класса контейнера и экземпляров

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

Слайд 33

Отношение зависимости

Используется в такой ситуации, когда некоторое изменение одного элемента модели может

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

Слайд 34

Отношение зависимости

Зависимость — это слабая форма отношения использования, при котором изменение в спецификации

Отношение зависимости Зависимость — это слабая форма отношения использования, при котором изменение
одного влечёт за собой изменение другого, причем обратное не обязательно. Возникает когда объект выступает например в форме параметра или локальной переменной.
Графически представляется пунктирной стрелкой, идущей от зависимого элемента к тому, от которого он зависит.
Зависимость может быть между экземплярами, классами или экземпляром и классом.

Слайд 35

Мощность отношений (кратность)

Мощность отношения (мултипликатор) означает число связей между каждым экземпляром класса

Мощность отношений (кратность) Мощность отношения (мултипликатор) означает число связей между каждым экземпляром
(объектом) в начале линии с экземпляром класса в ее конце. Различают следующие типичные случаи:

Слайд 36

Пакеты и стереотипы

служат для группировки элементов модели
любой пакет владеет своими элементами

Пакеты и стереотипы служат для группировки элементов модели любой пакет владеет своими

любой элемент может принадлежать только одному пакету

Стереотипы классов –  механизм, позволяющий разделять  классы на категории. В языке UML определены три основных стереотипа классов:
boundary (граница);
entity (сущность);
control (управление).

Слайд 37

Стереотипы

Граничными  классами (boundary classes) называются такие классы, которые расположены  на границе системы

Стереотипы Граничными классами (boundary classes) называются такие классы, которые расположены на границе
и всей окружающей среды и является составной частью системы. Это экранные формы, отчеты, интерфейсы с внешней аппаратурой (например, принтеры или сканеры) и интерфейсы с другими системами.
Чтобы  найти  граничные  классы,  надо  исследовать  диаграммы вариантов использования. Каждому взаимодействию между действующим лицом и вариантом использования должен соответствовать, по  крайней мере, один граничный класс. Именно такой класс позволяет действующему лицу взаимодействовать с системой.

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

Слайд 38

Стереотипы

Управляющие  классы (control classes) отвечают за координацию действий других классов. Обычно  у 

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

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

Слайд 39

Интерфейс (interface)

в контексте языка UML является специальным случаем класса, у которого имеются

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

Слайд 40

Расширения языка UML

Расширения языка UML

Профиль для процесса разработки ПО
(The UML Profile

Расширения языка UML Расширения языка UML Профиль для процесса разработки ПО (The
for Software Development)

Профиль для бизнес-моделирования
(The UML Profile for Business Modeling)

Слайд 41

Пример диаграммы классов

Пример диаграммы классов