Oi Pessoal,
Acabei de ver a aula de Memento, e fiquei com uma dúvida: Não seria mais interessante a classe a classe contrato ter esse histórico? desse jeito você evita a repetição do
historico.adiciona(contrato.salvaEstado());
colocando essa repetição dentro do próprio método salvaEstado().
Por um outro lado, entendo que fazendo assim, aumenta o acoplamento entre os objetos, tornando mais difícil uma manutenção no futuro. Então fico em dúvida do custo/beneficio de ambas abordagens.