@overview Module
represents the module object of a CourseMan program
@author
*/
public class Module {
private static int count = 1;
private String name;
private int semester;
private int credits;
private String code;
/**
@effects Initializes a Module
object
*/
public Module(){
name = "No name";
semester = 1;
credits = 0;
code = "M000";
}
/**
@param newModule a Module
object
@effects Creates a Module
object with newModule
*/
public Module (Module newModule){
if (newModule == null){
System.out.println("Fatal error creating module.");
System.exit(0);
}
name = newModule.name;
semester = newModule.semester;
credits = newModule.credits;
code = newModule.code;
}
/**
@param newName a String
to be set as a module's name
@param newSemester an integer
to be set as a module's semester
@param newCredits an integer
to be set as a module's credits
@effects Creates a new Module
object with predefined name, semester and credits
/
public Module(String newName, int newSemester, int newCredits){
if(newName == null || newSemester <= 0 || newCredits <= 0){
System.out.println("Fatal error creating module.");
System.exit(0);
}
name = newName;
semester = newSemester;
credits = newCredits;
int no = semester100 + count;
code = "M" + no;
count++;
}
/**
@param newName a String
to be set as a module's name
@modifies this.name
@effects Takes newName
to update a module's name
*/
public void setName(String newName){
if(newName == null){
System.out.println("Fatal error setting module's name.");
System.exit(0);
}
name = newName;
}
/**
@param newSemester an int
to be set as a module's semester
@modifies this.semester
@effects Takes newSemester
to update a module's semester
/
public void setSemester(int newSemester){
if (newSemester <= 0){
System.out.println("Fatal error setting module's semester.");
System.exit(0);
}
semester = newSemester;
int no = (int) Integer.parseInt(code.substring(1));
if (((no - count - 1)/100) < semester){
no = semester100 + (count - 1);
code = "M" + no;
}
}
/**
@param newCredits an integer
to be set as a module's number of credits
@modifies this.credits
@effects Takes newCredits
to update a module's number of credits
*/
public void setCredits (int newCredits){
if (newCredits <= 0){
System.out.println("Fatal error setting module's credits.");
System.exit(0);
}
credits = newCredits;
}
/**
@effects Returns a module's code
*/
public String getCode(){
return code;
}
/**
@effects Returns a module's name
*/
public String getName(){
return name;
}
/**
@effects Returns a module's semester
*/
public int getSemester(){
return semester;
}
/**
@effects Returns a module's number of credits
*/
public int getCredits(){
return credits;
}
/**
@effects Returns String
representation of a Module
object
*/
public String toString(){
return "Module: " + code + " - " + name + " - semester " + semester + " - " + credits + " credits";
}
/**
@param otherModule a Module
object to compare
@effects Returns true
if this
points to the same
object as otherModule
, otherwise returns false
*/
public boolean equals(Module otherModule){
return (code.equals(otherModule.code));
}}