From b2867537ec740f8b264ca098c2f6a92d5c325ee7 Mon Sep 17 00:00:00 2001 From: Ethan Robert <ethan.rbrt90@gmail.com> Date: Fri, 7 Mar 2025 14:33:51 +0100 Subject: [PATCH] Added Student and UseStudent classes --- src/tp04/Student.java | 120 +++++++++++++++++++++++++++++++++++++++ src/tp04/UseStudent.java | 14 +++++ 2 files changed, 134 insertions(+) create mode 100644 src/tp04/Student.java create mode 100644 src/tp04/UseStudent.java diff --git a/src/tp04/Student.java b/src/tp04/Student.java new file mode 100644 index 0000000..366ae13 --- /dev/null +++ b/src/tp04/Student.java @@ -0,0 +1,120 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package tp04; + +import java.util.Arrays; + +/** + * + * @author ethan + */ +public class Student { + + private Person pers; + private double[] grades; + + private int realGradeLength() { + int count = 0; + for (int i = 0; i < this.grades.length; i++) { + if (this.grades[i] != -1.0) { + count++; + } + } + return count; + } + + public Student(Person pers, double[] grades) { + this.pers = pers; + this.grades = grades; + } + + public Student(String forename, String name, double[] grades) { + this.pers = new Person(forename, name); + this.grades = grades; + } + + public Student(String forename, String name, double grade) { + this.pers = new Person(forename, name); + this.grades = new double[]{grade}; + } + + public String getName() { + return this.pers.getName(); + } + + public String getForename() { + return this.pers.getForename(); + } + + public void setName(String newName) { + this.pers.setName(newName); + } + + public void setForename(String newForename) { + this.pers.setForename(newForename); + } + + public int getID() { + return this.pers.getID(); + } + + public String toString() { + String gradesString = "["; + for (int i = 0; i < this.grades.length; i++) { + gradesString += this.grades[i]; + if (i < this.grades.length - 1) { + gradesString += ", "; + } + } + gradesString += "]]"; + return "Student[" + this.pers + " = " + gradesString; + } + + public double[] getGrades() { + return this.grades; + } + + public boolean equals(Object other) { + if (other == null) { + return false; + } + if (other.getClass() == this.getClass()) { + Student otherStudent = (Student) other; + boolean arrayEquals = true; + double[] otherStudentGrades = otherStudent.getGrades(); + if (otherStudentGrades.length == this.grades.length) { + for (int i = 0; i < this.grades.length; i++) { + arrayEquals = this.grades[i] != otherStudentGrades[i]; + } + } + return otherStudent.getID() == this.pers.getID() && arrayEquals; + } + return false; + } + + public double getAverage() { + double sum = 0.0; + for (int i = 0; i < this.grades.length; i++) { + if (this.grades[i] != -1.0) { + sum += this.grades[i]; + } + } + return sum / this.realGradeLength(); + } + + public void addGrade(double grade) { + if (this.grades.length != this.realGradeLength()) { + for (int i = 0; i < this.grades.length; i++) { + if (this.grades[i] == -1.0) { + this.grades[i] = grade; + } + } + } else { + this.grades = Arrays.copyOf(this.grades, this.grades.length + 1); + this.grades[this.grades.length - 1] = grade; + } + } + +} diff --git a/src/tp04/UseStudent.java b/src/tp04/UseStudent.java new file mode 100644 index 0000000..66ed4fe --- /dev/null +++ b/src/tp04/UseStudent.java @@ -0,0 +1,14 @@ +package tp04; + +public class UseStudent { + public static void main (String[] args) { + Person person1 = new Person("John", "Doe"); + Student student1 = new Student(person1, new double[]{12.5, 14.0}); + Student student2 = new Student(person1, new double[]{12.5, 14.5}); + Student student3 = new Student("Jane", "Smith", 14.0); + + System.out.println("student1 == student2: " + student1.equals(student2)); + System.out.println("student1 == student3: " + student1.equals(student3)); + System.out.println("student2 == student3: " + student2.equals(student3)); + } +} -- GitLab