Интерпретация разницы в UML-диаграмме из трех классов подряд по сравнению с разделением «строки»

#class #uml #diagram

#класс #uml #диаграмма

Вопрос:

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

Для «Трех объектов подряд» я имею в виду макет, который будет выглядеть следующим образом (извините, моя диаграмма: введите описание изображения здесь

Для «общих строк» я имею в виду макет, который будет выглядеть следующим образом:

Пример диаграммы UMl

Ответ №1:

разница в доступе

В первом случае экземпляры Flat и экземпляры Tenant знают друг друга, и независимо от этого экземпляры Tenant и экземпляры LeaseAgreement знают друг друга. Экземпляры Flat не имеют прямого доступа к экземплярам LeaseAgreement, а экземпляры LeaseAgreement не имеют прямого доступа к экземплярам Flat, они могут обращаться к другим экземплярам только в том случае, если арендатор предлагает эти доступы любым способом (метод или общедоступный атрибут).

Во втором случае существует класс ассоциации, экземпляры Flat и Tenant знают друг друга больше, чем соответствующий экземпляр LeasingContract, указывающий, как они связаны.


разница в знаниях

В первом случае, предполагая, что скрытая множественность не равна 1, арендатор, имеющий две арендные платы, связан с двумя экземплярами Flat и двумя экземплярами LeaseAgreement, но в данной модели нет ничего, что позволяло бы связать правильный экземпляр LeaseAgreement с правильным экземпляром Flat, что означает, что модель, как она есть, не имеетскажите, для какой квартиры был написан договор аренды.

Во втором случае двусмысленности нет, каждая пара экземпляров Flat и Tenant связана с (фактически выбрасывает) правильным экземпляром LeasingContract

Ответ №2:

Обозначение на вашем нижнем рисунке называется ассоциативным классом (см. this wiki ). В основном это ярлык для 1-* AC *-1 отношения, в котором AC соединяет два класса, чтобы вы могли добавлять атрибуты и операции. В вашем примере AC есть Leasing contract , и он добавит информацию о продолжительности, оплате и т. Д. И два * были взяты * слева и справа на дальних концах ассоциации AC. Таким образом, это было бы эквивалентом вашей нижней диаграммы:

введите описание изображения здесь