package cen.col.course.demo;
import java.io.Serializable;
public class Course implements Serializable {
private static final long serialVersionUID = 1L;
protected String code;
protected String title;
protected Professor professor;
public Course( String code) throws InvalidDataException {
super();
setCode(code);
}
public Course(String code, String title ) throws InvalidDataException {
this(code);
setTitle(title);
}
public Course(String code, String title, Professor professor) throws InvalidDataException {
this(code,title);
setProfessor(professor);
}
public String getCode() {
return code;
}
protected void setCode(String code) throws InvalidDataException {
if ( code == null || code.length() < 1) {
throw new InvalidDataException("Course must have a course code");
}
this.code = code;
}
public String getTitle() {
return title;
}
public void setTitle(String title) throws InvalidDataException {
if ( title == null || title.length() < 1) {
throw new InvalidDataException("Course must have a title");
}
this.title = title;
}
public Professor getProfessor() {
return professor;
}
public void setProfessor(Professor professor) {
this.professor = professor;
}
public String toString() {
String output = getCode() + ": [" + getTitle() + "]";
if (getProfessor() != null ) {
output += " is taught by " + getProfessor();
}
return output;
}
public boolean equals(Course c) {
if ( ! this.getCode().equals(c.getCode())){
return false;
}
if ( ! this.getTitle().equals(c.getTitle())){
return false;
}
// should the prof field be included in test for equality?
if ( ! this.getProfessor().equals(c.getProfessor())){
return false;
}
return true;
}
}
3 つの質問があります。
教授がコンストラクターからセッター メソッドを呼び出していることに気付きました。私は少し調べてみましたが、それについてはさまざまな考えがありました。大丈夫だと言う人もいれば、サブクラスを使用するときに注意する必要があると言う人もいます。コンストラクターからセッターを呼び出しても大丈夫ですか?
彼女はコンストラクターからセッターを呼び出しているため、コンストラクターは例外をスローします。私の質問は、コンストラクターからセッターを呼び出すことが安全な方法ではない場合、それを行う適切な方法は何ですか? 私の推測では、引数のないコンストラクターを宣言し、セッターを使用してオブジェクトを構築します。
私はこれを行うと思いますが、問題外ですか?
Course createCourse = new Course("1234","プログラミング 1","パム ハルパート");
私は 3 つの引数を取るコンストラクターを呼び出していますが、コンストラクターからセッターを呼び出すことが安全でない場合、どのようにこれを行い、例外を設定しますか? if ステートメントを使用できますか? 何かが空白かどうかを確認し、必要に応じて例外をスローしますか?