Java Assignment - GradeBookEntry Make GradeBookEntry an abstract class. Remove n
ID: 640822 • Letter: J
Question
Java
Assignment - GradeBookEntry
Make GradeBookEntry an abstract class. Remove numericGrade member variable.
Make getNumericGrade an abstract method. Add getData as an abstract method.
Make two subclasses of GradeBookEntry - HomeworkEntry and ExamEntry.
Exam has a curve. getNumericGrade should add the curve to the numericGrade.
Press down arrow for more assignment info.
Assignment cont.
HomeworkEntry can just return numericGrade as is.
Add appropriate constructors.
Add appropriate exception handling.
Here is the code:
import java.util.Scanner;
public class GradeBookEntry {
private Person student;
private String assessmentName;
private int numericGrade;
public GradeBookEntry( String assessmentName ){
this.assessmentName = assessmentName;
}
public GradeBookEntry(Person student, String assessmentName) {
this.student = student;
this.assessmentName = assessmentName;
}
public GradeBookEntry() {
}
// The next six methods are just getters and setters
// for the member variables of this class.
public Person getStudent() {
return student;
}
public void setStudent(Person person) {
this.student = person;
}
public String getAssessmentName() {
return assessmentName;
}
public int getNumericGrade(){
return this.numericGrade;
}
public void setAssessmentName(String assessmentName) {
this.assessmentName = assessmentName;
}
public String getLetterGrade(){
GradeConverter converter = new GradeConverter();
return converter.convertGrade(this.getNumericGrade());
}
public void printEntry(){
System.out.println("Assignment: " + getAssessmentName() );
System.out.println("For student: " + getStudent().getName() );
System.out.println("Grade: " + getNumericGrade() );
System.out.println("Letter Grade: " + getLetterGrade() );
}
}
Explanation / Answer
GradeBookEntry.java
public abstract class GradeBookEntry {
public abstract int getNumericGrade();
public abstract void getData();
}
ExamEntry.java
import java.io.Serializable;
public class ExamEntry extends GradeBookEntry implements Serializable
{
private Person student;
private int numericGrade;
private String assessmentName;
// The next six methods are just getters and setters
// for the member variables of this class.
public ExamEntry ()
{
student = new Person();
numericGrade = 0;
assessmentName = "";
}
public ExamEntry(Person initialStudent, String assessment, int grade, int examCurve)
{
this.setStudent(initialStudent);
this.setAssessmentName(assessment);
this.setNumericGrade(grade,examCurve);
}
public Person getStudent() {
return student;
}
public final void setStudent(Person student) {
this.student = student;
}
@Override
public int getNumericGrade() {
return numericGrade;
}
public final void setNumericGrade(int numericGrade, int curve)
{
// flat curve is the best this can do without a collection to work with
this.numericGrade = numericGrade + curve;
}
public String getAssessmentName() {
return assessmentName;
}
public final void setAssessmentName(String assessmentName) {
this.assessmentName = assessmentName;
}
public String getLetterGrade(){
GradeConverter converter = new GradeConverter();
return converter.convertGrade(numericGrade);
}
@Override
public void getData(){
System.out.println(student.toString());
// instantiate a GradeConverter to get the letter grade.
GradeConverter converter = new GradeConverter();
System.out.println("Scored " + numericGrade );
System.out.println("Which is a: " + converter.convertGrade(numericGrade));
System.out.println("For assessment: " + assessmentName);
}
}
HomeWorkEntry.java
import java.io.Serializable;
public class HomeWorkEntry extends GradeBookEntry implements Serializable
{
private Person student;
private int numericGrade;
private String assessmentName;
// The next six methods are just getters and setters
// for the member variables of this class.
// add constructor here
public HomeWorkEntry ()
{
student = new Person();
numericGrade =0;
assessmentName = "";
}
public HomeWorkEntry (Person initialStudent, int grade, String assessment)
{
this.setStudent(initialStudent);
this.setAssessmentName(assessment);
this.setNumericGrade(grade);
}
public Person getStudent() {
return student;
}
public final void setStudent(Person student) {
this.student = student;
}
@Override
public int getNumericGrade() {
return numericGrade;
}
public final void setNumericGrade(int numericGrade) {
this.numericGrade = numericGrade;
}
public String getAssessmentName() {
return assessmentName;
}
public final void setAssessmentName(String assessmentName) {
this.assessmentName = assessmentName;
}
public String getLetterGrade(){
GradeConverter converter = new GradeConverter();
return converter.convertGrade(numericGrade);
}
@Override
public void getData(){
System.out.println(student.toString());
// instantiate a GradeConverter to get the letter grade.
GradeConverter converter = new GradeConverter();
System.out.println("Scored " + numericGrade );
System.out.println("Which is a: " + converter.convertGrade(numericGrade));
System.out.println("For assignment: " + assessmentName);
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.