【问题标题】:Bi-directional association双向关联
【发布时间】:2016-10-13 17:41:16
【问题描述】:

关联的概念以及它与 UML 设计的关系。如果有专家能给我一个与所附UML图片相关的想法或代码设计,我将不胜感激。

谢谢你的建议!!!

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;
    }
}

【问题讨论】:

    标签: java uml polymorphic-associations bidirectional


    【解决方案1】:

    一种可能的解决方案是

    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);
        }
    }
    

    【讨论】:

    • 也许你可以补充几句解释。这会让我对你的答案投赞成票:-)
    • 你指的是哪个图表?
    • @EnHuiLim 第二或第三。
    • @saka1029 我不知道提供的代码是否指的是第二张图。但我想分析第二个 UML 和第三个 UML 是如何工作的。并且还给出了最适合 UML 设计格式的案例研究。
    【解决方案2】:

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

    第一个图表示例是更面向业务的表示。它使用带有显示阅读顺序的三角形的常用标签。它留下了如何实现这一点。关联类将是执行此操作的常用方法。但是你也可以在Borrower 中保存一个Equipment 数组。您可能会注意到这里没有显示借用日期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 2013-08-27
      • 2018-08-24
      • 2013-12-02
      相关资源
      最近更新 更多