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

1 public class CourseGrades 2 { 3 GradedActivity[] grades = new GradedActivity[4

ID: 3758938 • Letter: 1

Question

1 public class CourseGrades
2 {
3 GradedActivity[] grades = new GradedActivity[4];
4
5 public void setLab(GradedActivity grade)
6 {
7 grades[0] = grade;
8 }
9 public void setPassFailExam(PassFailExam failExam)
10 {
11 grades[1] = failExam;
12 }
13 public void setEssay(Essay essay)
14 {
15 grades[2] = essay;
16 }
17 public void setFinalExam(finalExam finalexam)
18 {
19 grades[3] = finalexam;
20 }
21 public double getAverage()
22 {
23 double sum = 0.0;
24 for(GradedActivity g : grades){
25 sum += g.getScore();
26 }
27 return sum/grades.length;
28 }
29 public GradedActivity getHighest()
30 {
31 double max = Double.MIN_VALUE;
32 GradedActivity output = null;
33
34 for(GradedActivity g : grades)
35 {
36 if(g.getScore() > max)
37 {
38 output = g;
39 max = g.getScore();
40 }
41 }
42 return output;
43 }
44 public GradedActivity getLowest()
45 {
46 double min = Double.MAX_VALUE;
47 GradedActivity output = null;
48
49 for(GradedActivity g : grades)
50 {
51 if(g.getScore() < min)
52 {
53 output = g;
54 min = g.getScore();
55 }
56 }
57 return output;
58 }
59
60 public String toString()
61 {
62 return " Lab Activity " + grades[0].toString() +
63 " Pass Fail Exam "+ grades[1] .toString() +
64 " Essay " +grades[2].toString() +
65 " final Exam " +grades[3].toString();
66 }
67 }

1 public class CourseGradeDemo
2 {
3 public static void main(String[] args)
4 {
5 GradedActivity gradedActivity = new GradedActivity();
6 gradedActivity.setScore(60);
7
8 PassFailExam passfailExam = new PassFailExam(100, 25, 60);
9
10 Essay essay = new Essay(25, 10, 10,10);
11
12 finalExam finalexam = new finalExam(50);
13
14 CourseGrades coursegrade = new CourseGrades();
15
16 coursegrade.setLab(gradedActivity);
17
18 coursegrade.setPassFailExam(passfailExam);
19
20 coursegrade.setEssay(essay);
21
22 coursegrade.setFinalExam(finalexam);
23
24 System.out.println(coursegrade.toString());
25
26 System.out.println("Average grade score: " +coursegrade.getAverage());
27 GradedActivity highest = coursegrade.getLowest();
28 System.out.println("Highest Score: " + highest.getScore());
29 System.out.println("Highest grade: " + highest.getGrade());
30
31 GradedActivity low = coursegrade.getLowest();
32 System.out.println("lowest score : " + low.getScore());
33 System.out.println("lowest grade: " + low.getGrade());
34 }
35 }

1 public class GradedActivity
2 {
3 private double score;
4
5 public void setScore(double s)
6 {
7 score = s;
8 }
9 public double getScore()
10 {
11 return score;
12 }
13 public char getGrade()
14 {
15 char letterGrade;
16 if(score >=90)
17 letterGrade = 'A';
18 else if(score >= 80)
19 letterGrade = 'B';
20 if(score >=70)
21 letterGrade = 'C';
22 else if(score >= 60)
23 letterGrade = 'D';
24 else
25 letterGrade ='F';
26
27 return letterGrade;
28 }
29 public String toString()
30 {
31 return " Course Score " +getScore() +
32 " Course Grade " +getGrade();
33 }
34 }

1 public class PassFailActivity extends GradedActivity
2 {
3 private double minPassingScore;
4
5 public PassFailActivity(double min)
6 {
7 minPassingScore = min;
8 }
9
10 public char getGrade()
11 {
12 char letterGrade;
13 if(super.getGrade() > minPassingScore)
14 letterGrade = 'P';
15 else
16 letterGrade = 'F';
17 return letterGrade;
18 }
19 }

1 public class PassFailExam extends PassFailActivity
2 {
3 private double numQuestions;
4 private double pointsEach;
5 private double numMissed;
6 public PassFailExam(double questions, double missed, double minPass)
7 {
8 super(minPass);
9 numQuestions = questions;
10 numMissed = missed;
11 pointsEach = questions/100;
12 double numericScore = 100.0-(pointsEach *missed);
13 setScore(numericScore);
14 }
15 public double getPointsEach()
16 {
17 return pointsEach;
18 }
19 public double getMissed()
20 {
21 return numMissed;
22 }
23
24 }

1 public class finalExam extends GradedActivity
2 {
3 int numQuestions;
4
5 public finalExam(int questions)
6 {
7 setQuestions(questions);
8 }
9
10 public void setQuestions(int q)
11 {
12 numQuestions = q;
13 }
14
15 public int getQuestions()
16 {
17 return numQuestions;
18 }
19
20 public String toString()
21 {
22 return " Number of questions" + getQuestions();
23 }
24 }

1 public class Essay extends GradedActivity
2 {
3 double score;
4
5 public Essay(double grammer, double spelling, double correctlen, double content)
6 {
7 score = grammer + spelling + correctlen +content;
8 setScore(score);
9 }
10 }

need help on how to use singleton.. haven't really been taught. so i wrote this code earlier.. my question is-----> rewite this program so that the CourseGrades class is a Singleton. There should only ever be one of these objects instantiated at a time

Explanation / Answer

Singleton class is a class that creates the instance of class using the static method getInstance method.

The method returns the reference or object of the class.

------------------------------------------------------------------------------------------------------------------------------------------------------

Modified code is in bold letters


//CourseGrades.java
public class CourseGrades
{
   GradedActivity[] grades = new GradedActivity[4];

   /*Creta a static variable CourseGrades and set
      to null */
   private static CourseGrades instance = null;

  
  
  
/*CourseGrade object reference is created withing the getInstance
   *class and returns the instance of the CourseGrades as result
   *from the static method getInstace*/
   public static CourseGrades getInstance()
   {
      
       if(instance == null)
       {
           //create an instance of CourseGrades class
           instance = new CourseGrades();
       }
       //returns the reference of class CourseGrades
       return instance;
   }


   public void setLab(GradedActivity grade)
   {
       grades[0] = grade;
   }
   public void setPassFailExam(PassFailExam failExam)
   {
       grades[1] = failExam;
   }
   public void setEssay(Essay essay)
   {
       grades[2] = essay;
   }
   public void setFinalExam(finalExam finalexam)
   {
       grades[3] = finalexam;
   }
   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;
   }

   public String toString()
   {
       return " Lab Activity " + grades[0].toString() +
               " Pass Fail Exam "+ grades[1] .toString() +
               " Essay " +grades[2].toString() +
               " final Exam " +grades[3].toString();
   }
}

-------------------------------------------------------------------------------------------------------------------------------------------------


//CourseGradeDemo.java
public class CourseGradeDemo
{
   public static void main(String[] args)
   {
       GradedActivity gradedActivity = new GradedActivity();
       gradedActivity.setScore(60);

       PassFailExam passfailExam = new PassFailExam(100, 25, 60);

       Essay essay = new Essay(25, 10, 10,10);

       finalExam finalexam = new finalExam(50);

      
       /*Call method getInstance to create an instance of Singleton
          class CourseGrades
          The method getInstance maintains the reference of the CourseGrades*/
       CourseGrades coursegrade = CourseGrades.getInstance();
      
      

       coursegrade.setLab(gradedActivity);

       coursegrade.setPassFailExam(passfailExam);

       coursegrade.setEssay(essay);

       coursegrade.setFinalExam(finalexam);

       System.out.println(coursegrade.toString());

       System.out.println("Average grade score: " +coursegrade.getAverage());
       GradedActivity highest = coursegrade.getLowest();
       System.out.println("Highest Score: " + highest.getScore());
       System.out.println("Highest grade: " + highest.getGrade());

       GradedActivity low = coursegrade.getLowest();
       System.out.println("lowest score : " + low.getScore());
       System.out.println("lowest grade: " + low.getGrade());
   }
}

------------------------------------------------------------------------------------------------------------------------------------------------------

Sample output:

Only modified classes are posted. rest of classes are same as before .

    Lab Activity
Course Score 60.0
Course Grade D
   Pass Fail Exam
Course Score 75.0
Course Grade P
   Essay
Course Score 55.0
Course Grade F
   final Exam
Number of questions50
Average grade score: 47.5
Highest Score: 0.0
Highest grade: F
lowest score : 0.0
lowest grade: F