Pregunta de entrevista de Nubank

Multi level OOP style coding question in increasing difficulty