Архитектурные концепты

icon picker
UML

Ссылки

Шикарная статья с картинками и примерами
Очень подробно и на русском
Подробно, понятно и с картинками

Модели диаграмм

При построении диаграм мы можем выбрать какие детали нам указывать, а какие отпустить. Выбор перспективы зависит от текущей задачи на чем именно нужно сейчас сделать акцент
Например, для проектирования доменной области подойдет концептуальная перспектива, где мы опускаем детали реализации. Для некой analysis model пойдет спецификация, где focus is on the interfaces of Abstract Data Type (ADTs) in the software. Design model development will typically start with heavy emphasis on the specification perspective, and evolve into the implementation perspective.
Не до конца разобрался с analysis и design models
image.png

Сущности UML

Классификатор

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

Class

Класс является одним из основных классификаторов. Класс описывает множество объектов, которые имеют общие аттрибуты, методы и поведение.

Видимость аттрибутов и методов в классе (символы + # -)

Модификаторы перед свойствами класса означают их степень видимости.
“+” публичный
“-” приватный
“#” protected
image.png

Виды связей

Всего есть 6 видов связей
Dependency
Association (общее для агрегации и композиции)
Aggregation (частное для ассоциации)
Composition (частное для ассоциации)
Generalization (inheritance)
Realization

Простые примеры

image.png

Два главных типа связей

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

Association

Связь типа ассоциация - это некая абстрактная, общая связь двух объектов, которые могут быть как-то логически соеденены
Агрегация
Композиция

Directed relationship

Связь между коллекцией объектов. Например, генерализация. В доке по ссылке выше чуть подробнее
generalization,
dependency,
include (from use cases),
extend (from use cases),
template binding.

Ассоциация типа semantic

Семантическая связь - это связь между объектами, которые не могут быть соеденены чем-то материальным, физическом. Это некая абстракная связь. Например, машина связана с заводом, который ее произвел. Или игрок, который играет сейчас в игру. Между ними нет ничего материального, но они связаны

Ассоциация типа structural

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

Связи между классами

Dependency

Зависимость - слабая связь, когда объект использует другой в какой-то один момент, в одной части себя. Например, в методе или конструкторе. При том другие части исходного объекта никак не зависят от цели
image.png
Например, объект механика будет юзать инструменты только в методе repair

Inheritance(generalization) - наследование

image.png
Наследование - это таксономичная связь между родительским классом и его дочерним. A generalization is a taxonomic relationship between a more general classifier and a more specific classifier. Обозначается полой стрелкой от дочерних к родителям. Дочерние как бы всегда указывают на своего родителя
image.png

Association

Обозначается толстой линией между классами, без стрелочек. Может делиться на композицию и агрегацию.
Более сильная связь, чем зависимость, так как реализовывается через параметры в классе. Ассоциация - это широкое понятие, которое указывает, что два объекта логически как-то могут быть связаны друг с другом. Ассоциация может быть уточнена на два вида:
image.png
Пассажиры самолёта могут быть по разному связаны друг с другом, но как точно ассоциация об этом не говорит
image.png

Ассоциация типа агрегация

Более конкретная связь, которая указывает, что один объект включает, хранит в себе другой объект или множество. При том в агрегации жизненный цикл объектов не влияет друг на друга. Объекты могут существовать отдельно
image.png
Книга останется книгой, даже если библиотека закроется

Ассоциация типа композиция

Композиция означает, что один объект являются важной часть другого объекта и что они не могут существовать друг без друга.
image.png
Например, команта в кватире не может быть сама по себе. А квартира без комнат превращается в какую-то другую сущность

Realization / Implementation

Связь, которая указывает что такое класс будет реализовывать такой-то интерфейс
image.png

Примеры

image.png

Online shopping

image.png

Library

image.png

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.