Что это за связь типа агрегат между классами со стрелкой на конце? (Прочитано 7815 раз)

На диаграмме два класса связаны с друг другом связь агрегат. Поясните пожалуйста:

Почему агрегатом связывают два класса?
Что означает стрелка на линии связи, направленная на класс "Видимость"?
Что означает цифры 0..3 рядом с классом "видимость"? Это типа "Видимость" можно создать в количестве о или 3?



Это совершенно базовые знания.

На рисунке показана композиция.
Когда хотят показать, что один класс является частью другого. Подумайте что такое АГРЕГАТ - что-то состоящее из частей (разборных) и КОМПОЗИТ - что-то неразъемное. Например игрушка из киндер-сюрприза - агрегат, а сам шоколад - композит.
Стрелка показывает навигацию, т.е. Наблюдению за погодой доступны по ссылке составляющие класса Видимость.
0..3 говорит, что с 1 объектом класса Наблюдение за погодой может быть связано 0, 1,2 или 3 объекта класса Видимость

https://www.uml-diagrams.org/composition.html?context=class-diagrams



Спасибо большое!



Так как вопрос решён, то можно донудеть до конца, не влияя на решение.

I. Связь агрегации или композиции показывает, что:
1) для связанных классов характерно, что экземпляры одного класса на довольно длительные сроки соединяются с экземплярами второго класса;
2) соединённые экземпляры неравноправны, экземпляры того класса, возле которого ромб, главнее;
3) при композиции есть дополнительные ограничения:
3а) экземпляры подчинённого класса не могут быть соединены одновременно с более чем одним экземпляром главного класса;
3б) при удалении экземпляра главного класса удаляются экземпляры подчинённого класса, соединённые с ним в этот момент.

II. Стрелка на любой ассоциации (а композиция и ассоциация -- это подвиды ассоциации) явно указывает на возможность навигации вдоль соединений между экземплярами связанных классов в обозначенную сторону. Если навигация возможна, то, идя от экземпляра класса на другом конце, можно эффективно придти ко всем связанным с ним экземплярам класса на конце, куда указывает стрелка. Для простоты "эффективно придти" читают как "есть ссылки", но это не совсем по стандарту. Отсутствие стрелки на другом конце можно прочесть разными способами. Например: а) что мы явно не обозначаем, есть ли навигация в другую сторону; б) что навигации в другую сторону нет; в) что навигация в другую сторону не указана, т. к. её можно определить по тому, кто владеет концом ассоциации.
Наличие навигации, вообще говоря, не означает, что доступны составляющие связанного класса. Видимость (visibility) составляющих (как и самого класса) определяет будут доступны части соединённых экземпляров или нет. Но это всё буквоедство. Если не копать глубоко, то указанное прочтение может быть использовано.

III. 0..3 -- это не просто 0..3, а {unordered, unique} 0..3. Это значит, что соединённые с каким-либо экземпляром класса Наблюдение экземпляры класса Видимость составляют коллекцию со следующими свойствами:
1) в коллекцию входят от 0 до 3-х элементов;
2) элементы коллекции не упорядочены (ни для одного из них нельзя указать предшествующий ему и/или следующий за ним);
3) элементы коллекции не повторяются (каждый входит в коллекцию однократно).
Замечание о глубоком копании, сделанное выше, справедливо и здесь.
[...и улетело НЛО.]



Спасибо большое за внимание к вопросу, и Вашему ответу!




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19