#class #uml #diagram
#класс #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. Таким образом, это было бы эквивалентом вашей нижней диаграммы: