2016-10-13 22 views
0

アソシエーションの概念と、それがUMLデザインにどのように関連しているか。私はいくつかの専門家が私にUMLの絵に関連したアイデアやコードデザインを与えることができれば感謝します。双方向アソシエーション

There are 3 differently designed UML as seen below

ADVに感謝します!

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第2または第3。 – saka1029

0

2番目と3番目の表現で同じことを示すための代替の方法です。これは関連クラスと呼ばれます。ここではLoanは関連クラスであり、接続する2つのクラス間のリンクとして機能し、追加の属性/操作を追加します。関連クラスは常に1-m-n-1の関係を表します。

最初の図の例は、よりビジネス指向の表現です。これは、読み取りの順序を示す三角形の共通場所ラベルを使用します。これがどのように実施されるかは未だに残しておく。関連クラスはこれを行う一般的な方法です。しかし、の中にEquipmentの配列を保持することもできます。ここに借り入れの日付がないことがわかります。