refactor: change recordBookNumber type to int and add copy methods

This commit is contained in:
Дюрягин Данил
2026-08-26 16:40:03 +03:00
parent caf2c95dbb
commit d08546e05c
@@ -5,17 +5,17 @@ import java.util.Objects;
public class Student { public class Student {
private final String groupNumber; private final String groupNumber;
private final double averageGrade; private final double averageGrade;
private final String recordBookNumber; private final int recordBookNumber;
Student(String groupNumber, double averageGrade, String recordBookNumber) { public Student(String groupNumber, double averageGrade, int recordBookNumber) {
if (groupNumber == null || groupNumber.isBlank()) { if (groupNumber == null || groupNumber.isBlank()) {
throw new IllegalArgumentException("Group number cannot be empty"); throw new IllegalArgumentException("Group number cannot be empty");
} }
if (averageGrade < 0.0 || averageGrade > 5.0) { if (averageGrade < 0.0 || averageGrade > 5.0) {
throw new IllegalArgumentException("Average grade must be between 0.0 and 5.0"); throw new IllegalArgumentException("Average grade must be between 0.0 and 5.0");
} }
if (recordBookNumber == null || recordBookNumber.isBlank()) { if (recordBookNumber <= 0) {
throw new IllegalArgumentException("Record book number cannot be empty"); throw new IllegalArgumentException("Record book number must be positive");
} }
this.groupNumber = groupNumber; this.groupNumber = groupNumber;
this.averageGrade = averageGrade; this.averageGrade = averageGrade;
@@ -30,42 +30,43 @@ public class Student {
return averageGrade; return averageGrade;
} }
public String getRecordBookNumber() { public int getRecordBookNumber() {
return recordBookNumber; 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);
}
@Override @Override
public String toString() { public String toString() {
return "Student{" + return "Student{" +
"groupNumber='" + groupNumber + '\'' + "groupNumber='" + groupNumber + '\'' +
", averageGrade=" + averageGrade + ", averageGrade=" + averageGrade +
", recordBookNumber='" + recordBookNumber + '\'' + ", recordBookNumber=" + recordBookNumber +
'}'; '}';
} }
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (this == obj) { if (this == obj) return true;
return true; if (obj == null || getClass() != obj.getClass()) return false;
}
if (obj == null || getClass() != obj.getClass()) {
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
&& Objects.equals(groupNumber, student.groupNumber) && recordBookNumber == student.recordBookNumber
&& Objects.equals(recordBookNumber, student.recordBookNumber); && Objects.equals(groupNumber, student.groupNumber);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(groupNumber, averageGrade, recordBookNumber); return Objects.hash(groupNumber, averageGrade, recordBookNumber);
} }
} }