我有这个机器的问题,这里是一个棘手的部分,让我有点困惑。
这是用例:
学生注册一个部分。
系统验证没有计划冲突。
系统验证学生是否已采取所需的先决条件。
所以我创建了4个对象,分别叫做学生,科室,时间表和主题。 我只会向你展示我的“主题”课,因为这是我迷惑的地方。
在那里我感到困惑的部分是这样的:
系统验证该学生已采取必要的先决条件(S)。
我该如何正确建模? 我得到了一个主语对象的先决条件,但是如果主语没有先决条件呢?我犹豫了,因为我不能只让这样的:
Subject math01 = new Subject(1,"math01",null);
我想传递null对象上是不合适的。我想避免空指针异常。我该如何解决这个问题? :( 我觉得我做错了。
public class Subject {
//Each subject is worth three (3) units.
private int units = 3;
private int subjectID;
private String subjectName;
private Subject prerequisite; //<----How do I express that a subject has a prerequisite? Am I doing this right?
public Subject(int subjectID, String subjectName, Subject prerequisite) {
this.subjectID = subjectID;
this.subjectName = subjectName;
this.prerequisite = prerequisite;
}
public int getUnits() {
return units;
}
public int getSubjectID() {
return subjectID;
}
public String getSubjectName() {
return subjectName;
}
public Subject getPrerequisite(){
return prerequisite;
}
public boolean conflictWith(Subject newSubject){
return (this.subjectID == newSubject.getSubjectID());
}
}
不是使用'Subject prerequisite',而是使用'Set prerequisites'。如果该集合为空,则该主题不具有任何先决条件。 –
Marcelo
2012-01-04 16:37:36
特别是因为受试者(/教育班)可能有多个预先需求。为了获得最佳效果,实现'.equals()'和'.hashcode()'(IDE默认值应该没问题)。 – 2012-01-04 16:42:03
感谢兄弟,这似乎是合理的,因为一个主题可以有多个先决条件。如果先决条件大小为0,则表示它没有任何先决条件。 :D – 2012-01-04 16:46:41