4.5 estado dinamico pokemon
O que foi feito nessa branch
Objetivo: implementar estado dinâmico para Pokemon, com transições controladas e validadas.
Mudanças:
-
EstadoPokemon.java(pré-existente) — enum com 4 estados:CADASTRADO → EM_TREINAMENTO → PRONTO_PARA_BATALHA → APOSENTADO -
Pokemon.java— adicionado métodoavancarEstado()que implementa a máquina de estados via switch expression exaustivo; removidosetEstado()para impedir bypass da progressão -
TransicaoEstadoInvalidaException.java— nova exceção unchecked lançada ao tentar avançar um Pokémon jáAPOSENTADO -
TestePokemon.java— 3 novos testes manuais cobrindo estado inicial, sequência completa e bloqueio em APOSENTADO -
.gitignore— adicionado para ignorar/bine/out
Como testar
Compilar e executar a classe de testes:
javac -d bin -cp src $(find src -name "*.java") java -cp bin teste.TestePokemon
Saída esperada na seção de estado dinâmico:
--- Testes: Estado dinâmico --- [OK] Estado inicial: CADASTRADO [OK] Sequencia completa de estados: chegou em APOSENTADO [OK] Transicao de APOSENTADO: bloqueada corretamente