亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 UML 圖映射到 Java 代碼轉換

將 UML 圖映射到 Java 代碼轉換

素胚勾勒不出你 2023-08-04 15:52:10
你好,我正在嘗試將這個UML圖直接轉換為java代碼,下面是我的代碼,它似乎無論如何都無法編譯。我不太確定如何放置可選的多重性,例如 0..* 和 0..1。感謝您的幫助。public class Person{    private String name;    private Person mom;    private Person dad;    private ArrayList<Person> child;    private ArrayList<Person> friend;    private ArrayList<School> alumni;    private School current = new School();    public Person(String name, Person mom, Person dad, ArrayList<Person> child, ArrayList<Person> friend, ArrayList<School> alumi, School current){        name = this.name;        mom = this.mom;        dad = this.dad;        child = this.child;        friend = this.friend;        alumni = this.alumni;        current = this.current;    }}public class School{    private String name;    private ArrayList<Person> student;    public School(String name, ArrayList<Person> student){        name = this.name;        student = this.student;    }}
查看完整描述

2 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

沒有將 UML 轉換為 Java 的標準化方法,但我可以根據 UML 和 Java 語義告訴您什么是正確的,什么是不正確的。

類C1和C2之間的關聯可以通過類C1中的屬性、或者通過類C2中的屬性或者通過兩個類中的屬性來實現。如果關聯沒有箭頭,則所有三個選項都是可能的,并且未定義這三個選項中哪一個是最好的。如果關聯是從 C1 指向 C2 的箭頭,則第一個選項是最佳選項,第二個選項不正確,第三個選項是允許的。我檢查了您的 Java 代碼,它符合這些規則。

0..1如果類 C1 有一個屬性 P 實現類 C1 和類 C2 之間的關聯,并且該關聯在 C2 一側具有多重性,則 P 應該具有類型 C2,并且 C1 應該具有不初始化 P 的構造函數。您的 Java 代碼是不正確的,因為您不應該初始化 Person.School。

如果重數是*0..*,那么 P 應該是 C2 的某種集合。類 C1 應該有一個構造函數,該構造函數要么不初始化 P,要么可以用空集合初始化 P。Java 代碼中的情況就是后者。


查看完整回答
反對 回復 2023-08-04
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

public class Person{

? ? private String name;

? ? private Person mom;

? ? private Person dad;

? ? private ArrayList<Person> child;

? ? private ArrayList<Person> friend;

? ? private ArrayList<School> alumni;

? ? private School current = new School();

這部分似乎是正確的,但學校除外,該學校應該為空,因為該人目前可能沒有在學習。


private School current;

關鍵字this(請參閱使用 this 關鍵字)引用 Java 中的當前對象,因此構造函數應寫為


public Person(String name, Person mom, Person dad, ArrayList<Person> child, ArrayList<Person> friend, ArrayList<School> alumi, School current){

? ? this.name = name;

? ? this.mom = mom;

? ? ...

}

學校班級也有同樣的問題:


public class School{

? ? private String name;

? ? private ArrayList<Person> student;


? ? public School(String name, ArrayList<Person> student){

? ? ? ? this.name = name;

? ? ? ? this.student = student;

? ? }

}

如果您在同一個文件中定義兩個類,則必須從 School 的類定義中刪除 public,這將變為


class School{

查看完整回答
反對 回復 2023-08-04
  • 2 回答
  • 0 關注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號