Boa tarde, Não entendi porque a classe Orçamento "repete" os métodos da classe EstadoDeUmOrcamento. Se a classe Orçamento implementasse a interface EstadoDeUmOrcamento não estaria correto?
public class Orcamento {
    protected EstadoDeUmOrcamento estadoAtual;
    //...
 //repete este método
    public void aplicaDescontoExtra() {
    estadoAtual.aplicaDescontoExtra(this);
    }
 //repete este método
    public void aprova() {
        this.estadoAtual.aprova(this);
    }
 //repete este método
    public void reprova() {
        this.estadoAtual.reprova(this);
    }
 //repete este método
    public void finaliza() {
        this.estadoAtual.finaliza(this);
    }
} 
            