Артефакты и классы

Во многих отношениях артефакты подобны классам. Те и другие наделены именами, могут реализовывать набор интерфейсов, вступать в отношения зависимости, обобщения и ассоциации, быть вложенными, иметь экземпляры и принимать участие во взаимодействиях. Однако между артефактами и классами есть существенные различия:

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

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

· классы могут обладать атрибутами и операциями, артефакты могут реализовывать классы и методы, но сами по себе не имеют атрибутов и операций.

Первое отличие самое важное. При моделировании системы решение о том, что использовать - классы или артефакты, - очевидно: если моделируемая сущность непосредственно размещается в узле, то это артефакты, в противном случае - класс. Подтверждением этому служит и второе отличие.

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

 

Рис. 2.28 Классы и артефакты

С понятием «компонент» часто ассоциируют компонентное или сборочного программирование, однако это не верно с точки зрения UML. В терминах UML компонентное или сборочное программирование манипулирует артефактами!

Компонент (в UML) – это частью модели, описывающая логическую сущность, которая существует только во время проектирования (design time), хотя в дальнейшем ее можно связать с физической реализацией (артефактом) времени исполнения (run time). Графически компоненты изображаются в виде прямоугольника со специальным значком, как показано на рис. 2.29.

 

Рис. 2.29 Компонент

Вариант реализации компанента изображен на рис. 2.30.

Рис. 2.30 Реализация компонента