UML отношения в этом коде Java

1

Я хотел бы услышать, что здесь существует все отношения. Я предполагаю, что здесь существуют такие отношения, как зависимость и агрегация с множественностью 1-1?

public class Main {

    public Main() {
        Model model = new Model();
        View view = new View();
        Controller controller = new Controller(view, model);
    }

    public static void main(String[] args) {
        new Main();
    }

}

public class Controller {

    private Model model;
    private View view;

    public Controller(Model model, View view) {
       this.model = model;
       this.view = view;
    }

}

public class Model { ... }

public class View { ... }
Теги:
relationships
uml

1 ответ

1
Лучший ответ

Это просто, здесь нет необходимости в обратном проектировании (построении модели из кода).

Main имеет три ассоциации: один с Model, один с View и один с Controller, в то время как Controller имеет две ассоциации: одну с Model и одну с View.

Обратите внимание, что нет необходимости в ассоциациях Main-Model и Main-View потому что они могут быть получены через main.controller.model и main.controller.view.

Main-Controller ассоциации (а также Main-Model и Main-View) можно просмотреть/смоделировать как композицию, поскольку основной экземпляр программы (процесс) состоит из экземпляра контроллера, который связан с моделью и просмотреть экземпляр. Все три композиции имеют зависимость от жизненного цикла: любая модель, представление и экземпляр контроллера экзистенциально зависят от его основного совокупного экземпляра.

  • 0
    Я бы назвал отношения Main с Model, Controller и View максимально зависимыми, поскольку они создаются только в его конструкторе, а не в полях класса. Странный выбор, но все же. И вы могли бы потратить некоторое время на обсуждение, являются ли модель контроллера и представление контроллера агрегацией или ассоциацией. Но было бы лучше, если бы время проводилось по-другому, поэтому мне нравится, как ты замаскируешь это. :)
  • 0
    Вы правы, не совсем понятно, каков смысл этого фрагмента кода. Объявление локальных переменных в конструкторе для ссылок на модель, представление и контроллер не имеет смысла (см., Например, stackoverflow.com/questions/20138948/variables-in-constructor ). Вот почему я интерпретировал это (не задумываясь) как намерение иметь нормальные ссылки через обычные свойства ссылок, объявленные как члены класса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню