Search code examples
javainheritancesubclasssuperclass

UML with subclasses


public class Student {
    private String name;
    private long id;
    private String grade;
    private int[] test;
    private int NUM_TESTS;

    public Student(){
        name="Un";
        id=0;
        grade="Un";
        test=new int[0];
        NUM_TESTS=5;
    }

    public Student(String x, long z) {
        name=x;
        id=z;
    }

    public void setName(String n) {
        name=n;
    }
    public void setID(long i) {
        id=i;
    }
    public void setGrade(String g) {
        grade=g;
    }
    /*public void setTestScore(int t,int s) {
        test=t;
        test=s;
    }

    public int getTestScore(int) {
        return test;
    }*/
    public int getNumTests() {
        return NUM_TESTS;
    }
    public String getName() {
        return name;
    }
    public long getID() {
        return id;
    }
    public String getGrade() {
        return grade;
    }

    public String toString() {
        return getTestScore()+getNumTests()+getName()+getID()+getGrade();
    }
    /*public void calculateResult() {
        int sum=0;
        for (int t:test)sum+=t;
        double average= 1.0t*sum/5;*/

    }
}

Here is my code I have spaced out the places where I am having the issues. I am writing a Student subclass with subclasses undergrad and postgrad. Here is the UML I don't understand how to correctly implement testScore if it is not one of the variables? Nevermind the calculate result I'll fix that myself. I am also unsure if my constructors are accurate. All the students do five exams that's a constant


Solution

    • setTestScore(int t, int s)... I do recommend to use carefully chosen names (identifiers). For example if you just rename the parameters to: setTestScore(int testNumber, int score) you can be more familiar what should you inplement.
    • test = new int[0];isn't what you want. You want test = new int[NUM_TESTS]
    • Try to reconsider method setTestScore(int testNumber, int score) first parameter is actually the index in the array of test and the second is the value.
    • So, your method should be something like this:

      public void setTestScore(int testNumber, int score) {
          test[testNumber] = score;
      }
      

    I just gave you some guidance for your own implementation...