-
Notifications
You must be signed in to change notification settings - Fork 2
/
ContaCorrente.java
138 lines (105 loc) · 3.75 KB
/
ContaCorrente.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import java.util.ArrayList;
import java.util.Date;
public class ContaCorrente {
private final int numero;
private Correntista correntista;
private float saldoEmReais = 0;
private ArrayList<String> transacoes;
private Gerente gerente;
private boolean ativa;
public static final float SALDO_INICIAL_DA_CONTA = 10; // "constante"
private static int quantidadeDeTransacoesDeTodasAsContas = 0;
// CONSTRUTOR: método especial que roda quando chamamos o "new" para instanciar
public ContaCorrente(int numeroDaConta, Correntista correntista) {
this.numero = numeroDaConta;
this.correntista = correntista;
this.saldoEmReais = SALDO_INICIAL_DA_CONTA; // saldo inicial doado pelo banco
this.transacoes = new ArrayList<>();
this.transacoes.add(String.format(
"Conta criada com saldo de R$%.2f", this.saldoEmReais));
this.ativa = true;
}
public float getSaldoEmReais() {
return this.saldoEmReais;
}
public void receberDepositoEmDinheiro(float valor) {
if (valor <= 0) {
return; // valor inválido; não faz nada!
// ToDo lançar uma exceção
}
this.saldoEmReais += valor;
// Date agora = new Date(); // now
registrarTransacao(
String.format("Recebido depósito em dinheiro: R$%.2f",
valor));
}
public long getCpfDoCorrentista() {
return this.correntista.getCpf();
}
public String getExtrato() {
String resultado = "";
for (int i = 0; i < transacoes.size(); i++) {
resultado += transacoes.get(i) + "\n";
}
return resultado;
}
public boolean isAtiva() {
return this.ativa;
}
/**
* Retorna a quantidade total de transações do banco, ou seja,
* de todas as contas correntes que já foram criadas.
*
* @return o total de transações
*/
public static int getQuantidadeDeTransacoesDeTodasAsContas() {
return quantidadeDeTransacoesDeTodasAsContas;
}
public void sacar(float valor) {
if (valor > this.saldoEmReais) {
return; // não tem fundos, então não faço nada
}
this.saldoEmReais -= valor;
registrarTransacao(
String.format(
"Saque no valor de R$%.2f",
valor));
}
public void efetuarTransferecia(ContaCorrente contaDestino, float valor) {
if (valor > this.saldoEmReais) {
return; // não tem fundos, então não faço nada
}
this.saldoEmReais -= valor;
contaDestino.saldoEmReais += valor;
registrarTransacao(
String.format(
"Transferência para a conta %d no valor de R$%.2f",
contaDestino.numero, valor));
}
private void registrarTransacao(String registro) {
String dataAtual = obterDataAtualAsString();
this.transacoes.add(dataAtual + ": " + registro);
quantidadeDeTransacoesDeTodasAsContas++;
}
String obterDataAtualAsString() {
return String.format("%s", new Date());
}
public void encerrar() {
if (this.saldoEmReais < 0) {
// ToDo lançar exceção
// não deixa encerrar conta com saldo negativo
}
this.ativa = false; // desativou a conta
System.out.printf("\nConta %d encerrada", this.numero);
}
public Gerente getGerente() {
return gerente;
}
public void setGerente(Gerente novaGerente) {
if (this.gerente != null) {
// avisa ao gerente antigo que ele não é mais gerente
this.gerente.deixarDeGerenciarConta(this);
}
this.gerente = novaGerente;
}
}