Skip to content

Latest commit

 

History

History
100 lines (68 loc) · 12.6 KB

File metadata and controls

100 lines (68 loc) · 12.6 KB

Структура класса

Памятка к домашнему заданию

Перед тем, как отправить своё решение на проверку преподавателю, сверьтесь с чеклистом

Что делать, если возникли сложности?

И это здорово! Если их преодолевать правильно, то можно получить большую образовательную пользу для себя. Периодическое возникновение вопросов, недопонимание пройденного материала - нормальная и неотъемлемая часть обучения. А мы здесь, чтобы помочь вам пройти этот путь.

Что делать, если непонятна теория?

  1. Если подобный вопрос разбирался на лекции, посмотрите еще раз раздел с этой темой в видеозаписи.
  2. Если вопрос не решился, попробуйте поискать ответ самостоятельно в интернете, этот навык пригодится вам в работе.
  3. Если самостоятельно разобраться не удалось, задайте вопрос в общем чате, мы обязательно поможем.

Что делать, если непонятно условие задания?

  1. Прежде чем задать вопрос по условию задачи, перечитайте его ещё раз и убедитесь, что в тексте условия нет прямого ответа на этот вопрос. Умение работать с текстом - важный навык работы с информацией.
  2. Если ответа на свой вопрос в тексте условия не увидели, задайте его в общем чате, мы раскроем детали условия подробнее. Не забудьте при этом скинуть и ссылку на условие задания, про которую у вас вопрос.

Что делать,если не получается задача?

Если ваша проблема это ошибка компиляции (подчёркивает красным, не даёт запустить программу), сборки проекта, CI и прочие подобные ошибки, то:

  1. Найдите и прочитайте текст ошибки, который вам подсвечивает реплит, идея (или логи); "подчёркивает красным" - это не описание ошибки.
  2. Попробуйте понять текст ошибки, при необходимости воспользуйтесь переводчиком. Нестрашно, если вы переведёте неточно, тут главное сам процесс: со временем и с нашей помощью вы будете это делать лучше и лучше, но, пропуская этот этап, вы не сможете научиться это делать.
  3. Если не получилось понять ошибку по её тексту, попробуйте её загуглить и изучить подобную ошибку у других людей. Попробуйте примерить решения их проблем на свой код. Соотнесите найденные описания ошибки с пройденной теорией.
  4. Если все равно вашу трудности не разрешились, напишите в общий чат, обязательно указав:
    1. Название задачи и ссылку на условие
    2. Ссылку на вашу работу
    3. Текст и скриншот (не фотография) ошибки.
    4. Ваши размышления и описание шагов, которые вы совершили для решения.

Если ваша проблема это ошибка исполнения (программа умирает уже после запуска) или она отрабатывает неправильно, то:

  1. Воспользуйтесь отладчиком для пошагового анализа работы вашей программы. Так вы либо убедитесь в неправильности придуманного вами алгоритма или найдёте конкретное место, где ожидаемое поведение программы разошлось с фактическим.
  2. Если проблему найти не получилось, напишите в общий чат, обязательно указав:
    1. Название задачи и ссылку на условие
    2. Ссылку на вашу работу
    3. Конкретное и подробное описание проблемы или затруднения при решении задачи ("Помогите что не так" - это не описание)
    4. Подробное описание вашего анализа программы с помощью отладчика вместе со скринами
    5. Ваши размышления и описание шагов, которые вы совершили для решения.

В решении выполнены все требования задания

Убедитесь, что все требования задания выполнены. Для этого перед отправкой внимательно прочтите весь текст условия задания и соотнесите сказанное в нём с вашим решением. Навык самопроверки работы перед ревью пригодится вам как при обучении, так и на работе.


Пишем в идее, сдаём в реплите

Теперь вы знакомы с профессиональным редактором кода - Intellij IDEA Community Version. Все задачи теперь должны выполняться в нём.

Как минимум перед каждой отправкой работы на проверку (а лучше - вегда) форматируйте код. Ячейки, а именно локальные переменные, параметры, поля и тп должны быть названы камелкейсом с маленькой буквы, а классы и интерфейсы камелкейсом с большой буквы. Правила, связанные с отступами можно доверить самой идее - выберите в меню Code -> Reformat code чтобы отформатировать код в текущем файле.

При этом задание сдаётся через реплит. Обратите внимание на то, что на реплит ваш код следует добавлять через загрузку файлов, а не через копирование текста; при копировании и вставке кода в окно реплита форматирование может поехать. Тут алгоритм один и тот же: в пустом проекте удаляете Main.java (Delete в меню действий над файлом) и выбираете в меню что повыше пункт Upload file (англ. Загрузить файл) и загружаете Main.java с вашего компьютера из папки вашего проекта, после чего нажимаете в том же меню Upload folder (англ. Загрузить папку) и загружаете папки-пакеты с .java-файлами если они вам нужны.

При любой же проблеме с поведением кода теперь необходимо рассказывать про ваш анализ отладчиком вашей программы.

Задача 1 (обязательная)

Разработайте класс книги Book, объект которого будет помнить своё название (тип String), своего автора (типа String), год написания (тип int), рейтинг (тип int) и текст самой книги (String).

У книги должен быть конструктор, принимающий название, автора и год написания, рейтинг при этом должен автоматически выставляться как 3, а текст книги должен быть пустой строкой.

Должны быть методы по управлению рейтингом: up() (увеличение рейтинга на 1) и down() (уменьшение рейтинга на 1). При этом максимально возможный рейтинг должен быть 5, а минимальный 0. При попытке изменить рейтинг за его пределы, ничего не должно происходить.

Создайте метод append(String moreText), который добавляет в конец текста книги новый кусок текста, переданный параметром.

Создайте класс Main, в нём main и продемонстрируйте там работоспособность вашего класса.

Подсказки

В методах up и down для проверки выхода за границы допустимого рейтинга используйте условный оператор. Например:

public void up() {
    if (rating < 5) {
        rating++;
    }
}

Для добавления в конец текста можно использовать +=, например: text += moreText. Это тоже самое, что и text = text + moreText.

Задача 2 (необязательная)

⚠️ ВНИМАНИЕ эта задача делается на основе предыдущей и в том же реплите, т.е. в итоге вы присылаете только одну ссылку на две задачи. Зачёт по этой будет означать автоматический зачёт по предыдущей.

Создайте класс для автора Author с полями для имени, фамилии и количества написанных книг.

Создайте конструктор, принимающий имя и фамилию; количество книг у только что созданного объекта автора должно быть нулём.

Поменяйте в классе книги тип поля с автором со String на Author (поменять придётся также и в конструкторе).

Созадайте в классе автора метод public Book newBook(String title) {. В параметрах он должен принимать название будущей книги. Сам метод должен создать объект новой книги с этим названием. В качестве автора надо взять того автора, у которого вызвали этот метод (вы можете передать для этого просто this, ведь именно так можно обратиться к объекту, который иполняет метод). В качестве года написания берите текущий год, который можно получить в джаве с помощью вызова: LocalDate.now().getYear() (не забудьте заимпортить, это можно сделать через подсказку идеи).