Boa tarde resolvi postar aqui o que eu andei fazendo, gostaria de a opinião de vocês sobre o código.
public class Banco {
private static ArrayList<Conta> listaContas = new ArrayList<>();
private static ArrayList<Funcionario> listaFuncionarios = new ArrayList<>();
private static ArrayList<Cliente> listaClientes = new ArrayList<>();
private String stringContas = new String();
private String stringFuncionarios = new String();
private String stringClientes = new String();
public static ArrayList<Conta> getListaContas() {
return listaContas;
}
public static void setConta(Conta conta) {
Banco.listaContas.add(conta);
}
public static ArrayList<Funcionario> getListaFuncionarios() {
return listaFuncionarios;
}
public static void setFuncionario(Funcionario funcionarios) {
Banco.listaFuncionarios.add(funcionarios);
}
public static ArrayList<Cliente> getListaClientes() {
return listaClientes;
}
public static void setCliente(Cliente cliente) {
Banco.listaClientes.add(cliente);
}
public class Funcionario extends Pessoa implements FuncionarioBanco {
private String horaEntrada;
private String horaSaida;
private Banco banco;
public Funcionario() {
}
public String getHoraEntrada() {
return horaEntrada;
}
public void setHoraEntrada(String horaEntrada) {
this.horaEntrada = horaEntrada;
}
public String getHoraSaida() {
return horaSaida;
}
public void setHoraSaida(String horaSaida) {
this.horaSaida = horaSaida;
}
@Override
public void registraEntrada(String entrada) {
banco.registraPonto(entrada, this.getHoraSaida(), this.getNome());
}
@Override
public void registraSaida(String saida) {
banco.registraPonto(this.getHoraEntrada(), saida, this.getNome());
}
@Override
public void cadastrarConta(Conta conta) {
banco.setConta(conta);
}
}
Interfaces:
public interface FuncionarioBanco {
public abstract void cadastrarConta(Conta conta);
public void registraEntrada(String entrada);
public void registraSaida(String saida);
}
public interface AdministradorBanco extends FuncionarioBanco{
public abstract double totalDinheiroEmBanco();
public abstract ArrayList<String> nomesClientes();
public abstract ArrayList<Conta> contasAtivas();
public abstract ArrayList<Funcionario> funcionariosCadastrados();
public abstract void cadastrarFuncionarios(Funcionario funcionario);
public abstract void mudaSituacaoConta(Boolean situacao, String nome);
public abstract void cadastrarConta(Conta conta);
}
Classe main
public class AcessaMazeBank {
static String contasAtivas = new String();
static String StringFuncionarios = new String();
public static void main(String[] args) {
DateTimeFormatter.ofPattern("dd/MM/YYYY-HH:mm:ss");
Cliente mikael = new Cliente();
mikael.setCpf("123.234.234-56");
mikael.setNome("Mikael");
mikael.setTelefone("(51)-99342-2225");
Cliente joao = new Cliente();
joao.setCpf("999.777.668-00");
joao.setNome("João");
joao.setTelefone("(51)-86755-3444");
Funcionario maria = new Funcionario();
maria.setNome("Maria");
maria.setCpf("877.678.345-09");
maria.setTelefone("(32)98765-4567");
maria.setHoraEntrada(LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd/MM/YYYY-HH:mm:ss")));
maria.setHoraSaida(LocalDateTime.now().plusHours(9).format(DateTimeFormatter.ofPattern("dd/MM/YYYY-HH:mm:ss")));
Funcionario jose = new Funcionario();
jose.setNome("Jose");
jose.setCpf("234.128.005-29");
jose.setTelefone("(22)94565-4567");
jose.setHoraEntrada(LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd/MM/YYYY-HH:mm:ss")));
jose.setHoraSaida(LocalDateTime.now().plusHours(6).format(DateTimeFormatter.ofPattern("dd/MM/YYYY-HH:mm:ss")));
Funcionario alfredo = new Funcionario();
alfredo.setNome("Alfredo");
alfredo.setCpf("999.332.995-33");
alfredo.setTelefone("(22)94565-4567");
alfredo.setHoraEntrada(LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd/MM/YYYY-HH:mm:ss")));
alfredo.setHoraSaida(LocalDateTime.now().plusHours(4).format(DateTimeFormatter.ofPattern("dd/MM/YYYY-HH:mm:ss")));
ContaCorrente contaMikael = new ContaCorrente(123, 2233, mikael);
contaMikael.deposita(250);
ContaPoupanca contaJoao = new ContaPoupanca(4567, 77668, joao);
contaJoao.deposita(900);
ContaCorrente contaAlfredo = new ContaCorrente(6666, 7789, alfredo);
ContaPoupanca contaMaria = new ContaPoupanca(6666, 7789, maria);
Gerente gerente = new Gerente();
gerente.cadastraCliente(joao);
gerente.cadastrarConta(contaAlfredo);
gerente.cadastrarConta(contaJoao);
gerente.cadastrarConta(contaMikael);
gerente.cadastrarFuncionarios(maria);
gerente.cadastrarFuncionarios(alfredo);
gerente.cadastrarFuncionarios(jose);
gerente.mudaSituacaoConta(false, "mikael");
}
}