Merge remote-tracking branch 'origin/feature/student' into feature/student
This commit is contained in:
@@ -5,23 +5,26 @@ 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) {
|
// Конструктор с проверками
|
||||||
if (groupNumber == null || groupNumber.isBlank()) {
|
public Student(String groupNumber, double averageGrade, int recordBookNumber) {
|
||||||
throw new IllegalArgumentException("Group number cannot be empty");
|
// Проверка 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) {
|
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;
|
||||||
this.recordBookNumber = recordBookNumber;
|
this.recordBookNumber = recordBookNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Геттеры — исправлен тип groupNumber (теперь String)
|
||||||
public String getGroupNumber() {
|
public String getGroupNumber() {
|
||||||
return groupNumber;
|
return groupNumber;
|
||||||
}
|
}
|
||||||
@@ -30,38 +33,40 @@ public class Student {
|
|||||||
return averageGrade;
|
return averageGrade;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRecordBookNumber() {
|
public int getRecordBookNumber() {
|
||||||
return recordBookNumber;
|
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
|
@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
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package ru.project.student;
|
|||||||
public class StudentBuilder {
|
public class StudentBuilder {
|
||||||
private String groupNumber;
|
private String groupNumber;
|
||||||
private double averageGrade;
|
private double averageGrade;
|
||||||
private String recordBookNumber;
|
private int recordBookNumber;
|
||||||
|
|
||||||
public StudentBuilder setGroupNumber(String groupNumber) {
|
public StudentBuilder setGroupNumber(String groupNumber) {
|
||||||
this.groupNumber = groupNumber;
|
this.groupNumber = groupNumber;
|
||||||
@@ -15,7 +15,7 @@ public class StudentBuilder {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public StudentBuilder setRecordBookNumber(String recordBookNumber) {
|
public StudentBuilder setRecordBookNumber(int recordBookNumber) {
|
||||||
this.recordBookNumber = recordBookNumber;
|
this.recordBookNumber = recordBookNumber;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -23,4 +23,4 @@ public class StudentBuilder {
|
|||||||
public Student build() {
|
public Student build() {
|
||||||
return new Student(groupNumber, averageGrade, recordBookNumber);
|
return new Student(groupNumber, averageGrade, recordBookNumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user