Ссылки
Шикарная статья с картинками и примерами Очень подробно и на русском Подробно, понятно и с картинками Модели диаграмм
При построении диаграм мы можем выбрать какие детали нам указывать, а какие отпустить. Выбор перспективы зависит от текущей задачи на чем именно нужно сейчас сделать акцент
Например, для проектирования доменной области подойдет концептуальная перспектива, где мы опускаем детали реализации. Для некой 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
Сущности UML
Классификатор
Единица всей модели, которая описывает поведение системы и ее черты структуры. К классификаторам относятся классы, актанты, композиты, типы данных, интерфейсы, узлы, сигналы, подсистемы и варианты использования. Наиболее общими классификаторами являются классы.
Class
Класс является одним из основных классификаторов. Класс описывает множество объектов, которые имеют общие аттрибуты, методы и поведение.
Видимость аттрибутов и методов в классе (символы + # -)
Модификаторы перед свойствами класса означают их степень видимости.
Виды связей
Всего есть 6 видов связей
Association (общее для агрегации и композиции) Aggregation (частное для ассоциации) Composition (частное для ассоциации) Generalization (inheritance) Простые примеры
Два главных типа связей
Всего есть два типа связей ассоциация и направленные связи
Ассоциация еще может быть двух типов симантическая и структурная. Но может это пока не такие важные вещи. Пока вроде как в официальной спецификации не определи точное определение этих типов связей. Надеемся на инфу отсюда Association
Связь типа ассоциация - это некая абстрактная, общая связь двух объектов, которые могут быть как-то логически соеденены
Directed relationship
Связь между коллекцией объектов. Например, генерализация. В доке по ссылке выше чуть подробнее
include (from use cases), Ассоциация типа semantic
Семантическая связь - это связь между объектами, которые не могут быть соеденены чем-то материальным, физическом. Это некая абстракная связь. Например, машина связана с заводом, который ее произвел. Или игрок, который играет сейчас в игру. Между ними нет ничего материального, но они связаны
Ассоциация типа structural
Структурная связь - это, наверное, связь между объектами, которые не могли бы существовать друг без друга или которые создают от части себя. Например, автоинженер связан структурно с автомобилем, которые он создал
Связи между классами
Dependency
Зависимость - слабая связь, когда объект использует другой в какой-то один момент, в одной части себя. Например, в методе или конструкторе. При том другие части исходного объекта никак не зависят от цели
Например, объект механика будет юзать инструменты только в методе repair
Inheritance(generalization) - наследование
Наследование - это таксономичная связь между родительским классом и его дочерним. A generalization is a taxonomic relationship between a more general classifier and a more specific classifier. Обозначается полой стрелкой от дочерних к родителям. Дочерние как бы всегда указывают на своего родителя
Association
Обозначается толстой линией между классами, без стрелочек. Может делиться на композицию и агрегацию.
Более сильная связь, чем зависимость, так как реализовывается через параметры в классе. Ассоциация - это широкое понятие, которое указывает, что два объекта логически как-то могут быть связаны друг с другом. Ассоциация может быть уточнена на два вида:
Пассажиры самолёта могут быть по разному связаны друг с другом, но как точно ассоциация об этом не говорит
Ассоциация типа агрегация
Более конкретная связь, которая указывает, что один объект включает, хранит в себе другой объект или множество. При том в агрегации жизненный цикл объектов не влияет друг на друга. Объекты могут существовать отдельно
Книга останется книгой, даже если библиотека закроется
Ассоциация типа композиция
Композиция означает, что один объект являются важной часть другого объекта и что они не могут существовать друг без друга.
Например, команта в кватире не может быть сама по себе. А квартира без комнат превращается в какую-то другую сущность
Realization / Implementation
Связь, которая указывает что такое класс будет реализовывать такой-то интерфейс
Примеры
Online shopping
Library