Bom dia!
Sua resolução ficou excelente! Você fez um ótimo uso do aprendizado.
Recomendo somente fazer o uso de packages separados, um para o main, outro para seus objetos, outro para suas exceptions . Por padrão, o main não deve estar em uma classe que representa um objeto. Assim, seu projeto fica mais organizado e de fácil entendimento e manutenção.
Parabéns pelo empenho nos estudos e continue praticando.
Para que mais pessoas consigam visualizar a sua solução proposta, é recomendado que você marque este tópico como solucionado. Assim pode ajudar ainda mais pessoas :)
Bons estudos!