Skip to content

Проектная работа №1: Симулятор гонки "24 часа Ле-Мана" - #1

Open
Artem-SPb wants to merge 1 commit into
mainfrom
dev
Open

Artem-SPb wants to merge 1 commit into
mainfrom
dev

Conversation

@Artem-SPb

Copy link
Copy Markdown
Owner

Привет!

Это моя первая проектная работа. Я реализовал консольное приложение, которое определяет победителя в гонке на основе введенных пользователем данных о скорости автомобилей.

Что было сделано:

  • Создана структура проекта из трех классов (Main, Car, Race) для разделения логики.
  • Реализован цикл для запроса данных по трем автомобилям.
  • Добавлена надежная обработка пользовательского ввода, включая проверку на пустые строки и ввод текста вместо чисел.
  • Программа корректно определяет автомобиль, проехавший наибольшую дистанцию за 24 часа, и выводит его в консоль.

Ключевые решения и почему я их принял:

1. Разделение кода на три класса

Я заметил, что в задании есть рекомендация использовать разные классы. Хоть мы это подробно еще не проходили, я решил попробовать разобраться, в чем тут польза.

Сначала я думал написать весь код в одном файле Main.java, но понял, что он становится очень громоздким. В одном месте смешивалось бы и общение с пользователем, и хранение данных о машине, и расчеты гонки.

Поэтому я решил разделить ответственность, и вот какая логика у меня получилась:

  • Car.java: Это просто "паспорт" или "карточка" автомобиля. Его единственная задача — хранить в себе два поля: name и speed. Он ничего не вычисляет, просто является структурой для данных.
  • Race.java: Это "мозг" гонки. Он ничего не знает о том, как мы получаем данные от пользователя. Его работа — принять на вход объект Car, посчитать дистанцию и обновить лидера, если это необходимо.
  • Main.java: Он отвечает за диалог с пользователем, обрабатывает все ошибки ввода, создает объекты Car и передает их в Race для обработки.

Мне кажется, такой подход делает код гораздо чище и понятнее. Если завтра правила гонки изменятся (например, она будет длиться 48 часов), мне нужно будет поменять всего одну цифру в файле Race.java, не трогая логику ввода в Main.java. Это показалось мне очень правильным.

2. Обработка неверного ввода скорости (try-catch)

Я столкнулся с проблемой: когда я вводил текст вместо скорости, программа "падала" с ошибкой. Я поискал информацию и узнал о конструкции try-catch, которая позволяет "ловить" такие ошибки и не давать программе аварийно завершиться. Я добавил эту проверку, чтобы сделать приложение более надежным и защищенным от случайных действий пользователя.

Как проверить работу:

  1. Запустить метод main() в классе Main.java.
  2. Последовательно ввести данные для трех машин, как в примере из задания.
  3. Можно попробовать ввести некорректные данные (скорость > 250, текст вместо скорости, пустое название), чтобы убедиться, что программа запрашивает ввод повторно.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant