Командный обработчик / парсер для железнодорожной симуляции - PullRequest
1 голос
/ 12 февраля 2020

Я пытаюсь найти хороший способ создания пользовательского интерфейса для моей железнодорожной симуляции.

На данный момент я создал интерфейс «Command» с методами execute , getName , getArguments , а затем я создал класс для каждая команда (AddTrack, DeleteTrack, ..., Exit). Тем не менее, я все еще борюсь с хорошим способом получить все аргументы, обрабатывая неправильные данные и т.д. c. Кто-то имеет лучшую идею для моего пользовательского интерфейса или может дать мне некоторую базовую c структуру для него?

Вот список всех команд, которые я хочу реализовать:

 - add track <startpoint> -> <endpoint>
 - delete track <trackID>
 - list tracks
 - set switch <trackID> position <point>
 - create engine <engineType> <class> <name> <length> <couplingFront> <couplingBack>
 - list engines
 - create coach <coachType> <length> <couplingFront> <couplingBack>
 - list coaches
 - create train-set <class> <name> <length> <couplingFront> <couplingBack>
 - list train-sets
 - delete rolling stock <id>
 - add train <trainID> <rollingStockID>
 - list trains
 - show train <trainID>
 - put train <trainID> at <point> in direction <x>,<y>
 - step <speed>
 - exit

Считать их всех одним и тем же методом, вероятно, плохая практика. Вот почему я планирую создать новый класс для каждой команды.

Моя проблема в том, что я не уверен, как определить команды, так как некоторые состоят из одного слова (например, выход, шаг), а некоторые состоят из двух слов (добавить трек, удалить трек, установить переключатель). Вы бы порекомендовали создать один класс для всех команд добавления (добавить дорожку, добавить поезд, ...), команды списка (список дорожек, механизмы списков, ...) и т. Д.?

1 Ответ

0 голосов
/ 12 февраля 2020

Если вы просто хотите создать инструмент командной строки, я бы создал некоторый конкретный класс c, связанный с 'menu' (обработка команд), а затем имел бы определенные классы c для указанных доменов c ( вещи, связанные с поездами, треками, двигателями и т. д.) какое-то состояние (если он хочет манипулировать гусеницами, поездами или видеть информацию о двигателях). Все это обрабатывается в (или нескольких) классах меню. Этот класс отвечает за сохранение состояния и «навигацию» пользователя (что означает вызов других классов и методов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...