-
Notifications
You must be signed in to change notification settings - Fork 252
Expand file tree
/
Copy pathcadastrobancário
More file actions
90 lines (82 loc) · 3.09 KB
/
cadastrobancário
File metadata and controls
90 lines (82 loc) · 3.09 KB
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
// DesafioPOO.java
// Exemplo compacto: POO + SOLID em um arquivo
public class DesafioPOO {
public static void main(String[] args) {
Usuario u = new Usuario("Débora Martins", "123.456.789-00", "debora@example.com");
Conta cc = new ContaCorrente(u);
Conta cp = new ContaPoupanca(u);
cc.depositar(1000);
cc.sacar(250);
cc.transferir(200, cp);
cc.imprimirExtrato();
System.out.println();
cp.imprimirExtrato();
}
// Encapsulamento & SRP (Usuario guarda dados)
static class Usuario {
private String nome;
private String cpf;
private String email;
public Usuario(String nome, String cpf, String email) {
this.nome = nome;
this.cpf = cpf;
this.email = email;
}
public String getNome() { return nome; }
public String getCpf() { return cpf; }
public String getEmail() { return email; }
public void exibirDados() {
System.out.println("Nome: " + nome);
System.out.println("CPF: " + cpf);
System.out.println("Email: " + email);
}
}
// Abstração: Conta é abstrata; define interface básica para contas
static abstract class Conta {
protected Usuario usuario;
protected double saldo;
public Conta(Usuario usuario) {
this.usuario = usuario;
this.saldo = 0.0;
}
public void depositar(double valor) {
if (valor <= 0) { System.out.println("Valor inválido."); return; }
saldo += valor;
}
public void sacar(double valor) {
if (valor <= 0) { System.out.println("Valor inválido."); return; }
if (valor <= saldo) saldo -= valor;
else System.out.println("Saldo insuficiente!");
}
public void transferir(double valor, Conta destino) {
if (valor <= 0) { System.out.println("Valor inválido."); return; }
if (valor <= saldo) {
this.saldo -= valor;
destino.saldo += valor;
} else {
System.out.println("Saldo insuficiente para transferência!");
}
}
public double getSaldo() { return saldo; }
public abstract void imprimirExtrato(); // Polimorfismo: implementado nas filhas
}
// Herança + Polimorfismo
static class ContaCorrente extends Conta {
public ContaCorrente(Usuario usuario) { super(usuario); }
@Override
public void imprimirExtrato() {
System.out.println("=== Extrato Conta Corrente ===");
usuario.exibirDados();
System.out.println("Saldo atual: R$ " + String.format("%.2f", saldo));
}
}
static class ContaPoupanca extends Conta {
public ContaPoupanca(Usuario usuario) { super(usuario); }
@Override
public void imprimirExtrato() {
System.out.println("=== Extrato Conta Poupança ===");
usuario.exibirDados();
System.out.println("Saldo atual: R$ " + String.format("%.2f", saldo));
}
}
}