UML - связь между классами Java, если она не определена в поле - PullRequest
3 голосов
/ 11 марта 2019
class ClassA {
    private JFrame frame = new JFrame(); // has-a, composition 

    public ClassA() 
    {
       frame.add(new ClassB());
    }       
}

существует ли название для связи / ассоциации между ClassA и Classb? ClassA не имеет поля для ClassB.

Я читал об ассоциациях классов в "Введение в программирование на Java" Й. Даниэля Ляна и использовал Google, но не могу найти пример с этим конкретным отношением.

Я рисую UML-диаграмму некоторого существующего кода и хочу получить правильную аннотацию отношения.

Может быть, я обдумываю это, и это просто ассоциация?

Ответы [ 2 ]

3 голосов
/ 11 марта 2019

Ваши экземпляры ClassB запоминаются через JFrame , поэтому вы можете использовать отношение классов:

enter image description here

или просто добавьте зависимость от ClassA до ClassB

1 голос
/ 11 марта 2019

Закрытый атрибут обычно моделируется как однонаправленная ассоциация (даже если навигация может быть достигнута и другими способами, кроме принадлежащего атрибута).

Ваш исходный код определяет атрибут frame, поэтому вы должны смоделировать ассоциацию между ClassA и JFrame.

Тогда класс JFrame имеет операцию add для объекта ClassB. Это имеет смысл, только если JFrame имеет ассоциацию с ClassB.

Наконец, ClassA создает новый экземпляр ClassB. Этот факт можно визуализировать с помощью отношения «создать» (пунктирная открытая стрелка).

Никаких других связей между ClassA и ClassB не существует. Поскольку мы не знаем, является ли атрибут JFrame закрытым, для ClassA может даже оказаться невозможным доступ к ClassB, даже если он его создал.

Композиция может существовать между JFrame и ClassB, но ваш Исходный код не дает достаточного контекста для этого решения. Между ClassA и ClassB нет никакого смысла, поскольку они даже не связаны, будь то посредством AssociationClass или обычной ассоциации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...