У меня Intellij IDEA 2016.1.1. Почему Intellij UML-диаграмма всегда рисует композиционную линию вместо агрегации?uml aggregation в Java
Мой код:
public class Address {
int streetNum;
String city;
String state;
String country;
Address(int street, String c, String st, String coun)
{
this.streetNum=street;
this.city =c;
this.state = st;
this.country = coun;
}
}
public class StudentClass {
int rollNum;
String studentName;
Address studentAddr;
StudentClass(int roll, String name, Address addr){
this.rollNum=roll;
this.studentName=name;
this.studentAddr = addr;
}
public static void main(String args[]){
Address ad = new Address(55, "Agra", "UP", "India");
StudentClass obj = new StudentClass(123, "Chaitanya", ad);
System.out.println(obj.rollNum);
System.out.println(obj.studentName);
System.out.println(obj.studentAddr.streetNum);
System.out.println(obj.studentAddr.city);
System.out.println(obj.studentAddr.state);
System.out.println(obj.studentAddr.country);
}
}
Вы можете видеть, что линия описывается Состав? Почему?
Intellij ничья:
Я не очень хорошо знаком с intellij, но ваш Student Class содержит основной метод, в котором объекты создаются. Если вы хотите создать отдельный класс для основного метода, он больше не должен отображаться как композиция. –
Я знаю это. Зачем? ( – Sustav
Поскольку Student Class владеет жизненным циклом объекта Address. Я думаю, что это немного запутанно, так как у вас есть свой основной статический метод void в вашем классе студента. Если бы вы взяли свой основной метод и поместили его в совершенно отдельный класс , это будет Агрегация/Ассоциация, потому что объект-ученик не будет владеть жизнью объекта Address. https://nirajrules.wordpress.com/2011/07/15/association-vs-dependency-vs-aggregation-vs-composition/ –