feat: add validation for averageGrade and recordBookNumber

This commit is contained in:
Дюрягин Данил
2026-08-26 17:49:39 +03:00
parent d08546e05c
commit 456ea9005a
@@ -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);
} }