O projeto está aqui e a conversa com o GPT aqui. Tentei deixar tudo em ordem no modelo. Lá, usei o máximo de classes possível, com três níveis de herança que (a meu ver) fariam sentido no mundo real. O ordem das classes é proposital, para que o código faça mais sentido quando lido.