So i can not figure out this question at all. Everytime i try and add a interfac
ID: 3623242 • Letter: S
Question
So i can not figure out this question at all. Everytime i try and add a interface to my code it says cannot inherit interface to class b/c the class is not abstract.The question is
Modify the CourseGrades class you created in Programming Challenge 5 so it implements the following interface
public interface Analyzable
{
double getAverage();
GradedActivity getHighest();
GradedActivity getLowest();
}
The getAverage method should return the average of the numeric scores stored in the grades array. The gethighest method should return the highest numeric score in the array. And the getLowest should return the lowest numeric score.
Here is my sample code from Problem 5. Everything compiles and runs perfect with number 5.
package coursegradedemo;
public class Main {
public static void main(String[] args)
{
//Calling all classes
CourseGrades courseGrades = new CourseGrades();
Lab lab = new Lab();
PassFailExam passFail = new PassFailExam();
Essay essay = new Essay();
FinalExam finalExam = new FinalExam();
// 85
lab.setScore(85);
// 20 questions, 3 missed
passFail.setScore(17);
// grammar = 25, spelling = 18, length = 17, content = 20
essay.setScore(25, 18, 17, 20);
finalExam.setScore(40); // 50 questions, 10 missed
//Here I assign the values to each individual class
courseGrades.setLab(lab);
courseGrades.setPassFailExam(passFail);
courseGrades.setEssay(essay);
courseGrades.setFinalExam(finalExam);
//This prints out the individuals grades.
//Calls this information from CourseGrades
System.out.print(courseGrades.toString());
}
}
------------------------------------------------------------------------------------------------------
package coursegradedemo;
public class CourseGrades
{
//The array is created here
private GradedActivity[] grades;
private static int NUM_GRADES = 4;
public CourseGrades()
{
grades = new GradedActivity[NUM_GRADES];
}
//Values for each grade is assigned to the array
public void setLab(Lab aLab)
{
grades[0] = aLab;
}
public void setPassFailExam(PassFailExam aPassFailExam)
{
grades[1] = aPassFailExam;
}
public void setEssay(Essay anEssay)
{
grades[2] = anEssay;
}
public void setFinalExam(FinalExam aFinalExam)
{
grades[3] = aFinalExam;
}
//This Creates what the user will see printed on the window.
public String toString()
{
String result;
result = "Lab Score: " + grades[0].getScore() + " Grade: " + grades[0].getGrade() + " Pass/Fail Exam Score: "
+ grades[1].getScore() + " Grade: " + grades[1].getGrade()
+ " Essay Score: " + grades[2].getScore() + " Grade: " + grades[2].getGrade()
+ " Final Exam Score: " + grades[3].getScore() + " Grade: " + grades[3].getGrade();
return result;
}
}
__________________________________________________________________________
package coursegradedemo;
//This is the Parent Class. This class is used to assign Letter grades and
//pass/fail grades to assignments....
public class GradedActivity
{
public double score;
public void setScore(double s)
{
score = s;
}
public double getScore()
{
return score;
}
// Assigns a letter grade.
public char getGrade()
{
char letterGrade;
if(score >= 90)
{
letterGrade = 'A';
}
else if(score >=80) {
letterGrade = 'B';
}
else if(score >=70) {
letterGrade = 'C';
}
else if(score >=60)
{
letterGrade = 'D';
}
else
{
letterGrade = 'F';
}
return letterGrade;
}
}
____________________________________________________________________________
package coursegradedemo;
//This Class Demonstrates a students grade on an essay.
public class Essay extends GradedActivity
{
private double grammar;
private double spelling;
private double correctLength;
private double content;
public void setScore(double gr, double sp, double len, double cnt)
{
//This Adds all the individual grade up.
score = gr + sp + len + cnt;
}
private void setGrammar(double g)
{
grammar = g;
}
private void setSpelling(double s)
{
spelling = s;
}
private void setCorrectLength(double c)
{
correctLength = c;
}
private void setContent(double c)
{
content = c;
}
public double getGrammar()
{
return grammar;
}
public double getSpelling()
{
return spelling;
}
public double getCorrectLength()
{
return correctLength;
}
public double getScore()
{
return score;
}
}
_____________________________________________________________________________
package coursegradedemo;
public class FinalExam extends GradedActivity
{
public void setScore(int questionCorrect)
{
// 50 questions, therefore 2 points each
score = questionCorrect * 2;
}
public double getScore()
{
return score;
}
}
____________________________________________________________________________
package coursegradedemo;
//Simple class for Lab grade. Creates a value and stores it.
public class Lab extends GradedActivity
{
public void setScore(double sc)
{
score = sc;
}
public double getScore()
{
return score;
}
}
_____________________________________________________________________________
package coursegradedemo;
//Pass/Fail class. Takes the questions correct, finds the letter grade
//and assigns P or F for the final grade.
public class PassFailExam extends GradedActivity
{
public void setScore(int questionCorrect)
{
// 20 questions, therefore 5 points each
// Find the Score.
score = questionCorrect * 5;
}
//A P or F is assigned.
public char getGrade()
{
char letterGrade;
if(score >= 70)
{
letterGrade = 'P';
}
else
{
letterGrade = 'F';
}
return letterGrade;
}
public double getScore()
{
return score;
}
}
____________________________________________________________________________
Thanx
Explanation / Answer
It says it can't inherit the interface because you're not implementing all the methods.
First, declare the class to implement the interface.
public class CourseGrades implements Analyzable
Next, implement in CourseGrades all methods declared in Analyzable.
public double getAverage()
{
double sum = 0.0;
for(GradedActivity g : grades)
{
sum += g.getScore();
}
return sum/grades.length;
}
public GradedActivity getHighest()
{
double max = Double.MIN_VALUE;
GradedActivity output = null;
for(GradedActivity g : grades)
{
if(g.getScore() > max)
{
output = g;
max = g.getScore();
}
}
return output;
}
public GradedActivity getLowest()
{
double min = Double.MAX_VALUE;
GradedActivity output = null;
for(GradedActivity g : grades)
{
if(g.getScore() < min)
{
output = g;
min = g.getScore();
}
}
return output;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.