> For the complete documentation index, see [llms.txt](https://kymbrik3.gitbook.io/programming/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kymbrik3.gitbook.io/programming/osnovnye-zavisimosti-v-uml.md).

# Основные зависимости в UML

Здесь я укажу основные зависимости (стрелки), которые у казываются при построении UML диаграмм

## Стрелка ассоциации

Стрелка ассоциации, она же bidirectional, практически не должна использоваться, потому что она свидетельствует о плохой архитектуре кода. Рисуется в виде прямой линии между классами.

![](https://4036917255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ls19xoIyEq5scKQ_mt3%2F-LyKbC8kM2WqbXLjcwVD%2F-LyKbPH7VZ4rQbrpLTxZ%2Fmaxresdefault.jpg?alt=media\&token=b3f4f75d-2dd6-4c3d-86b8-9688c4f1e351)

## Стрелка "Однонаправленная зависимость unidirectional"

![](https://4036917255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ls19xoIyEq5scKQ_mt3%2F-LyKbC8kM2WqbXLjcwVD%2F-LyKcnclG62_fJbg6o7d%2FScreenshot%20from%202020-01-11%2020-23-53.png?alt=media\&token=ee7bbb09-ff7a-4690-89e3-2a7138c1a440)

Данная стрелка обозначает, что класс А зависит от класса B, то есть класс А вызывает методы класса B.

## Стрелка "Агрегация"

![](https://4036917255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ls19xoIyEq5scKQ_mt3%2F-LyKbC8kM2WqbXLjcwVD%2F-LyKdaqvQFpvIlduNRXc%2FScreenshot%20from%202020-01-11%2020-27-24.png?alt=media\&token=fe6676ec-9686-495b-aced-446b6a93dc95)

Стрелка Агрегация означает зависимость HAS-A, т.е. класс A имеет, к примеру ListArray класса B.

Пример: Профессор (класс A) имеет список студентов (класс B)

## Стрелка "Композиция"

![](https://4036917255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ls19xoIyEq5scKQ_mt3%2F-LyKdblNDqedSR2R6Jsb%2F-LyKeyVUmQZmsOyA6k7k%2FScreenshot%20from%202020-01-11%2020-34-20.png?alt=media\&token=7e567929-2645-41e8-94b1-52b5ea4efb5c)

Стрелка "Композиция" по своей сути то же самое, что и "Агрегация", только отличие в том, что класс A не может существовать без класса B (класс A должен иметь хотя бы один экземпляр класса B). Пример : машина не может быть без руля.

## Стрелка наследования (генерализация)

![](https://4036917255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ls19xoIyEq5scKQ_mt3%2F-LyKf-89E_hURo-jzPj-%2F-LyKfINZKJdvqBOSUaJ5%2FScreenshot%20from%202020-01-11%2020-35-40.png?alt=media\&token=77c08897-f9ec-4147-8d6f-6f5ee2b625c9)

Указывается на главный класс всегда. Мы привыкли думать, что иерархия идет от родителей к детям, но здесь указывается обратное направление при рисовании отношения классов.

Пример: B extends A.

## Стрелка реализации (интерфейс)

![](https://4036917255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ls19xoIyEq5scKQ_mt3%2F-LyKfdb-8hKzgcYmPwPm%2F-LyKg7d-oIBpA6H__VVT%2FScreenshot%20from%202020-01-11%2020-38-15.png?alt=media\&token=c0a04886-5514-4639-85a9-03b6bc31a9d0)

Стрелка реализации обозначает реализацию интерфейса. Стрелка в направлении от класса к интерфейсу.

## Стрелка dependency (зависимость)

![](https://4036917255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ls19xoIyEq5scKQ_mt3%2F-LyKg8PAO4fNGYQ2SH7m%2F-LyKgMpjatJ2q6CnrvyH%2FScreenshot%20from%202020-01-11%2020-39-55.png?alt=media\&token=486be771-cccb-4acb-8925-0d5008d21997)

Немного отличается от стрелки интерфейса (На конце стрелка незаполненная, а острая)

Таких стрелок может быть очень много в uml-диаграмме (половина от всех возможных). Обозначает, что класс C каким-то образом зависит от класса D.
