diff --git a/app/src/main/java/ru/project/student/Student.java b/app/src/main/java/ru/project/student/Student.java index 156059d..9dc74e2 100644 --- a/app/src/main/java/ru/project/student/Student.java +++ b/app/src/main/java/ru/project/student/Student.java @@ -5,23 +5,26 @@ import java.util.Objects; public class Student { private final String groupNumber; private final double averageGrade; - private final String recordBookNumber; + private final int recordBookNumber; - Student(String groupNumber, double averageGrade, String recordBookNumber) { - if (groupNumber == null || groupNumber.isBlank()) { - throw new IllegalArgumentException("Group number cannot be empty"); + // Конструктор с проверками + public Student(String groupNumber, double averageGrade, int recordBookNumber) { + // Проверка groupNumber на формат + 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) { 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"); + if (recordBookNumber <= 0) { + throw new IllegalArgumentException("Record book number must be positive"); } this.groupNumber = groupNumber; this.averageGrade = averageGrade; this.recordBookNumber = recordBookNumber; } + // Геттеры — исправлен тип groupNumber (теперь String) public String getGroupNumber() { return groupNumber; } @@ -30,38 +33,40 @@ public class Student { return averageGrade; } - public String getRecordBookNumber() { + public int getRecordBookNumber() { return recordBookNumber; } + // Методы копирования (with-методы) + 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() { return "Student{" + "groupNumber='" + groupNumber + '\'' + ", averageGrade=" + averageGrade + - ", recordBookNumber='" + recordBookNumber + '\'' + + ", recordBookNumber=" + recordBookNumber + '}'; } @Override public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj == null || getClass() != obj.getClass()) { - return false; - } - - if (this.hashCode() != obj.hashCode()) { - return false; - } - + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; Student student = (Student) obj; - return Double.compare(averageGrade, student.averageGrade) == 0 - && Objects.equals(groupNumber, student.groupNumber) - && Objects.equals(recordBookNumber, student.recordBookNumber); + && recordBookNumber == student.recordBookNumber + && Objects.equals(groupNumber, student.groupNumber); } @Override diff --git a/app/src/main/java/ru/project/student/StudentBuilder.java b/app/src/main/java/ru/project/student/StudentBuilder.java index 3e1ec41..6d7d5fc 100644 --- a/app/src/main/java/ru/project/student/StudentBuilder.java +++ b/app/src/main/java/ru/project/student/StudentBuilder.java @@ -3,7 +3,7 @@ package ru.project.student; public class StudentBuilder { private String groupNumber; private double averageGrade; - private String recordBookNumber; + private int recordBookNumber; public StudentBuilder setGroupNumber(String groupNumber) { this.groupNumber = groupNumber; @@ -15,7 +15,7 @@ public class StudentBuilder { return this; } - public StudentBuilder setRecordBookNumber(String recordBookNumber) { + public StudentBuilder setRecordBookNumber(int recordBookNumber) { this.recordBookNumber = recordBookNumber; return this; } @@ -23,4 +23,4 @@ public class StudentBuilder { public Student build() { return new Student(groupNumber, averageGrade, recordBookNumber); } -} \ No newline at end of file +}