Funcionalidade
Q: Posso inserir mais funcionalidade que a que é pedida no enunciado?
R: Não. A implementação deve cumprir os requisitos do enunciado sem omitir, nem acrescentar, nenhum aspecto.
Sobre o método String.split (Java)
Q: O método split da classe String parece não funcionar quando chamado com o argumento "|". Qual é o problema?
R: Este método aceita uma expressão regular e a barra vertical faz parte da sintaxe protegida, pelo que deve ser escrita como "\\|". Dessa forma o split já é correctamente efectuado.
Sobre UML
Q: Quando as classes do projeto estão relacionadas com classes do Java, temos de as representar no UML?
R: É necessário representar a existências das classes/interfaces Java (basta o rectângulo com o nome) e as relações das outras classes com elas.