Перед тем, как отправить своё решение на проверку преподавателю, сверьтесь с чеклистом
Что делать, если возникли сложности?
И это здорово! Если их преодолевать правильно, то можно получить большую образовательную пользу для себя. Периодическое возникновение вопросов, недопонимание пройденного материала - нормальная и неотъемлемая часть обучения. А мы здесь, чтобы помочь вам пройти этот путь.
- Если подобный вопрос разбирался на лекции, посмотрите еще раз раздел с этой темой в видеозаписи.
- Если вопрос не решился, попробуйте поискать ответ самостоятельно в интернете, этот навык пригодится вам в работе.
- Если самостоятельно разобраться не удалось, задайте вопрос в общем чате, мы обязательно поможем.
- Прежде чем задать вопрос по условию задачи, перечитайте его ещё раз и убедитесь, что в тексте условия нет прямого ответа на этот вопрос. Умение работать с текстом - важный навык работы с информацией.
- Если ответа на свой вопрос в тексте условия не увидели, задайте его в общем чате, мы раскроем детали условия подробнее. Не забудьте при этом скинуть и ссылку на условие задания, про которую у вас вопрос.
Если ваша проблема это ошибка компиляции (подчёркивает красным, не даёт запустить программу), сборки проекта, CI и прочие подобные ошибки, то:
- Найдите и прочитайте текст ошибки, который вам подсвечивает реплит, идея (или логи); "подчёркивает красным" - это не описание ошибки.
- Попробуйте понять текст ошибки, при необходимости воспользуйтесь переводчиком. Нестрашно, если вы переведёте неточно, тут главное сам процесс: со временем и с нашей помощью вы будете это делать лучше и лучше, но, пропуская этот этап, вы не сможете научиться это делать.
- Если не получилось понять ошибку по её тексту, попробуйте её загуглить и изучить подобную ошибку у других людей. Попробуйте примерить решения их проблем на свой код. Соотнесите найденные описания ошибки с пройденной теорией.
- Если все равно вашу трудности не разрешились, напишите в общий чат, обязательно указав:
- Название задачи и ссылку на условие
- Ссылку на вашу работу
- Текст и скриншот (не фотография) ошибки.
- Ваши размышления и описание шагов, которые вы совершили для решения.
Если ваша проблема это ошибка исполнения (программа умирает уже после запуска) или она отрабатывает неправильно, то:
- Воспользуйтесь отладчиком для пошагового анализа работы вашей программы. Так вы либо убедитесь в неправильности придуманного вами алгоритма или найдёте конкретное место, где ожидаемое поведение программы разошлось с фактическим.
- Если проблему найти не получилось, напишите в общий чат, обязательно указав:
- Название задачи и ссылку на условие
- Ссылку на вашу работу
- Конкретное и подробное описание проблемы или затруднения при решении задачи ("Помогите что не так" - это не описание)
- Подробное описание вашего анализа программы с помощью отладчика вместе со скринами
- Ваши размышления и описание шагов, которые вы совершили для решения.
В решении выполнены все требования задания
Убедитесь, что все требования задания выполнены. Для этого перед отправкой внимательно прочтите весь текст условия задания и соотнесите сказанное в нём с вашим решением. Навык самопроверки работы перед ревью пригодится вам как при обучении, так и на работе.
Пишем в идее, сдаём в реплите
Теперь вы знакомы с профессиональным редактором кода - Intellij IDEA Community Version. Все задачи теперь должны выполняться в нём.
Как минимум перед каждой отправкой работы на проверку (а лучше - вегда) форматируйте код. Ячейки, а именно локальные переменные, параметры, поля и тп должны быть названы камелкейсом с маленькой буквы, а классы и интерфейсы камелкейсом с большой буквы. Правила, связанные с отступами можно доверить самой идее - выберите в меню Code -> Reformat code чтобы отформатировать код в текущем файле.
При этом задание сдаётся через реплит. Обратите внимание на то, что на реплит ваш код следует добавлять через загрузку файлов, а не через копирование текста; при копировании и вставке кода в окно реплита форматирование может поехать. Тут алгоритм один и тот же: в пустом проекте удаляете Main.java (Delete в меню действий над файлом) и выбираете в меню что повыше пункт Upload file (англ. Загрузить файл) и загружаете Main.java с вашего компьютера из папки вашего проекта, после чего нажимаете в том же меню Upload folder (англ. Загрузить папку) и загружаете папки-пакеты с .java-файлами если они вам нужны.
При любой же проблеме с поведением кода теперь необходимо рассказывать про ваш анализ отладчиком вашей программы.
Разработайте класс книги 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.
Создайте класс для автора Author с полями для имени, фамилии и количества написанных книг.
Создайте конструктор, принимающий имя и фамилию; количество книг у только что созданного объекта автора должно быть нулём.
Поменяйте в классе книги тип поля с автором со String на Author (поменять придётся также и в конструкторе).
Созадайте в классе автора метод public Book newBook(String title) {. В параметрах он должен принимать название будущей книги. Сам метод должен создать объект новой книги с этим названием. В качестве автора надо взять того автора, у которого вызвали этот метод (вы можете передать для этого просто this, ведь именно так можно обратиться к объекту, который иполняет метод). В качестве года написания берите текущий год, который можно получить в джаве с помощью вызова: LocalDate.now().getYear() (не забудьте заимпортить, это можно сделать через подсказку идеи).
