fix: make constants private, return hashCode check in equals
This commit is contained in:
@@ -3,11 +3,10 @@ package ru.project.student;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class Student {
|
public class Student {
|
||||||
|
private static final double MIN_AVERAGE_GRADE = 0.0;
|
||||||
public static final double MIN_AVERAGE_GRADE = 0.0;
|
private static final double MAX_AVERAGE_GRADE = 5.0;
|
||||||
public static final double MAX_AVERAGE_GRADE = 5.0;
|
private static final int MIN_RECORD_BOOK_NUMBER = 1;
|
||||||
public static final int MIN_RECORD_BOOK_NUMBER = 1;
|
private static final String GROUP_NUMBER_PATTERN = "^[A-Z][0-9]{2}$";
|
||||||
public static final String GROUP_NUMBER_PATTERN = "^[A-Z][0-9]{2}$";
|
|
||||||
|
|
||||||
private final String groupNumber;
|
private final String groupNumber;
|
||||||
private final double averageGrade;
|
private final double averageGrade;
|
||||||
@@ -16,15 +15,18 @@ public class Student {
|
|||||||
public Student(String groupNumber, double averageGrade, int recordBookNumber) {
|
public Student(String groupNumber, double averageGrade, int recordBookNumber) {
|
||||||
if (groupNumber == null || !groupNumber.matches(GROUP_NUMBER_PATTERN)) {
|
if (groupNumber == null || !groupNumber.matches(GROUP_NUMBER_PATTERN)) {
|
||||||
throw new IllegalArgumentException(
|
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) {
|
if (averageGrade < MIN_AVERAGE_GRADE || averageGrade > MAX_AVERAGE_GRADE) {
|
||||||
throw new IllegalArgumentException(
|
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) {
|
if (recordBookNumber < MIN_RECORD_BOOK_NUMBER) {
|
||||||
throw new IllegalArgumentException(
|
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.groupNumber = groupNumber;
|
||||||
this.averageGrade = averageGrade;
|
this.averageGrade = averageGrade;
|
||||||
@@ -43,16 +45,8 @@ public class Student {
|
|||||||
return recordBookNumber;
|
return recordBookNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Student withGroupNumber(String groupNumber) {
|
public static double getMinAverageGrade() {
|
||||||
return new Student(groupNumber, this.averageGrade, this.recordBookNumber);
|
return MIN_AVERAGE_GRADE;
|
||||||
}
|
|
||||||
|
|
||||||
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 getMaxAverageGrade() {
|
public static double getMaxAverageGrade() {
|
||||||
@@ -67,6 +61,19 @@ public class Student {
|
|||||||
return GROUP_NUMBER_PATTERN;
|
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() {
|
public String toString() {
|
||||||
return "Student{" +
|
return "Student{" +
|
||||||
"groupNumber='" + groupNumber + '\'' +
|
"groupNumber='" + groupNumber + '\'' +
|
||||||
@@ -83,6 +90,9 @@ public class Student {
|
|||||||
if (obj == null || getClass() != obj.getClass()) {
|
if (obj == null || getClass() != obj.getClass()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (this.hashCode() != obj.hashCode()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Student student = (Student) obj;
|
Student student = (Student) obj;
|
||||||
return Double.compare(averageGrade, student.averageGrade) == 0
|
return Double.compare(averageGrade, student.averageGrade) == 0
|
||||||
&& recordBookNumber == student.recordBookNumber
|
&& recordBookNumber == student.recordBookNumber
|
||||||
|
|||||||
Reference in New Issue
Block a user