In [1]:
public class Debito {
private float valor;
public Debito(float valor) {
this.valor = valor;
}
public float operacao(float saldo) {
return saldo - valor;
}
}
public class Credito {
private float valor;
public Credito(float valor) {
this.valor = valor;
}
public float operacao(float saldo) {
return saldo + valor;
}
}
public class Rendimento {
private float valor;
public Rendimento(float valor) {
this.valor = valor;
}
public float operacao(float saldo) {
return saldo * (1 + valor/100);
}
}
public class Depreciacao {
private float valor;
public Depreciacao(float valor) {
this.valor = valor;
}
public float operacao(float saldo) {
return saldo * (1 - valor/100);
}
}
In [ ]:
Implemente uma classe Conta
aplicar uma série de movimentos em uma conta bancária de um cliente, capaz de realizar as seguintes operações:
construtor
- recebe como parâmetro o número da conta e o seu saldo inicial;novaTransacao
- aplica a transação (classe Transacao
) recebida como parâmetro sobre o saldo e mostra o saldo atualizado na tela.Crie uma interface para abstrair a operação de movimento.
In [ ]:
Considere que caixas bancários, caixas eletrônicos e o site do banco na internet (dentre outros) são Pontos de Transação. Esse tipo de ponto gera transações.
Tomando como base o pattern Observer, escreva uma interface IPontoTransacao
que permita que diversos objetos IMovimento
sejam capazes de monitorar cada objeto de Ponto de Transação
. Cada vez que for executada uma transação no Ponto de Transação
ela é enviada para todas as contas assinantes, que a aplicam nas respectivas contas.
Para fins de simplificação, considere que todas as transações sempre se destinarão à conta assinante.
In [ ]:
Expanda o método de assinatura de tal maneira que a assinatura seja personalizada, ou seja, ao assinar um Ponto de Transação
o assinante informa o seu número da conta. Toda a transação realizada no Ponto de Transação
deve passar a ter o número da conta associada. O ponto só notificará os assinantes cujo número da conta seja compatível com a transação.
In [ ]:
Considere uma estratégia de serialização em que um objeto herdeiro de Transacao
transforma o seu estado completo em uma única String. Crie uma variante do método novaTransacao
chamado novaTransacaoStr
, em que é passado como parâmetro a String serializada para o assinante.
Um objeto herdeiro de Transacao
também deve ter um método que seja capaz de converter a String serializada em seu estado interno (deserialização). O objeto assinante ao receber a String serializada pelo método novaTransacaoStr
deve deserializá-lo e aplicar a operação, tal como acontece no método novaTransacao
.
In [ ]: