Lab 2 #2

Closed
opened 4 months ago by darius-atlas · 4 comments
Owner
There is no content yet.
darius-atlas added the enhancement label 4 months ago
darius-atlas self-assigned this 4 months ago
darius-atlas added this to the Ruby course project 4 months ago
Poster
Owner

Задание 1. Объекты и классы

ВАЖНО: КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость.

Задачи

  1. Создать класс Student в отдельном файле с полями объекта: ID, Фамилия, Имя, Отчество, Телефон, Телеграм, Почта, Гит. Поля ФИО – обязательные, остальные – необязательные.

    • Написать конструктор.
    • Написать геттер и сеттер для каждого поля, обязательно использовать соглашения о наименованиях в Ruby.
  2. Создать несколько объектов из отдельного файла main.rb и вывести информацию о них на экран.

    • Продумать корректный способ вывода информации о текущем состоянии объекта.
    • Модифицировать класс для корректного вывода информации.
  3. Избежать дублирования кода в конструкторе, геттерах и сеттерах.

    • Воспользоваться атрибутами для краткого написания геттеров и сеттеров.
    • Обеспечить возможность создания объектов с любой комбинацией заполнения необязательных полей в конструкторе.
    • Продумать аргументы конструктора в форме хэша.
  4. Добавить метод класса, проверяющий, является ли строка телефонным номером.

    • Модифицировать класс так, чтобы объект не мог существовать с недопустимой строкой в поле Телефон.
    • Модифицировать конструкторы и протестировать класс.
  5. Создать валидации для корректной формы строки в остальных полях.

  6. Написать метод validate, который проводит две валидации: наличие гита и наличие любого контакта для связи. Разделить методы по возможности.

  7. Написать метод set_contacts, который устанавливает значения поля или полей для введенных контактов. Сделать невозможным изменение контактов каким-либо иным способом.

  8. Начать построение диаграммы классов, описав данный класс.

# Задание 1. Объекты и классы **ВАЖНО:** КАЖДАЯ ЗАДАЧА – ОТДЕЛЬНЫЙ КОММИТ. При защите описывать изменения и их необходимость. ## Задачи 1. **Создать класс `Student`** в отдельном файле с полями объекта: `ID`, `Фамилия`, `Имя`, `Отчество`, `Телефон`, `Телеграм`, `Почта`, `Гит`. Поля ФИО – обязательные, остальные – необязательные. - Написать конструктор. - Написать геттер и сеттер для каждого поля, обязательно использовать соглашения о наименованиях в Ruby. 2. **Создать несколько объектов** из отдельного файла `main.rb` и вывести информацию о них на экран. - Продумать корректный способ вывода информации о текущем состоянии объекта. - Модифицировать класс для корректного вывода информации. 3. **Избежать дублирования кода** в конструкторе, геттерах и сеттерах. - Воспользоваться атрибутами для краткого написания геттеров и сеттеров. - Обеспечить возможность создания объектов с любой комбинацией заполнения необязательных полей в конструкторе. - Продумать аргументы конструктора в форме хэша. 4. **Добавить метод класса**, проверяющий, является ли строка телефонным номером. - Модифицировать класс так, чтобы объект не мог существовать с недопустимой строкой в поле `Телефон`. - Модифицировать конструкторы и протестировать класс. 5. **Создать валидации** для корректной формы строки в остальных полях. 6. **Написать метод `validate`**, который проводит две валидации: наличие гита и наличие любого контакта для связи. Разделить методы по возможности. 7. **Написать метод `set_contacts`**, который устанавливает значения поля или полей для введенных контактов. Сделать невозможным изменение контактов каким-либо иным способом. 8. **Начать построение диаграммы классов**, описав данный класс.
Poster
Owner

Задание 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.

# Задание 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 lab2 4 months ago
Poster
Owner

Документация

Задание 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

Документация > # Задание 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
Poster
Owner

Задание 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

> # Задание 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
darius-atlas closed this issue 4 months ago
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date

No due date set.

Dependencies

No dependencies set.

Reference: darius-atlas/kubsu-sm5-ruby#2
Loading…
There is no content yet.