\"Modify the Course class from Chapter 15 so that it implements the Comparable i
ID: 3935780 • Letter: #
Question
"Modify the Course class from Chapter 15 so that it implements the Comparable interface. Order the courses first by department and then by course number. Then write a program that uses an ordered list to maintain a list of courses."
This program must demonstrate that your newly written Course.compareTo() method works correctly. You MUST use the built-inComparable interface.
You canNOT use a built-in Java data structure for the ordered list. You can use either an ArrayList<Course> implementation or a LinkedList<Course> implementation, but be sure to include implementation .java files like those in the text.
import java.io.Serializable;
/**
* Represents a course that might be taken by a student.
*
* @author Java Foundations
* @version 4.0
*/
public class Course implements Serializable
{
private String prefix;
private int number;
private String title;
private String grade;
/**
* Constructs the course with the specified information.
*
* @param prefix the prefix of the course designation
* @param number the number of the course designation
* @param title the title of the course
* @param grade the grade received for the course
*/
public Course(String prefix, int number, String title, String grade)
{
this.prefix = prefix;
this.number = number;
this.title = title;
if (grade == null)
this.grade = "";
else
this.grade = grade;
}
/**
* Constructs the course with the specified information, with no grade
* established.
*
* @param prefix the prefix of the course designation
* @param number the number of the course designation
* @param title the title of the course
*/
public Course(String prefix, int number, String title)
{
this(prefix, number, title, "");
}
/**
* Returns the prefix of the course designation.
*
* @return the prefix of the course designation
*/
public String getPrefix()
{
return prefix;
}
/**
* Returns the number of the course designation.
*
* @return the number of the course designation
*/
public int getNumber()
{
return number;
}
/**
* Returns the title of this course.
*
* @return the prefix of the course
*/
public String getTitle()
{
return title;
}
/**
* Returns the grade for this course.
*
* @return the grade for this course
*/
public String getGrade()
{
return grade;
}
/**
* Sets the grade for this course to the one specified.
*
* @param grade the new grade for the course
*/
public void setGrade(String grade)
{
this.grade = grade;
}
/**
* Returns true if this course has been taken (if a grade has been received).
*
* @return true if this course has been taken and false otherwise
*/
public boolean taken()
{
return !grade.equals("");
}
/**
* Determines if this course is equal to the one specified, based on the
* course designation (prefix and number).
*
* @return true if this course is equal to the parameter
*/
public boolean equals(Object other)
{
boolean result = false;
if (other instanceof Course)
{
Course otherCourse = (Course) other;
if (prefix.equals(otherCourse.getPrefix()) &&
number == otherCourse.getNumber())
result = true;
}
return result;
}
/**
* Creates and returns a string representation of this course.
*
* @return a string representation of the course
*/
public String toString()
{
String result = prefix + " " + number + ": " + title;
if (!grade.equals(""))
result += " [" + grade + "]";
return result;
}
}
Explanation / Answer
import java.io.Serializable; public class Course implements Serializable, Comparable { private String prefix; private int number; private String title; private String grade; /** * Constructs the course with the specified information. * * @param prefix the prefix of the course designation * @param number the number of the course designation * @param title the title of the course * @param grade the grade received for the course */ public Course(String prefix, int number, String title, String grade) { this.prefix = prefix; this.number = number; this.title = title; if (grade == null) this.grade = ""; else this.grade = grade; } /** * Constructs the course with the specified information, with no grade * established. * * @param prefix the prefix of the course designation * @param number the number of the course designation * @param title the title of the course */ public Course(String prefix, int number, String title) { this(prefix, number, title, ""); } /** * Returns the prefix of the course designation. * * @return the prefix of the course designation */ public String getPrefix() { return prefix; } /** * Returns the number of the course designation. * * @return the number of the course designation */ public int getNumber() { return number; } /** * Returns the title of this course. * * @return the prefix of the course */ public String getTitle() { return title; } /** * Returns the grade for this course. * * @return the grade for this course */ public String getGrade() { return grade; } /** * Sets the grade for this course to the one specified. * * @param grade the new grade for the course */ public void setGrade(String grade) { this.grade = grade; } /** * Returns true if this course has been taken (if a grade has been received). * * @return true if this course has been taken and false otherwise */ public boolean taken() { return !grade.equals(""); } /** * Determines if this course is equal to the one specified, based on the * course designation (prefix and number). * * @return true if this course is equal to the parameter */ public boolean equals(Object other) { boolean result = false; if (other instanceof Course) { Course otherCourse = (Course) other; if (prefix.equals(otherCourse.getPrefix()) && number == otherCourse.getNumber()) result = true; } return result; } /** * Creates and returns a string representation of this course. * * @return a string representation of the course */ public String toString() { String result = prefix + " " + number + ": " + title; if (!grade.equals("")) result += " [" + grade + "]"; return result; } /** * CompareTo override to allow for comparison of prefix and course number * * @param incourse Course object as comparison * @return int 0 = same, 1 = comarator larger, -1 = comparison larger * Strictly speaking, mutli-factor compareTo() methods are seriously frowned upon. Comparators are preferred. */ @Override public int compareTo(Course incourse) { int i = getPrefix().compareTo(incourse.getPrefix()); if (i != 0) { return i; } return Integer.compare(getNumber(), incourse.getNumber()); } }Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.