1. Примените TransitionTable.java к проблеме "Стиральной машины".
  2. Создайте систему Машины Состояний, в которой текущее состояние наряду со входной информацией определяет следующее состояние, в которое перейдет машина. Чтобы сделать это, каждое состояние должно хранить обратную ссылку на прокси-объект (не контроллер состояний), так чтобы оно могло запросить об изменении состояния. Используйте hashMap для создания таблицы состояний, в которой ключами являются Строки имен нового состояния, а значением является объект нового состояния. Внутри каждого подкласса состояния перегрузите метод nextState( ), чтобы он имел свою собственную таблицу переходов. Входящим объектом для nextInput( ) может быть единственное слово, которое приходит из текстового файла, содержащего по одному слову на строку.
  3. Измените предыдущее упражнение таким образом, чтобы машина состояний могла конфигурироваться путем создания/модификации единого многомерного массива.
  4. Измените упражнение "настроение" из предыдущего раздела так, чтобы оно стало машиной состояния, используя StateMashine.java.
  5. Создайте систему машины состояний лифта, используя StateMashine.java.
  6. Создайте машину сплит-систему, используя StateMashine.java
  7. Генератор - это объект, который производит другие объекты, аналогично фабрике, за исключением того, что для функционирования генератора не требуется никаких аргументов. Создайте MouseMoveGenerator, который производит корректные объекты MouseMove при каждом вызове метода генерации (то есть, мышь должна двигаться в правильной последовательности, при этом возможные движения мыши основываются на предыдущем движении - это другая машина состояний). Добавьте метод iterator( ) для производства итератора, но этот метод должен принимать целый (int) аргумент, чтобы указать число движений, которые необходимо произвести прежде чем hasNext( ) вернет false.