ВАЖНО: КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость.
Задачи
Создать класс Student в отдельном файле с полями объекта: ID, Фамилия, Имя, Отчество, Телефон, Телеграм, Почта, Гит. Поля ФИО – обязательные, остальные – необязательные.
Написать конструктор.
Написать геттер и сеттер для каждого поля, обязательно использовать соглашения о наименованиях в Ruby.
Создать несколько объектов из отдельного файла main.rb и вывести информацию о них на экран.
Продумать корректный способ вывода информации о текущем состоянии объекта.
Модифицировать класс для корректного вывода информации.
Избежать дублирования кода в конструкторе, геттерах и сеттерах.
Воспользоваться атрибутами для краткого написания геттеров и сеттеров.
Обеспечить возможность создания объектов с любой комбинацией заполнения необязательных полей в конструкторе.
Продумать аргументы конструктора в форме хэша.
Добавить метод класса, проверяющий, является ли строка телефонным номером.
Модифицировать класс так, чтобы объект не мог существовать с недопустимой строкой в поле Телефон.
Модифицировать конструкторы и протестировать класс.
Создать валидации для корректной формы строки в остальных полях.
Написать метод validate, который проводит две валидации: наличие гита и наличие любого контакта для связи. Разделить методы по возможности.
Написать метод set_contacts, который устанавливает значения поля или полей для введенных контактов. Сделать невозможным изменение контактов каким-либо иным способом.
Начать построение диаграммы классов, описав данный класс.
# Задание 1. Объекты и классы
**ВАЖНО:** КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость.
## Задачи
1. **Создать класс `Student`** в отдельном файле с полями объекта: `ID`, `Фамилия`, `Имя`, `Отчество`, `Телефон`, `Телеграм`, `Почта`, `Гит`. Поля ФИО – обязательные, остальные – необязательные.
- Написать конструктор.
- Написать геттер и сеттер для каждого поля, обязательно использовать соглашения о наименованиях в Ruby.
2. **Создать несколько объектов** из отдельного файла `main.rb` и вывести информацию о них на экран.
- Продумать корректный способ вывода информации о текущем состоянии объекта.
- Модифицировать класс для корректного вывода информации.
3. **Избежать дублирования кода** в конструкторе, геттерах и сеттерах.
- Воспользоваться атрибутами для краткого написания геттеров и сеттеров.
- Обеспечить возможность создания объектов с любой комбинацией заполнения необязательных полей в конструкторе.
- Продумать аргументы конструктора в форме хэша.
4. **Добавить метод класса**, проверяющий, является ли строка телефонным номером.
- Модифицировать класс так, чтобы объект не мог существовать с недопустимой строкой в поле `Телефон`.
- Модифицировать конструкторы и протестировать класс.
5. **Создать валидации** для корректной формы строки в остальных полях.
6. **Написать метод `validate`**, который проводит две валидации: наличие гита и наличие любого контакта для связи. Разделить методы по возможности.
7. **Написать метод `set_contacts`**, который устанавливает значения поля или полей для введенных контактов. Сделать невозможным изменение контактов каким-либо иным способом.
8. **Начать построение диаграммы классов**, описав данный класс.
ВАЖНО: КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость.
Задачи
(НЕ ОБЯЗАТЕЛЬНО) Продумать структуру строкового представления объекта класса и согласовать его с пунктом 2.
Написать отдельный конструктор, принимающий на вход строку, который парсит её и вызывает стандартный конструктор с параметрами.
Протестировать этот конструктор из класса main.
(НЕ ОБЯЗАТЕЛЬНО) Продумать структуру исключений для данного конструктора:
Исключение при невозможности парсинга строки.
Исключение при неудачной валидации данных в строке.
Написать метод getInfo, который возвращает краткую информацию о студенте:
Фамилия и инициалы, гит, связь (указать средство связи и его тип) в одной строке.
Добавить методы, возвращающие каждое из этих значений отдельно, без возможности их изменения.
Создать класс Student_short с полями:
ID, ФамилияИнициалы, гит, контакт.
Поля нельзя редактировать.
Реализовать два конструктора:
Один принимает объект класса Student.
Второй — ID и строку, содержащую всю остальную информацию (соответствует заданию 3).
Провести рефакторинг, выделив суперкласс и устранив дублирование кода в классах Student и Student_short.
Обновить диаграмму классов, чтобы отразить изменения.
(НЕ ОБЯЗАТЕЛЬНО) Написать метод read_from_txt:
Метод получает аргументом адрес файла, выбрасывает исключение при некорректном адресе и возвращает массив объектов типа Student.
(НЕ ОБЯЗАТЕЛЬНО) Протестировать метод read_from_txt, организовав вывод краткой информации по каждому объекту.
(НЕ ОБЯЗАТЕЛЬНО) Написать метод write_to_txt:
Метод получает в качестве аргументов адрес и имя файла и список объектов типа Student.
(НЕ ОБЯЗАТЕЛЬНО) Протестировать совместимость методов read_from_txt и write_to_txt.
# Задание 2. Чтение, просмотр и запись сущностей
**ВАЖНО:** КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость.
## Задачи
- **(НЕ ОБЯЗАТЕЛЬНО)** Продумать структуру строкового представления объекта класса и согласовать его с пунктом 2.
- Написать отдельный конструктор, принимающий на вход строку, который парсит её и вызывает стандартный конструктор с параметрами.
- Протестировать этот конструктор из класса `main`.
- **(НЕ ОБЯЗАТЕЛЬНО)** Продумать структуру исключений для данного конструктора:
- Исключение при невозможности парсинга строки.
- Исключение при неудачной валидации данных в строке.
- Написать метод `getInfo`, который возвращает краткую информацию о студенте:
- Фамилия и инициалы, гит, связь (указать средство связи и его тип) в одной строке.
- Добавить методы, возвращающие каждое из этих значений отдельно, без возможности их изменения.
- **Создать класс `Student_short`** с полями:
- `ID`, `ФамилияИнициалы`, `гит`, `контакт`.
- Поля нельзя редактировать.
- Реализовать два конструктора:
- Один принимает объект класса `Student`.
- Второй — `ID` и строку, содержащую всю остальную информацию (соответствует заданию 3).
- Провести рефакторинг, выделив суперкласс и устранив дублирование кода в классах `Student` и `Student_short`.
- Обновить диаграмму классов, чтобы отразить изменения.
- **(НЕ ОБЯЗАТЕЛЬНО)** Написать метод `read_from_txt`:
- Метод получает аргументом адрес файла, выбрасывает исключение при некорректном адресе и возвращает массив объектов типа `Student`.
- **(НЕ ОБЯЗАТЕЛЬНО)** Протестировать метод `read_from_txt`, организовав вывод краткой информации по каждому объекту.
- **(НЕ ОБЯЗАТЕЛЬНО)** Написать метод `write_to_txt`:
- Метод получает в качестве аргументов адрес и имя файла и список объектов типа `Student`.
- **(НЕ ОБЯЗАТЕЛЬНО)** Протестировать совместимость методов `read_from_txt` и `write_to_txt`.
darius-atlas
changed reference from main to lab24 months ago
ВАЖНО: КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость.
Задачи
Создать класс Student в отдельном файле с полями объекта: ID, Фамилия, Имя, Отчество, Телефон, Телеграм, Почта, Гит. Поля ФИО – обязательные, остальные – необязательные.
Написать конструктор.
Написать геттер и сеттер для каждого поля, обязательно использовать соглашения о наименованиях в Ruby.
Создать несколько объектов из отдельного файла main.rb и вывести информацию о них на экран.
Продумать корректный способ вывода информации о текущем состоянии объекта.
Модифицировать класс для корректного вывода информации.
Избежать дублирования кода в конструкторе, геттерах и сеттерах.
Воспользоваться атрибутами для краткого написания геттеров и сеттеров.
Обеспечить возможность создания объектов с любой комбинацией заполнения необязательных полей в конструкторе.
Продумать аргументы конструктора в форме хэша.
Добавить метод класса, проверяющий, является ли строка телефонным номером.
Модифицировать класс так, чтобы объект не мог существовать с недопустимой строкой в поле Телефон.
Модифицировать конструкторы и протестировать класс.
Создать валидации для корректной формы строки в остальных полях.
Написать метод validate, который проводит две валидации: наличие гита и наличие любого контакта для связи. Разделить методы по возможности.
Написать метод set_contacts, который устанавливает значения поля или полей для введенных контактов. Сделать невозможным изменение контактов каким-либо иным способом.
Начать построение диаграммы классов, описав данный класс.
Документация
> # Задание 1. Объекты и классы
>
> **ВАЖНО:** КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость.
>
> ## Задачи
>
> 1. **Создать класс `Student`** в отдельном файле с полями объекта: `ID`, `Фамилия`, `Имя`, `Отчество`, `Телефон`, `Телеграм`, `Почта`, `Гит`. Поля ФИО – обязательные, остальные – необязательные.
> - Написать конструктор.
> - Написать геттер и сеттер для каждого поля, обязательно использовать соглашения о наименованиях в Ruby.
>
> 2. **Создать несколько объектов** из отдельного файла `main.rb` и вывести информацию о них на экран.
> - Продумать корректный способ вывода информации о текущем состоянии объекта.
> - Модифицировать класс для корректного вывода информации.
>
> 3. **Избежать дублирования кода** в конструкторе, геттерах и сеттерах.
> - Воспользоваться атрибутами для краткого написания геттеров и сеттеров.
> - Обеспечить возможность создания объектов с любой комбинацией заполнения необязательных полей в конструкторе.
> - Продумать аргументы конструктора в форме хэша.
>
> 4. **Добавить метод класса**, проверяющий, является ли строка телефонным номером.
> - Модифицировать класс так, чтобы объект не мог существовать с недопустимой строкой в поле `Телефон`.
> - Модифицировать конструкторы и протестировать класс.
>
> 5. **Создать валидации** для корректной формы строки в остальных полях.
>
> 6. **Написать метод `validate`**, который проводит две валидации: наличие гита и наличие любого контакта для связи. Разделить методы по возможности.
>
> 7. **Написать метод `set_contacts`**, который устанавливает значения поля или полей для введенных контактов. Сделать невозможным изменение контактов каким-либо иным способом.
>
> 8. **Начать построение диаграммы классов**, описав данный класс.
>
Документация по классу доступна по данной ссылке: https://git.djft.ru/darius-atlas/kubsu-sm5-ruby/wiki/Student-Class
> # Задание 2. Чтение, просмотр и запись сущностей
>
> **ВАЖНО:** КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость.
>
> ## Задачи
>
> - **(НЕ ОБЯЗАТЕЛЬНО)** Продумать структуру строкового представления объекта класса и согласовать его с пунктом 2.
> - Написать отдельный конструктор, принимающий на вход строку, который парсит её и вызывает стандартный конструктор с параметрами.
> - Протестировать этот конструктор из класса `main`.
>
> - **(НЕ ОБЯЗАТЕЛЬНО)** Продумать структуру исключений для данного конструктора:
> - Исключение при невозможности парсинга строки.
> - Исключение при неудачной валидации данных в строке.
>
> - Написать метод `getInfo`, который возвращает краткую информацию о студенте:
> - Фамилия и инициалы, гит, связь (указать средство связи и его тип) в одной строке.
> - Добавить методы, возвращающие каждое из этих значений отдельно, без возможности их изменения.
>
> - **Создать класс `Student_short`** с полями:
> - `ID`, `ФамилияИнициалы`, `гит`, `контакт`.
> - Поля нельзя редактировать.
> - Реализовать два конструктора:
> - Один принимает объект класса `Student`.
> - Второй — `ID` и строку, содержащую всю остальную информацию (соответствует заданию 3).
>
> - Провести рефакторинг, выделив суперкласс и устранив дублирование кода в классах `Student` и `Student_short`.
>
> - Обновить диаграмму классов, чтобы отразить изменения.
>
> - **(НЕ ОБЯЗАТЕЛЬНО)** Написать метод `read_from_txt`:
> - Метод получает аргументом адрес файла, выбрасывает исключение при некорректном адресе и возвращает массив объектов типа `Student`.
>
> - **(НЕ ОБЯЗАТЕЛЬНО)** Протестировать метод `read_from_txt`, организовав вывод краткой информации по каждому объекту.
>
> - **(НЕ ОБЯЗАТЕЛЬНО)** Написать метод `write_to_txt`:
> - Метод получает в качестве аргументов адрес и имя файла и список объектов типа `Student`.
>
> - **(НЕ ОБЯЗАТЕЛЬНО)** Протестировать совместимость методов `read_from_txt` и `write_to_txt`.
>
docs available here: https://git.djft.ru/darius-atlas/kubsu-sm5-ruby/wiki/StudentShort-Class
Задание 1. Объекты и классы
ВАЖНО: КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость.
Задачи
Создать класс
Student
в отдельном файле с полями объекта:ID
,Фамилия
,Имя
,Отчество
,Телефон
,Телеграм
,Почта
,Гит
. Поля ФИО – обязательные, остальные – необязательные.Создать несколько объектов из отдельного файла
main.rb
и вывести информацию о них на экран.Избежать дублирования кода в конструкторе, геттерах и сеттерах.
Добавить метод класса, проверяющий, является ли строка телефонным номером.
Телефон
.Создать валидации для корректной формы строки в остальных полях.
Написать метод
validate
, который проводит две валидации: наличие гита и наличие любого контакта для связи. Разделить методы по возможности.Написать метод
set_contacts
, который устанавливает значения поля или полей для введенных контактов. Сделать невозможным изменение контактов каким-либо иным способом.Начать построение диаграммы классов, описав данный класс.
Задание 2. Чтение, просмотр и запись сущностей
ВАЖНО: КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость.
Задачи
(НЕ ОБЯЗАТЕЛЬНО) Продумать структуру строкового представления объекта класса и согласовать его с пунктом 2.
main
.(НЕ ОБЯЗАТЕЛЬНО) Продумать структуру исключений для данного конструктора:
Написать метод
getInfo
, который возвращает краткую информацию о студенте:Создать класс
Student_short
с полями:ID
,ФамилияИнициалы
,гит
,контакт
.Student
.ID
и строку, содержащую всю остальную информацию (соответствует заданию 3).Провести рефакторинг, выделив суперкласс и устранив дублирование кода в классах
Student
иStudent_short
.Обновить диаграмму классов, чтобы отразить изменения.
(НЕ ОБЯЗАТЕЛЬНО) Написать метод
read_from_txt
:Student
.(НЕ ОБЯЗАТЕЛЬНО) Протестировать метод
read_from_txt
, организовав вывод краткой информации по каждому объекту.(НЕ ОБЯЗАТЕЛЬНО) Написать метод
write_to_txt
:Student
.(НЕ ОБЯЗАТЕЛЬНО) Протестировать совместимость методов
read_from_txt
иwrite_to_txt
.mainto lab2 4 months agoДокументация
Документация по классу доступна по данной ссылке: https://git.djft.ru/darius-atlas/kubsu-sm5-ruby/wiki/Student-Class
docs available here: https://git.djft.ru/darius-atlas/kubsu-sm5-ruby/wiki/StudentShort-Class