将 UML 图映射到 Java 代码转换

https://img.mukewang.com/64ccae400001e11106330251.jpg

你好,我正在尝试将这个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;

    }

}


素胚勾勒不出你
浏览 160回答 2
2回答

郎朗坤

没有将 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 代码中的情况就是后者。

繁星coding

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{
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java