Класс ассоциаций это ассоциация которая является классом подобно связям ассоциации экземпляры класса ассоциации обладают индивидуальностью связаны с теми объектами между которыми они проводятся. Подобно обычным классам классы ассоциаций могут иметь атрибуты и операции и участвовать в ассоциациях. Классы ассоциаций присутствуют в формулировке задачи в виде наречий или получаются абстрагированием известных значений.
User |
protectedFile |
*
AccesibleBy +accessPrmission |
/etc/apache read JohnDoe
/etc/apache read-write MaryBrown
/users/JohnDoe read-write johnDoe
Access Permission – (разрешение доступа) является атрибутом AccessibleBy. Данные в нижней части рисунка показывают возможные значения каждой связи. Класс ассоциации обозначается прямоугольником прикрепленным к ассоциации пунктирной линией. Атрибут Access Permission относиться к файлу и пользователю одновременно и не может быть прикреплен только к одному из них без потери информации(у каждого пользователя на различные файлы различные права доступа.
Атрибуты в ассоциациях типа один-ко-многим
На рисунке показаны атрибуты двух ассоциаций типа 1 ко многим. Каждый человек работающий на компанию занимает определенную должность (JobTitle) и получает жалование(salary), директор(boss) оценивает работу каждого сотрудника (performance rating). Атрибуты могут присутствовать и в ассоциациях типа один-к-одному.
Атрибуты ассоциаций типа один-к-одному и один ко многим можно упаковать в класс противоположный полису с кратностью один(жалование и должность можно перенести в класс Person) однако это делать не рекомендуется, поскольку кратность 1 может измениться.
Класс ассоциаций позволяет четко указать индивидуальность.
Пользователи(Users) могут проходить авторизацию на нескольких рабочих станциях (workstation) каждая авторизация обладает приоритетом(priority) и правами доступа(privilleges), у пользователя есть домашний каталог(HomeDirectory) на всех рабочих станциях, где он авторизован, но у нескольких рабочих станций и пользователей может быть один домашний каталог.
Классы ассоциаций являются важным аспектом моделей классов поскольку они позволяют точно указать индивидуальности. Не следует путать классы ассоциаций с ассоциациями которые были выделены в отдельный класс.
Класс ассоциации порождает один единственный экземпляр для каждой пары человека и компании, напротив экземпляров покупок(Purchase) между одним человеком и одной компанией может быть сколько угодно, каждая покупка обладает собственной индивидуальностью и собственными значениями количества даты и стоимости.