You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:我的UML类图中各类关系是否正确?

UML类图关系修正建议

代码实现

package part1;
public enum Role {
    STUDENT, ACADEMIC
}

package part1;
import part1.part11.Students;
import part1.part12.AcademicStaffMembers;
public class Controller {
    private int id;
    public Controller(Role role) {
        if(role == Role.ACADEMIC){
            AcademicStaffMembers academicStaffMembers=new AcademicStaffMembers();
        }
        else if(role == Role.STUDENT) {
            Students students = new Students();
        }
    }
}

package part1.part11;
public class Students{
    private Student[] students;
}

package part1.part11;
import part2.Module;
import part2.ModuleCode;
public class Student {
    private int id;
    private Module[] modules;
    private ModuleCode[] moduleCodes;
}

package part1.part12;
public class AcademicStaffMembers {
    private AcademicStaffMember[] academicStaffMembers;
}

package part1.part12;
import part2.Module;
import part2.ModuleCode;
public class AcademicStaffMember {
    private int id;
    private Module[] modules;
    private ModuleCode[] moduleCodes;
}

package part2;
public class Module{
    private ModuleCode moduleCode;
}

package part2;
public enum ModuleCode{
    CSC1022, CSC1023, CSC1024, CSC1025, CSC1026, CSC1027, CSC1028, CSC1029, CSC1030, CSC1031
}

用户原关系认定与修正说明

Controller

  • 原认定:Association with Role → 修正:Dependency(依赖)
    原因:Controller仅在构造方法中接收Role参数作为判断条件,没有长期持有Role的引用,符合依赖(使用另一个类作为方法参数/局部变量)的定义,而非关联(长期持有引用的对象间关系)。
  • 原认定:Dependency with Students → 正确
  • 原认定:Dependency with AcademicStaffMembers → 正确
    原因:Controller仅在构造方法中局部创建这两个类的实例,未持有引用,属于依赖关系。

Students

  • 原认定:Composition with Student(菱形在Students)→ 修正:Aggregation(聚合,空心菱形)
    原因:Students作为容器类持有Student数组,但Student对象理论上可以独立于Students存在(比如可以单独创建Student实例),聚合更符合这种“整体包含部分,部分可独立”的关系;组合要求部分完全依赖整体生存,代码中没有体现Student无法脱离Students存在的限制。

AcademicStaffMembers

  • 原认定:Composition with AcademicStaffMember(菱形在AcademicStaffMembers)→ 修正:Aggregation(聚合,空心菱形)
    原因:同Students/Student的逻辑,AcademicStaffMember可以独立于容器类存在,聚合更准确。

Student

  • 原认定:Association with Module → 正确
    原因:Student长期持有Module数组的引用,属于对象间的关联关系。
  • 原认定:Association with ModuleCode → 修正:Dependency(依赖)
    原因:ModuleCode是枚举类型,其实例是全局常量,Student只是使用这些常量,并非持有一个“独立对象”的引用,符合依赖关系的定义。

AcademicStaffMember

  • 原认定:Association with Module → 正确
  • 原认定:Association with ModuleCode → 修正:Dependency(依赖)
    原因:同Student/ModuleCode的逻辑,枚举常量属于全局资源,这里是使用而非对象关联。

Module

  • 原认定:Composition with ModuleCode(菱形在Module)→ 修正:Association(关联)
    原因:ModuleCode是枚举,其实例独立于Module存在(枚举常量在程序启动时就已初始化),Module只是持有一个常量引用,不符合组合“部分无法脱离整体”的核心要求。从代码看是成员变量持有引用,标注关联更合适。

参考类图

UML类图

内容的提问来源于stack exchange,提问作者JW9639

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:00:13