47 lines
1.7 KiB
Markdown
47 lines
1.7 KiB
Markdown
|
|
# Техническое задание: класс `Student`
|
|||
|
|
|
|||
|
|
## Задача
|
|||
|
|
|
|||
|
|
Реализовать класс `Student` как единственную точку проверки корректности данных. Объект класса `Student` не может быть создан с некорректными данными.
|
|||
|
|
|
|||
|
|
## Требования
|
|||
|
|
|
|||
|
|
1. Класс `Student` содержит три поля:
|
|||
|
|
|
|||
|
|
- `groupNumber`;
|
|||
|
|
- `averageGrade`;
|
|||
|
|
- `recordBookNumber`.
|
|||
|
|
|
|||
|
|
2. Все поля должны быть `private` и неизменяемыми после создания объекта.
|
|||
|
|
|
|||
|
|
3. Проверка корректности данных должна находиться в классе `Student`.
|
|||
|
|
|
|||
|
|
4. Реализовать класс `StudentBuilder` для создания объектов `Student`.
|
|||
|
|
|
|||
|
|
5. В `StudentBuilder` реализовать методы:
|
|||
|
|
|
|||
|
|
- `setGroupNumber(...)`;
|
|||
|
|
- `setAverageGrade(...)`;
|
|||
|
|
- `setRecordBookNumber(...)`;
|
|||
|
|
- `build()`.
|
|||
|
|
|
|||
|
|
6. Метод `build()` должен создавать только корректный объект `Student`. При некорректных данных должно выбрасываться исключение.
|
|||
|
|
|
|||
|
|
7. Реализовать для `Student`:
|
|||
|
|
|
|||
|
|
- методы получения значений полей;
|
|||
|
|
- `toString()`;
|
|||
|
|
- `equals()`;
|
|||
|
|
- `hashCode()`.
|
|||
|
|
|
|||
|
|
## Результат
|
|||
|
|
|
|||
|
|
Должны быть реализованы два независимых класса:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
Student.java
|
|||
|
|
StudentBuilder.java
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Классы не должны зависеть от сортировки, коллекции, меню и ввода данных.
|