2016-10-13 92 views
0

关联的概念及其与UML设计的关系。如果某位专家能够给我一个关于附加的UML图片的想法或代码设计,我将不胜感激。双向关联

There are 3 differently designed UML as seen below

谢谢进阶!

public class Borrower { 
    private String name; 

    public Borrower() { 
     Equipment[] tester = new Equipment[5]; 
     tester[0] = new Equipment(this); 
    } 
} 
public class Equipment { 
    Borrower[] person = new Borrower[10]; 

    public Equipment(Borrower b) { 
     person[0] = b; 
    } 
} 

回答

0

一个可能的解决方案是

public class Loan { 
    private final Date date; 
    private final Borrower borrower; 
    private final Equipment equipment; 

    Loan(Borrower borrower, Equipment equipment, Date date) { 
     this.borrower = borrower; 
     this.equipment = equipment; 
     this.date = date; 
    } 
} 

public class Borrower { 
    private String name; 
    private final List<Loan> loans = new ArrayList<>(); 

    public Borrower(String name, Equipment equipment, Date date) { 
     this.name = name; 
     borrow(equipment, date); 
    } 

    public void borrow(Equipment equipment, Date date) { 
     Loan loan = new Loan(this, equipment, date); 
     loans.add(loan); 
     equipment.addLoan(loan); 
    } 
} 

public class Equipment { 
    private final List<Loan> loans = new ArrayList<>(); 

    void addLoan(Loan loan) { 
     loans.add(loan); 
    } 
} 
+0

也许你可以加几句解释。这会让我最后回答你的答案:-) –

+0

你提到哪个图? –

+0

@EnHuiLim第二或第三。 – saka1029

0

第2和第3个表示是替代方式来表达同样的事情。它被称为关联类。这里Loan是关联类,它作为它所连接的两个类之间的链接,从而添加一些额外的属性/操作。关联类总是表示1-m-n-1关系。

第一个图表示例是一个更加面向业务的表示。它使用带有三角形的共同位置标签来显示阅读顺序。它将如何实施。一个关联类将是一个常见的方式来做到这一点。但你也可以在Borrower的内部持有一排Equipment。您可能会注意到这里的借款日期不存在。