java - 在java中实现1对1类

标签 java uml one-to-one

我在 Java 中实现 1 对 1 关联时遇到问题。例如,考虑以下类图:

enter image description here

我是这样实现的:

public class Student{
    private AttendanceRole attendance;

    public Student(AttendanceRole attendance){
        this.attendance=attendance;
        addTwoWayLink(this); //creates the two-way link between objects
    }

    public void setAttendanceRole(AttendanceRole a){ //if a students changes from 
        attendance = a;                              //part time to full time
    } 

}

public class AttendanceRole{
    private Student student;

    void addTwoWayLink(Student student){
        this.student=student;
    }

}

问题是这样的:

1) 假设我创建了一个学生对象,并且我想更改学生的出勤角色。在这种情况下,我调用 setAttendanceRole 方法。但我必须给它一个 attendanceRole 对象作为参数。由于这是一对一的关系,因此我给出的参数也有一个与之关联的学生。所以,这是一个问题。另外,如果没有到学生的链接,我无法创建 attendanceRole 对象,因为这是 1 对 1 关联。当我第一次尝试创建学生对象并调用其构造函数时,会发生同样的情况。我可以将 null 作为参数值,但在这种情况下,我不会损害 1 对 1 关系约束吗?我能做什么呢?

2)另外,我设计了这个类,以便我们可以创建一个学生对象并设置其AttendanceRole。我的意思是我们无法创建 attendanceRole 对象并设置其学生。这是一个坏主意吗?或者由设计者决定首先创建哪个对象。

谢谢

最佳答案

尝试重新安排您的类(class):

public enum ROLE_TYPE { FULL_TIME, PART_TIME }

public class student {

    private ROLE_TYPE attendanceRole;

    public SetRoleType( ROLE_TYPE type )
    {
        this.attendanceRole = type;
    }

    public GetRoleType()
    {
        return attendanceRole;
    }
}

关于java - 在java中实现1对1类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16192255/

相关文章:

java - Rally Rest Api-Android 应用程序-即使在导入所需的 jars 后也找不到类

Java OOP,如何将具有多个列表类型字段的类设计为单个类?

java - 如何在 Java 中存储一对一关系

hibernate - @OneToOne 同时使主键作为外键(Spring JPA/Hibernate)

java - JPA 2 - 一对一交叉引用

java - 使用实体管理器在多个模式中保存数据

java - 在 getter 和 setter 方法中将 LocalDate 解析为 String

java 用户定义的数组(和用户定义的数组大小)返回 [null, null, null, ...]

uml - 如何将 .vpp 文件转换为 pdf 文件

java - 如何在UML中表示一个类在发布spring事件时调用另一个类的方法