2013-07-01 3 views
4

Я хотел бы создать диаграмму классов для моего проекта java. Даже если это звучит очень просто, я сейчас немного смущен.Что связано с диаграммами классов

Я знаком с символикой, но когда мне нужно создать соединение между двумя классами?

Например, у меня есть StartClass:

Model model = new Model(); 
View view = new View(); 
Controller controller = new Controller(view, model); 

Ясно, что StartClass связано с Model, View и Controller. Но есть Controller сейчас также связано с Model и View?

Или другой пример:

ClassA classA = new ClassA(); 
ClassB classB = new ClassB(); 

classB.methodB(classA); 

ли ClassB и ClassA теперь имеют связь между собой?

Извините за это очень простой вопрос ...

ответ

3

Если ваш контроллер выглядит следующим образом, то есть подключение к модели и представления.

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

В общем случае любая ссылка класса, сохраненная в переменной-члене внутри класса, будет соединением в диаграмме классов.

+1

благодарит за вас четкий ответ! – cruxi

+1

Его нельзя хранить в переменной-члене, подлежащей подключению.Например, класс, который выполняет манипуляции с объектами определенного класса без отслеживания управляемых объектов, имеет соединение с этим другим классом (конечно, эта функциональность может быть реализована в другом классе, поскольку она не зависит от на первом (запрет на такие случаи, когда разрешение первого класса обрабатывать манипуляции более обобщенно, обычно, когда интерфейсы вступают в игру], но это другая проблема). – JAB

1

Прошло пару лет с тех пор, как мне приходилось суетиться с диаграммами UML, но у Википедии есть хорошее объяснение обычных отношений (ассоциация, агрегация, состав, обобщение [наследование классов], реализация [реализация интерфейса ]).

http://en.wikipedia.org/wiki/Class_diagram#Relationships

В случае classB.methodB(classA);, я считаю, что было бы считать общую ассоциацию, так как это один объект выполняет действие на/с другой (если methodB() делает что-то для хранения classA в classB, было бы агрегирование в частности, или, возможно, даже состав, если classB будет содержать до classA для остальной части программы).

0

Когда вы получаете в шаблон вещей MVC получить немного сложнее, но MSDN имеет хорошее объяснение того, как модель этих отношений: http://msdn.microsoft.com/en-us/library/ff649643.aspx

В целом, однако, когда дело доходит до моделирования вашего приложения, вы бы только подключайте те классы, которые объявлены как члены другого класса, а не все, которые используются в классе в некоторой емкости (добавили бы класс string или int только потому, что используете его как параметр метода?).

1

В этом примере вы создаете разные объекты классов: Model, View и Controller. Так как вы говорите, что класс связан с Model, View и Controller, а также с контроллером, он связан с Model и View.

Во втором примере оба класса: класс A и класс B имеют новое соединение между собой.

+0

О, хорошо, спасибо за ссылки на мои примеры! – cruxi

Смежные вопросы