2026-08-23 15:17:57 +03:00
|
|
|
package ru.project.student;
|
|
|
|
|
|
2026-08-23 19:41:21 +03:00
|
|
|
import java.util.Objects;
|
|
|
|
|
|
2026-08-23 15:17:57 +03:00
|
|
|
public class Student {
|
|
|
|
|
private final String groupNumber;
|
|
|
|
|
private final double averageGrade;
|
|
|
|
|
private final String recordBookNumber;
|
|
|
|
|
|
|
|
|
|
Student(String groupNumber, double averageGrade, String recordBookNumber) {
|
|
|
|
|
if (groupNumber == null || groupNumber.isBlank()) {
|
|
|
|
|
throw new IllegalArgumentException("Group number cannot be empty");
|
|
|
|
|
}
|
|
|
|
|
if (averageGrade < 0.0 || averageGrade > 5.0) {
|
|
|
|
|
throw new IllegalArgumentException("Average grade must be between 0.0 and 5.0");
|
|
|
|
|
}
|
|
|
|
|
if (recordBookNumber == null || recordBookNumber.isBlank()) {
|
|
|
|
|
throw new IllegalArgumentException("Record book number cannot be empty");
|
|
|
|
|
}
|
|
|
|
|
this.groupNumber = groupNumber;
|
|
|
|
|
this.averageGrade = averageGrade;
|
|
|
|
|
this.recordBookNumber = recordBookNumber;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String getGroupNumber() {
|
|
|
|
|
return groupNumber;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public double getAverageGrade() {
|
|
|
|
|
return averageGrade;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String getRecordBookNumber() {
|
|
|
|
|
return recordBookNumber;
|
|
|
|
|
}
|
2026-08-23 19:41:21 +03:00
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String toString() {
|
|
|
|
|
return "Student{" +
|
|
|
|
|
"groupNumber='" + groupNumber + '\'' +
|
|
|
|
|
", averageGrade=" + averageGrade +
|
|
|
|
|
", recordBookNumber='" + recordBookNumber + '\'' +
|
|
|
|
|
'}';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean equals(Object obj) {
|
|
|
|
|
if (this == obj) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (obj == null || getClass() != obj.getClass()) {
|
|
|
|
|
return false;
|
2026-08-24 18:36:58 +03:00
|
|
|
}
|
2026-08-23 19:41:21 +03:00
|
|
|
|
2026-08-24 18:36:58 +03:00
|
|
|
if (this.hashCode() != obj.hashCode()) {
|
|
|
|
|
return false;
|
2026-08-23 19:41:21 +03:00
|
|
|
}
|
2026-08-24 18:36:58 +03:00
|
|
|
|
2026-08-23 19:41:21 +03:00
|
|
|
Student student = (Student) obj;
|
|
|
|
|
|
|
|
|
|
return Double.compare(averageGrade, student.averageGrade) == 0
|
|
|
|
|
&& Objects.equals(groupNumber, student.groupNumber)
|
|
|
|
|
&& Objects.equals(recordBookNumber, student.recordBookNumber);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int hashCode() {
|
|
|
|
|
return Objects.hash(groupNumber, averageGrade, recordBookNumber);
|
|
|
|
|
}
|
|
|
|
|
}
|