为什么UML不正确,因为Java代码实现是聚合?

问题描述

我有实现聚合的Java代码,但是在IntelliJ Idea中生成UML图时,它是用合成符号(实心菱形)生成的。

代码如下:

public class Address {

    private String city;
    private String state;
    private String country;

    public Address(String city,String state,String country) {
        this.city = city;
        this.state = state;
        this.country = country;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    @Override
    public String toString() {
        return "Address{" +
                "city='" + city + '\'' +
                ",state='" + state + '\'' +
                ",country='" + country + '\'' +
                '}';
    }
}

public class Employee {

    private String name;
    private int age;
    private Address address;

    public Employee(String name,int age,Address address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ",age=" + age +
                ",address=" + address +
                '}';
    }
}


public class Practice {

    public static void main(String[] args) {

        Address address = new Address("City","State","Country");
        Employee employee = new Employee("Name",22,address);


        System.out.println(employee);
        employee = null;
        System.out.println(employee);
        System.out.println(address);
    }
}

enter image description here

代码运行时,符合聚合概念的要求。

我的问题是:

  1. 我的代码不能正确实现聚合吗?
  2. 如果实现正确,那么为什么我的UML图工具将Java代码实现检测为Employee和Address之间的组合?

我期待准确的解释。

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)