- •Учебный курс
- •Проблема: Как представить архитектуру программной системы?
- •Архитектура программной системы в нотации UML
- •Диаграмма классов — основная логическая модель проектируемой системы
- •Характеристики классификатора
- •Основные обозначения на диаграмме
- •Варианты графического изображения класса на диаграмме классов
- •Атрибут (attribute) класса
- •Вид видимости
- •Проблема интерпретации видимости в языка UML
- •Элементы записи атрибута
- •Элементы записи атрибута
- •Модификатор атрибута
- •Значения модификатора атрибута
- •Значения модификатора атрибута
- •Кратность
- •Примеры записи атрибутов
- •Операции класса
- •Формат записи операции класса
- •Параметры операции
- •Параметры операции
- •Параметры операции
- •Свойства операций
- •Предусловие (precondition) операции
- •Постусловие (postcondition) операции
- •Примеры записи операций:
- •Отношения на диаграмме классов
- •Ассоциация
- •Строка свойство (property string)
- •Строка свойство (property string)
- •Ассоциация с навигацией и эквивалентное ему представление класса с атрибутом
- •Варианты изображения навигации и кратности у концов ассоциации
- •Исключающая ассоциация между тремя классами
- •Пример тернарной ассоциации
- •Пример 4-арной ассоциации
- •Ассоциация класс (association class)
- •Примеры ассоциации класса и рефлексивной ассоциации
- •Обобщение (generalization)
- •Примеры отношения обобщения
- •Множественное наследование – в языке UML разрешено
- •Множество обобщения (generalization set)
- •Примеры ограничений на множество обобщения
- •Агрегация (aggregation)
- •Пример отношения агрегации
- •Композиция (composition)
- •Пример отношения композиции
- •Варианты обозначения композиции
- •Интерфейс (interface)
- •UML Profile for Software Development Processes
- •Квалификатор (qualifier)
- •Шаблон (template)
- •Самостоятельное задание №2
Учебный курс
Язык UML в анализе и проектировании программных систем и бизнес-процессов
Лекция 3
Диаграмма классов языка UML 2
Автор:
Леоненков Александр Васильевич
кандидат технических наук, старший научный сотрудник
Проблема: Как представить архитектуру программной системы?
Графический
интерфейс
пользователя
Модели
бизнес
объектов
Базы данных
Архитектура программной системы в нотации UML
Customer |
|
|
|
|
|
|
name : String |
|
|
Order |
|
|
Sales |
Address : String |
|
|
|
|
product : Product |
|
|
|
date : Date |
|
|
||
|
|
|
|
|||
|
|
|
|
|
||
save() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ServiceAgent |
|
Observer |
|
|
|
purchase(customer, product, items) |
|
update() |
|
|
|
Уровень GUI
Customer |
|
|
|
|
|
|
Order Line |
|
Product |
||
name : String |
|||||
|
|
|
name : String |
||
|
items : Product |
|
|||
Address : String |
|
|
|
price : Currency |
|
|
getName() |
||||
save() |
|
|
|
||
|
|
getName() |
|||
|
updateName() |
|
|||
getName() |
|
|
|
updateName() |
|
|
|
||||
updateName() |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
Customer |
|
Order Line |
|
Product |
|
* |
|
* |
|
|
|
|
Промежуточный
уровень
Уровень базы данных
Диаграмма классов — основная логическая модель проектируемой системы
Диаграмма классов (class diagram) — диаграмма, предназначенная для представления модели статической структуры программной системы в терминологии классов объектно-ориентированного программирования
Диаграмма классов представляет собой граф, вершинами или узлами которого являются элементы типа “классификатор”, которые связаны различными типами структурных отношений
Классификатор (classifier) – специальное понятие, предназначенное для классификации экземпляров, которые имеют общие характеристики
Характеристики классификатора
Характеристика (feature) – понятие, предназначенное для спецификации особенностей структуры и поведения экземпляров классификаторов
Структурная характеристика (structural feature) является типизированной характеристикой классификатора, которая специфицирует структуру его экземпляров
Характеристика поведения (behavioral feature) является характеристикой классификатора, которая специфицирует некоторый аспект поведения его экземпляров
Класс (class) – элемент модели, который описывает множество объектов, имеющих одинаковые спецификации характеристик, ограничений и семантики
Основные обозначения на диаграмме |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
К л а |
с с |
|
|
|
|
|
|
К о м п а н и я |
|
|
|
|
||
|
|
К р а т н о с т ь |
И м я |
|
1 |
|
|
|
К о м п о з и ц и я |
|
||
|
|
|
|
а с с о ц и а ц и и |
|
|
|
|
||||
|
|
|
* |
1 . . * |
|
|
|
|
|
|
1 |
. . * |
|
|
|
О т д е л |
* |
М е с т о п о л о ж е н и е |
|
* |
О ф и с |
||||
|
|
0 . . 1 |
н а з в а н и е : S t r in g |
|
а д р е с : S t r in g |
|||||||
|
|
|
|
|
|
|
|
|
|
т е л е ф о н : |
|
|
|
|
|
* |
* |
|
А |
с с о ц |
и а ц |
и я |
|
|
|
|
|
|
|
О г р а н и ч е н и е |
|
|
|
|
|
|
||
|
|
|
{ s u b s |
e t } |
|
|
|
|
|
|
|
|
|
|
|
|
О б |
о |
б щ |
е н и е |
|
|
|||
С |
о |
т р у д н и к |
|
|
|
|
||||||
1 М е н е д ж е р |
|
|
|
|
|
|
||||||
|
|
1 . . * |
|
|
|
|
Ш т а б - к в а р т и р а |
|||||
|
|
|
С о т р у д н и к |
|
И м я к о н ц а |
|
|
|
||||
|
|
|
|
|
|
а с с о ц |
и а ц |
и и |
|
|
|
|
|
|
и м я : S t r in g |
|
|
А т р и б у т ы |
|
|
|
||||
|
|
ф а м и л и я : S t r in g |
|
О п е |
р |
а ц и и |
|
|
|
|||
|
|
д о л ж н о с т ь : S t r in g |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|||
|
|
g e t P h o t o ( p : P h o t o ) |
|
|
|
К о н т а к т н а я |
|
|
||||
|
|
g e t C o n t a c t I n f o r m ( ) |
|
|
|
|
|
|||||
|
|
|
|
И |
н ф |
о р м а ц и я |
|
|
||||
|
|
g e t P e r s o n a lR e c o r d s ( ) |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
а д р е с : S t r in g |
И н т е р ф е й с |
|||||
|
|
|
|
|
|
т е |
л |
е ф |
о н |
: |
|
|
|
|
З а в и с и м о с т ь |
|
|
П е р с о н а л ь н о е Д е л о |
|
|
|
||||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
и с т о р и я Р а б о т ы : S t r i n g |
|
|
|
||||
|
|
|
|
|
з а р п л а т а : C u r e n c y |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
IS e c u r e In f o r m a t io n |
Варианты графического изображения класса на диаграмме классов
|
|
И м я к л а с с а |
|
|
|
|
|
|
|
|
|
|
И м я |
к л а с с а |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
И м я к л а с с а |
а т р и б у т ы к л а с с а |
|
И м я к л а с с а |
|
|||||
|
|
|
|
|
|
|
|||
|
|
о п е р а ц и и к л а с с а |
|||||||
|
|
|
|
|
|
|
|
||
|
о п е р а ц и и к л а с с а |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В и д и м о с т ь |
|
|
S h a p e |
||
|
|
|
|
|
|
|
+ o r ig in |
: |
P o |
in t |
|
|
|
||||
|
+ m o v e ( p : P o in t ) |
||||
|
+ r e s iz e ( s : S c a le ) |
||||
|
+ d is |
p ly |
( ) |
|
|
|
# in v a lid |
a |
t e R |
e g io n ( ) |
|
|
|
|
|
|
|
|
R |
e s |
p o |
n s |
ib ilit ie s |
|
- - m a n a g e s h a p e s t a t e |
||||
|
- - h a n d le b a s ic s h a p e |
||||
|
t r a n s f o r m a t io n s |
И м я к л а с с а
А |
т р |
и б у т ы |
|
||
О |
п |
е р а ц и |
и |
||
С и г н а |
т у |
р |
а |
|
|
о п е р а |
ц |
и |
и |
|
|
|
Д о п о л н и т е л ь н а я |
||||
|
|
|
|
с е |
к ц и я |
И м я к л а с с а
Разновидности классов
Абстрактный (abstract) класс не имеет экземпляров или объектов, для обозначения его имени используется наклонный шрифт (курсив)
Активный класс (active class) – класс, каждый экземпляр которого имеет свою собственную нить управления
Пассивный класс (passive class) – класс, каждый экземпляр которого выполняется в контексте некоторого другого объекта
Квалифицированное имя (qualified name) используется для того, чтобы явно указать, к какому пакету относится тот или иной класс. Для этого применяется специальный символ в качестве разделителя имени – двойное двоеточие “::”
Имя класса без символа разделителя называется простым именем класса
Атрибут (attribute) класса
– служит для представления отдельной структурной характеристики или свойства, которое является общим для всех объектов данного класса
<атрибут>::= [<видимость>] [‘/’] <имя> [‘:’ <тип атрибута>] [‘[‘<кратность>‘]’] [‘=’ <значение по умолчанию>] [‘{‘<модификатор атрибута> [‘,’ <модификатор атрибута>]* ’}’]
Где:
<видимость>::= ‘+’ | ‘–‘ | ‘#’ | ‘~’.
видимость (visibility) может принимать одно из 4-х возможных значений и отображаться либо посредством специального символа, либо соответствующего ключевого слова
Вид видимости
+ public (общедоступный). Общедоступный элемент является видимым всеми элементами, который имеют доступ к содержимому пространства имен, который им владеет.
- private (закрытый). Закрытый элемент является видимым только внутри пространства имен, который им владеет.
# protected (защищенный). Защищенный элемент является видимым для элементов, которые имеют отношение обобщения с пространством имен, который им владеет.
~ package (пакет). Элемент, помеченный как имеющий пакетную видимость, является видимым всеми элементами в ближайшем охватывающем пакете в предположении. За пределами ближайшего охватывающего пакета элемент, помеченный как имеющий пакетную видимость, не является видимым.