feat: add validation for averageGrade and recordBookNumber
This commit is contained in:
@@ -7,9 +7,11 @@ public class Student {
|
|||||||
private final double averageGrade;
|
private final double averageGrade;
|
||||||
private final int recordBookNumber;
|
private final int recordBookNumber;
|
||||||
|
|
||||||
|
// Конструктор с проверками
|
||||||
public Student(String groupNumber, double averageGrade, int recordBookNumber) {
|
public Student(String groupNumber, double averageGrade, int recordBookNumber) {
|
||||||
if (groupNumber == null || groupNumber.isBlank()) {
|
// Проверка groupNumber на формат
|
||||||
throw new IllegalArgumentException("Group number cannot be empty");
|
if (groupNumber == null || !groupNumber.matches("^[A-Z][0-9]{2}$")) {
|
||||||
|
throw new IllegalArgumentException("Group number must match format: one uppercase letter + two digits (e.g. A12)");
|
||||||
}
|
}
|
||||||
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");
|
||||||
@@ -22,6 +24,7 @@ public class Student {
|
|||||||
this.recordBookNumber = recordBookNumber;
|
this.recordBookNumber = recordBookNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Геттеры — исправлен тип groupNumber (теперь String)
|
||||||
public String getGroupNumber() {
|
public String getGroupNumber() {
|
||||||
return groupNumber;
|
return groupNumber;
|
||||||
}
|
}
|
||||||
@@ -34,6 +37,7 @@ public class Student {
|
|||||||
return recordBookNumber;
|
return recordBookNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Методы копирования (with-методы)
|
||||||
public Student withGroupNumber(String groupNumber) {
|
public Student withGroupNumber(String groupNumber) {
|
||||||
return new Student(groupNumber, this.averageGrade, this.recordBookNumber);
|
return new Student(groupNumber, this.averageGrade, this.recordBookNumber);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user