Modify the Course class from Chapter 15 so that it implement

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

Solution

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

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site