Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

\"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()); } }