diff --git a/app/src/main/java/ru/project/student/Student.java b/app/src/main/java/ru/project/student/Student.java index b5d64d2..1e271a4 100644 --- a/app/src/main/java/ru/project/student/Student.java +++ b/app/src/main/java/ru/project/student/Student.java @@ -3,11 +3,10 @@ package ru.project.student; import java.util.Objects; public class Student { - - public static final double MIN_AVERAGE_GRADE = 0.0; - public static final double MAX_AVERAGE_GRADE = 5.0; - public static final int MIN_RECORD_BOOK_NUMBER = 1; - public static final String GROUP_NUMBER_PATTERN = "^[A-Z][0-9]{2}$"; + private static final double MIN_AVERAGE_GRADE = 0.0; + private static final double MAX_AVERAGE_GRADE = 5.0; + private static final int MIN_RECORD_BOOK_NUMBER = 1; + private static final String GROUP_NUMBER_PATTERN = "^[A-Z][0-9]{2}$"; private final String groupNumber; private final double averageGrade; @@ -16,15 +15,18 @@ public class Student { public Student(String groupNumber, double averageGrade, int recordBookNumber) { if (groupNumber == null || !groupNumber.matches(GROUP_NUMBER_PATTERN)) { throw new IllegalArgumentException( - "Group number must match pattern: " + GROUP_NUMBER_PATTERN); + "Group number must match pattern: " + GROUP_NUMBER_PATTERN + ); } if (averageGrade < MIN_AVERAGE_GRADE || averageGrade > MAX_AVERAGE_GRADE) { throw new IllegalArgumentException( - "Average grade must be between " + MIN_AVERAGE_GRADE + " and " + MAX_AVERAGE_GRADE); + "Average grade must be between " + MIN_AVERAGE_GRADE + " and " + MAX_AVERAGE_GRADE + ); } if (recordBookNumber < MIN_RECORD_BOOK_NUMBER) { throw new IllegalArgumentException( - "Record book number must be at least " + MIN_RECORD_BOOK_NUMBER); + "Record book number must be at least " + MIN_RECORD_BOOK_NUMBER + ); } this.groupNumber = groupNumber; this.averageGrade = averageGrade; @@ -43,16 +45,8 @@ public class Student { return recordBookNumber; } - public Student withGroupNumber(String groupNumber) { - return new Student(groupNumber, this.averageGrade, this.recordBookNumber); - } - - public Student withAverageGrade(double averageGrade) { - return new Student(this.groupNumber, averageGrade, this.recordBookNumber); - } - - public Student withRecordBookNumber(int recordBookNumber) { - return new Student(this.groupNumber, this.averageGrade, recordBookNumber); + public static double getMinAverageGrade() { + return MIN_AVERAGE_GRADE; } public static double getMaxAverageGrade() { @@ -67,6 +61,19 @@ public class Student { return GROUP_NUMBER_PATTERN; } + public Student withGroupNumber(String groupNumber) { + return new Student(groupNumber, this.averageGrade, this.recordBookNumber); + } + + public Student withAverageGrade(double averageGrade) { + return new Student(this.groupNumber, averageGrade, this.recordBookNumber); + } + + public Student withRecordBookNumber(int recordBookNumber) { + return new Student(this.groupNumber, this.averageGrade, recordBookNumber); + } + + @Override public String toString() { return "Student{" + "groupNumber='" + groupNumber + '\'' + @@ -83,6 +90,9 @@ public class Student { if (obj == null || getClass() != obj.getClass()) { return false; } + if (this.hashCode() != obj.hashCode()) { + return false; + } Student student = (Student) obj; return Double.compare(averageGrade, student.averageGrade) == 0 && recordBookNumber == student.recordBookNumber @@ -93,4 +103,4 @@ public class Student { public int hashCode() { return Objects.hash(groupNumber, averageGrade, recordBookNumber); } -} +} \ No newline at end of file