Você está na página 1de 19

‭Parte 1 - Criação das Classes e Interface:‬

‭Aqui estão as classes e a interface de acordo com os requisitos:‬

/‭/ Classe abstrata Banco‬


‭package banco;‬

‭import pessoa.Pessoa;‬

‭import java.util.List;‬

‭public abstract class Banco {‬


‭protected List<Pessoa> clientes;‬

‭public Banco() {‬
‭clientes = new ArrayList<>();‬
‭}‬

‭public abstract String abrirConta(Pessoa pessoa);‬

‭public abstract boolean encerrarConta(Pessoa pessoa);‬

‭public boolean enviarPix(Pessoa origem, Pessoa destino, float valor) {‬


‭// Implementação do envio de Pix‬
‭return false;‬
‭}‬

‭public List<Pessoa> obterClientes() {‬


‭return clientes;‬
‭}‬

‭public float obterSaldo(Pessoa pessoa) {‬


‭// Implementação para obter o saldo‬
‭return 0.0f;‬
‭}‬
‭}‬

/‭/ Interface IOperacoesBancarias‬


‭package banco;‬

‭import pessoa.Pessoa;‬
‭import java.util.List;‬

‭public interface IOperacoesBancarias {‬


‭List<Pessoa> obterClientes();‬

‭boolean enviarPix(Pessoa origem, Pessoa destino, float valor);‬

‭float obterSaldo(Pessoa pessoa);‬


‭}‬

/‭/ Classe abstrata Conta‬


‭package banco.conta;‬

‭public abstract class Conta {‬


‭private String numeroConta;‬
‭private float saldo;‬
‭private int tipoConta;‬

‭public Conta(int tipoConta) {‬


‭this.tipoConta = tipoConta;‬
‭}‬

‭public String obterTipoConta() {‬


‭return (tipoConta == 1) ? "PF" : "PJ";‬
‭}‬
‭}‬

/‭/ Classe ContaPF (Pessoa Física)‬


‭package banco.conta;‬

‭public class ContaPF extends Conta {‬


‭public ContaPF() {‬
‭super(1); // Tipo de conta para pessoa física‬
‭}‬
‭}‬

‭// Classe ContaPJ (Pessoa Jurídica)‬


‭package banco.conta;‬

‭public class ContaPJ extends Conta {‬


‭public ContaPJ() {‬
‭super(2); // Tipo de conta para pessoa jurídica‬
‭}‬
‭}‬

/‭/ Classe Pessoa‬


‭package pessoa;‬

‭import banco.conta.Conta;‬

‭public class Pessoa {‬


‭private String nome;‬
‭private String cpf;‬
‭private int tipoPessoa;‬
‭private Conta conta;‬

‭public Pessoa(String nome, String cpf, int tipoPessoa) throws Exception {‬


‭if (tipoPessoa != 1 && tipoPessoa != 2) {‬
‭throw new Exception("Tipo Pessoa deve ser 1 ou 2");‬
‭}‬
‭this.nome = nome;‬
‭this.cpf = cpf;‬
‭this.tipoPessoa = tipoPessoa;‬
‭}‬

‭public String obterTipoPessoa() {‬


‭return (tipoPessoa == 1) ? "Física" : "Jurídica";‬
‭}‬

‭public void listarInformacoes() {‬


‭System.out.println("Nome: " + nome);‬
‭System.out.println("CPF: " + cpf);‬
‭System.out.println("Tipo de Pessoa: " + obterTipoPessoa());‬
‭System.out.println("Tipo de Conta: " + conta.obterTipoConta());‬
‭}‬
‭}‬

/‭/ Classe Itau‬


‭package banco;‬
i‭mport pessoa.Pessoa;‬
‭import banco.conta.ContaPF;‬

‭public class Itau extends Banco {‬


‭public String abrirConta(Pessoa pessoa) {‬
‭if (pessoa.getConta() == null) {‬
‭if (pessoa.obterTipoPessoa().equals("Física")) {‬
‭ContaPF conta = new ContaPF();‬
‭// Defina um valor para o número da conta (por exemplo: "Itau-464")‬
‭String numeroConta = "Itau-" + (new Random().nextInt(1000));‬
‭conta.setNumeroConta(numeroConta);‬
‭cliente.add(pessoa);‬
‭pessoa.setConta(conta);‬
‭return numeroConta;‬
‭}‬
‭}‬
‭return null;‬
‭}‬

‭public boolean encerrarConta(Pessoa pessoa) {‬


‭if (clientes.contains(pessoa)) {‬
‭clientes.remove(pessoa);‬
‭pessoa.setConta(null);‬
‭return true;‬
‭}‬
‭return false;‬
‭}‬
‭}‬

/‭/ Classe NuBank‬


‭package banco;‬

i‭mport pessoa.Pessoa;‬
‭import banco.conta.ContaPJ;‬

‭public class NuBank extends Banco {‬


‭public String abrirConta(Pessoa pessoa) {‬
‭if (pessoa.getConta() == null) {‬
‭if (pessoa.obterTipoPessoa().equals("Jurídica")) {‬
‭ContaPJ conta = new ContaPJ();‬
‭// Defina um valor para o número da conta (por exemplo: "Nubank-145")‬
‭String numeroConta = "Nubank-" + (new Random().nextInt(1000));‬
‭conta.setNumeroConta(numeroConta);‬
‭clientes.add(pessoa);‬
‭ essoa.setConta(conta);‬
p
‭return numeroConta;‬
‭}‬
}‭ ‬
‭return null;‬
‭}‬

‭public boolean encerrarConta(Pessoa pessoa) {‬


‭if (clientes.contains(pessoa)) {‬
‭clientes.remove(pessoa);‬
‭pessoa.setConta(null);‬
‭return true;‬
‭}‬
‭return false;‬
‭}‬
‭}‬

‭ sta é a parte inicial da implementação. Agora você pode continuar implementando‬


E
‭a lógica dos métodos restantes e adicionando os detalhes de depósito, saque,‬
‭exibição de saldo e outros recursos. Quando estiver pronto, me informe e‬
‭continuemos com as próximas partes da correção.‬

‭ laro, continuaremos implementando a lógica dos métodos restantes e adicionando‬


C
‭os detalhes de depósito, saque, exibição de saldo e outros recursos. Aqui estão as‬
‭próximas partes da correção:‬

‭Parte 2 - Implementação da Classe‬‭ ‭:‬


Banco‬

/‭ / Classe Banco (Continuação)‬


‭package banco;‬

‭public abstract class Banco {‬


‭// Restante da classe Banco‬

‭public void depositar(Conta conta, float valor) {‬


‭if (conta != null) {‬
‭conta.depositar(valor);‬
‭}‬
‭}‬
‭public boolean sacar(Conta conta, float valor) {‬
‭if (conta != null) {‬
‭return conta.sacar(valor);‬
‭}‬
‭return false;‬
‭}‬
‭}‬

‭Parte 3 - Implementação das Classes‬‭ ‭e‬‭


ContaPF‬ ‭:‬
ContaPJ‬

/‭ / Classe ContaPF (Pessoa Física) - Continuação‬


‭package banco.conta;‬

‭public class ContaPF extends Conta {‬


‭public ContaPF() {‬
‭super(1); // Tipo de conta para pessoa física‬
‭}‬

‭public void depositar(float valor) {‬


‭saldo += valor;‬
‭}‬

‭public boolean sacar(float valor) {‬


‭if (valor <= saldo) {‬
‭saldo -= valor;‬
‭return true;‬
‭}‬
‭return false;‬
‭}‬
‭}‬

/‭ / Classe ContaPJ (Pessoa Jurídica) - Continuação‬


‭package banco.conta;‬

‭public class ContaPJ extends Conta {‬


‭public ContaPJ() {‬
‭super(2); // Tipo de conta para pessoa jurídica‬
‭}‬

‭public void depositar(float valor) {‬


‭saldo += valor;‬
‭}‬

‭public boolean sacar(float valor) {‬


‭if (valor <= saldo) {‬
‭saldo -= valor;‬
‭return true;‬
‭}‬
‭return false;‬
‭}‬
‭}‬

‭Parte 4 - Finalização da Implementação do‬‭ ‭e‬‭


Itau‬ ‭:‬
NuBank‬

/‭ / Classe Itau (Continuação)‬


‭package banco;‬

‭public class Itau extends Banco {‬


‭// Restante da classe Itau‬
‭}‬

/‭ / Classe NuBank (Continuação)‬


‭package banco;‬

‭public class NuBank extends Banco {‬


‭// Restante da classe NuBank‬
‭}‬
‭Parte 5 - Implementação da Classe‬‭ ‭(Método Principal):‬
Programa‬

‭Você pode adicionar esta parte do código em sua classe‬‭ ‭:‬


Programa‬

‭package main;‬

i‭mport banco.*;‬
‭import banco.conta.*;‬
‭import pessoa.Pessoa;‬

i‭mport java.util.List;‬
‭import java.util.Random;‬

‭public class Programa {‬


‭public static void main(String[] args) {‬
‭// Crie instâncias de pessoas e realize operações bancárias aqui‬
‭// Certifique-se de testar todos os casos especificados nos requisitos‬

/‭ / Exemplo:‬
‭Pessoa alice = new Pessoa("Alice", "1234", 1);‬
‭Itau itau = new Itau();‬
‭String numeroConta = itau.abrirConta(alice);‬
‭itau.depositar(alice.getConta(), 1000);‬
‭boolean pixResult = itau.enviarPix(alice, destino, 100);‬
‭// Continuar com outras operações e testes‬
‭}‬
‭}‬

‭ gora, você tem a estrutura básica do sistema bancário com as classes principais‬
A
‭inovadoras. Você pode continuar adicionando mais lógica e testando suas‬
‭operações de acordo com os requisitos. Se você tiver alguma dúvida específica ou‬
‭precisar de mais assistência em alguma parte da implementação, fique à vontade‬
‭para perguntar.‬

‭Parte 7 - Testes e Operações no Método Main (‬‭ ‭):‬


Programa‬

‭Agora, vamos realizar algumas operações e testes no método‬‭ ‭da classe‬


main‬
Programa‬
‭ ‭. Siga os requisitos fornecidos no anunciado:‬
‭package main;‬

i‭mport banco.*;‬
‭import banco.conta.*;‬
‭import pessoa.Pessoa;‬

‭import java.util.List;‬

‭public class Programa {‬


‭public static void main(String[] args) {‬
‭// Crie instâncias de pessoas e realize operações bancárias aqui‬
‭// Certifique-se de testar todos os casos especificados nos requisitos‬

‭try {‬
‭Pessoa alice = new Pessoa("Alice", "1234", 1);‬
‭assertNull("Conta da Alice deve ser nula", alice.getConta());‬

‭ essoa lenio = new Pessoa("Lenio", "5678", 2);‬


P
‭assertNull("Conta do Lenio deve ser nula", lenio.getConta());‬

‭ essoa mara = new Pessoa("Mara", "9999", 2);‬


P
‭assertNull("Conta da Mara deve ser nula", mara.getConta());‬

‭ ssertThrows(Exception.class, () -> new Pessoa("Erro", "1111", 3));‬


a
‭System.out.println("Erro: Tipo de Pessoa deve ser 1 ou 2");‬

I‭tau itau = new Itau();‬


‭assertFalse("O saque não deve ser concluído pois a Alice não tem conta",‬
‭itau.sacar(alice.getConta(), 100));‬

‭ tring numeroContaAlice = itau.abrirConta(alice);‬


S
‭alice.listarInformacoes();‬
‭assertEquals("Tipo de conta deve ser PF", alice.getConta().obterTipoConta(),‬
‭"PF");‬
‭assertInstanceOf(ContaPF.class, alice.getConta());‬

‭itau.depositar(alice.getConta(), 1000);‬

‭ ssertEquals("Erro: Saldo da Alice após depósito de 1000",‬


a
‭alice.getConta().getSaldo(), 1000, 0.0);‬
‭ ssertFalse("O envio não deve ser concluído pois o Lenio não tem conta",‬
a
‭itau.enviarPix(alice, lenio, 100));‬
‭assertNull("Lenio não tem conta", lenio.getConta());‬

‭ uBank nubank = new NuBank();‬


N
‭nubank.abrirConta(lenio);‬
‭lenio.listarInformacoes();‬
‭assertEquals("Tipo de conta deve ser PJ", lenio.getConta().obterTipoConta(),‬
‭"PJ");‬
‭assertInstanceOf(ContaPJ.class, lenio.getConta());‬

‭nubank.abrirConta(mara);‬

‭assertEquals("Tipo de conta deve ser PJ", mara.getConta().obterTipoConta(),‬


‭"PJ");‬
‭assertInstanceOf(ContaPJ.class, mara.getConta());‬

‭if (itau.enviarPix(lenio, alice, 100)) {‬


‭System.out.println("Pix enviado com sucesso de " + lenio.getNome() + "‬
‭para " + alice.getNome());‬
‭} else {‬
‭System.out.println("Não foi possível enviar o Pix de " + lenio.getNome() + "‬
‭para " + alice.getNome());‬
‭}‬

‭itau.sacar(alice.getConta(), 100);‬

‭ ssertEquals("Erro: Saldo da Alice após saque de 100",‬


a
‭alice.getConta().getSaldo(), 900, 0.0);‬

‭assertTrue("O envio do Pix deveria ter sido feito", itau.enviarPix(alice, lenio,‬


‭50));‬
‭ ssertEquals("Erro: Saldo da Alice após envio de Pix de 50",‬
a
‭alice.getConta().getSaldo(), 850, 0.0);‬
‭assertEquals("Erro: Saldo do Lenio após receber Pix de 50",‬
‭lenio.getConta().getSaldo(), 50, 0.0);‬

‭ ssertFalse("Não é possível sacar, pois o saldo não é suficiente",‬


a
‭nubank.sacar(lenio.getConta(), 100));‬
‭assertTrue("O saque deveria ter sido efetuado, pois há saldo suficiente",‬
‭nubank.sacar(lenio.getConta(), 20));‬
‭ ssertEquals("Erro: Saldo do Lenio após saque de 20",‬
a
‭lenio.getConta().getSaldo(), 30, 0.0);‬

l‭enio.listarInformacoes();‬
‭alice.listarInformacoes();‬

‭ ssertEquals("Número de clientes incorreto para o Itau",‬


a
‭itau.obterClientes().size(), 1);‬
‭assertEquals("Número de clientes incorreto para o Nubank",‬
‭nubank.obterClientes().size(), 2);‬
‭assertFalse("Conta não pode ser encerrada, pois a Mara não é cliente deste‬
‭banco", itau.encerrarConta(mara));‬
‭assertTrue("Conta deveria ter sido encerrada", nubank.encerrarConta(mara));‬
‭assertEquals("Número de clientes incorreto para o Nubank após‬
‭encerramento de conta", nubank.obterClientes().size(), 1);‬

‭ essoa roger = new Pessoa("Roger", "7777", 1);‬


P
‭itau.abrirConta(roger);‬
‭assertEquals("Novo número de clientes incorreto para o Itau após abertura de‬
‭conta", itau.obterClientes().size(), 2);‬

‭} catch (Exception e) {‬
‭System.out.println("Erro: " + e.getMessage());‬
‭}‬

‭ rograma programa = new Programa();‬


P
‭programa.exibirSaldo(itau);‬
‭programa.exibirSaldo(nubank);‬
‭}‬

‭public void exibirSaldo(IOperacoesBancarias banco) {‬


‭List<Pessoa> clientes = banco.obterClientes();‬
‭for (Pessoa cliente : clientes) {‬
‭float saldo = banco.obterSaldo(cliente);‬
‭String msg = "Saldo da pessoa " + cliente.getNome() + ": " + saldo;‬
‭System.out.println(msg);‬
‭}‬
‭}‬
‭}‬
‭ laro, vamos continuar adicionando mais lógica e testando as operações de acordo‬
C
‭com os requisitos.‬

‭Parte 8 - Implementação da Classe‬‭ ‭:‬


Banco‬

‭ gora, implementaremos uma classe abstrata‬‭


A Banco‬‭,‬‭que deve estender uma‬
‭interface‬‭ ‭e conter uma lista de clientes e outros métodos.‬
IOperacoesBancarias‬

/‭ / Classe Banco (Continuação)‬


‭package banco;‬

‭import pessoa.Pessoa;‬

i‭mport java.util.ArrayList;‬
‭import java.util.List;‬

‭public abstract class Banco implements IOperacoesBancarias {‬


‭protected List<Pessoa> clientes;‬

‭public Banco() {‬
‭clientes = new ArrayList<>();‬
‭}‬

‭ Override‬
@
‭public List<Pessoa> obterClientes() {‬
‭return clientes;‬
‭}‬

‭ Override‬
@
‭public float obterSaldo(Pessoa pessoa) {‬
‭if (pessoa.getConta() != null) {‬
‭return pessoa.getConta().getSaldo();‬
‭}‬
‭return 0.0f;‬
‭}‬

‭public void depositar(Conta conta, float valor) {‬


‭if (conta != null) {‬
‭conta.depositar(valor);‬
‭}‬
‭}‬
‭public boolean sacar(Conta conta, float valor) {‬
‭if (conta != null) {‬
‭return conta.sacar(valor);‬
‭}‬
‭return false;‬
‭}‬
‭}‬

‭Parte 9 - Implementação da Classe‬‭ ‭e‬‭


Itau‬ ‭:‬
NuBank‬

‭ gora, implementaremos as classes concretas‬‭


A ‭e‬‭
Itau‬ ‭, que estendem a‬
NuBank‬
‭classe‬‭ ‭. Além disso, implementaremos os métodos‬‭abstratos‬‭
Banco‬ abrirConta‬‭e‬
encerrarConta‬
‭ ‭.‬

‭Java‬

/‭ / Classe Itau (Continuação)‬


‭package banco;‬

i‭mport pessoa.Pessoa;‬
‭import banco.conta.Conta;‬
‭import banco.conta.ContaPF;‬
‭import banco.conta.ContaPJ;‬

‭public class Itau extends Banco {‬

‭ Override‬
@
‭public String abrirConta(Pessoa pessoa) {‬
‭if (pessoa != null) {‬
‭String numeroConta = "Itau-" + (int) (Math.random() * 1000);‬
‭Conta conta;‬
‭if (pessoa.obterTipoPessoa().equals("PF")) {‬
‭conta = new ContaPF();‬
‭} else {‬
‭conta = new ContaPJ();‬
‭}‬
‭conta.setNumeroConta(numeroConta);‬
‭pessoa.setConta(conta);‬
‭ lientes.add(pessoa);‬
c
‭return numeroConta;‬
}‭ ‬
‭return null;‬
‭}‬

‭ Override‬
@
‭public boolean encerrarConta(Pessoa pessoa) {‬
‭if (clientes.contains(pessoa)) {‬
‭pessoa.setConta(null);‬
‭clientes.remove(pessoa);‬
‭return true;‬
‭}‬
‭return false;‬
‭}‬
‭}‬

/‭ / Classe NuBank (Continuação)‬


‭package banco;‬

‭import pessoa.Pessoa;‬

‭public class NuBank extends Banco {‬

‭ Override‬
@
‭public String abrirConta(Pessoa pessoa) {‬
‭if (pessoa != null) {‬
‭String numeroConta = "Nubank-" + (int) (Math.random() * 1000);‬
‭Conta conta;‬
‭if (pessoa.obterTipoPessoa().equals("PF")) {‬
‭conta = new ContaPF();‬
‭} else {‬
‭conta = new ContaPJ();‬
‭}‬
‭conta.setNumeroConta(numeroConta);‬
‭pessoa.setConta(conta);‬
‭clientes.add(pessoa);‬
‭return numeroConta;‬
}‭ ‬
‭return null;‬
‭}‬

‭ Override‬
@
‭public boolean encerrarConta(Pessoa pessoa) {‬
‭if (clientes.contains(pessoa)) {‬
‭pessoa.setConta(null);‬
‭clientes.remove(pessoa);‬
‭return true;‬
‭}‬
‭return false;‬
‭}‬
‭}‬

‭Parte 10 - Execução de Operações e Testes:‬

‭ gora que implementamos as classes e métodos restantes, você pode continuar‬


A
‭com os testes no método‬‭ ‭da classe‬‭
main‬ ‭e realizar‬‭diversas operações‬
Programa‬
‭bancárias, incluindo depósitos, saques e exibição de saldos. -se de observar as‬
‭mensagens de saída para verificar se as operações estão funcionando corretamente‬
‭e se os requisitos estão sendo atendidos.‬

‭ laro, vamos continuar adicionando mais lógica e testando as operações de acordo‬


C
‭com os requisitos.‬

‭Parte 11 - Implementação da Classe‬‭ ‭e‬‭


ContaPF‬ ‭:‬
ContaPJ‬

‭ gora, implementaremos as classes‬‭


A ‭e‬‭
ContaPF‬ ‭,‬‭que estendem a classe‬
ContaPJ‬
‭abstrata‬‭ ‭. Cada uma dessas classes deve implementar‬‭o método‬
Conta‬
obterTipoConta‬
‭ ‭conforme especificado.‬
/‭ / Classe ContaPF (Continuação)‬
‭package banco.conta;‬

‭public class ContaPF extends Conta {‬

‭public ContaPF() {‬
‭super(1);‬
‭}‬

‭ Override‬
@
‭public String obterTipoConta() {‬
‭return "PF";‬
‭}‬
‭}‬

/‭ / Classe ContaPJ (Continuação)‬


‭package banco.conta;‬

‭public class ContaPJ extends Conta {‬

‭public ContaPJ() {‬
‭super(2);‬
‭}‬

‭ Override‬
@
‭public String obterTipoConta() {‬
‭return "PJ";‬
‭}‬
‭}‬

‭Parte 12 - Testando as Operações no Método‬‭ ‭:‬


main‬

‭Agora, podemos continuar testando as operações no método‬‭ main‬‭da classe‬


Programa‬
‭ ‭. Vamos incluir mais testes e operações, como‬‭depósitos, saques, envio de‬
‭Pix e verificação de saldos.‬
/‭ / Método main (Continuação)‬
‭public static void main(String[] args) throws Exception {‬
‭Pessoa alice = new Pessoa("Alice", "1234", 1);‬
‭assertNull("Conta da Alice deve ser nula", alice.getConta());‬

‭ essoa lenio = new Pessoa("Lenio", "5678", 2);‬


P
‭assertNull("Conta do Lenio deve ser nula", lenio.getConta());‬

‭ essoa mara = new Pessoa("Mara", "9999", 2);‬


P
‭assertNull("Conta da Mara deve ser nula", mara.getConta());‬

‭try {‬
‭assertThrows(Exception.class, () -> new Pessoa("Erro", "1111", 3));‬
‭new Pessoa("Erro", "1111", 3);‬
‭} catch (Exception e) {‬
‭String msgErroEsperada = "Tipo Pessoa deve ser 1 ou 2";‬
‭String msgErroObtida = e.getMessage();‬
‭assertEquals("Mensagem de validação do tipo de pessoa incorreta",‬
‭msgErroEsperada, msgErroObtida);‬
‭System.out.println(String.format("Erro: %s\n", e.getMessage()));‬
‭}‬

I‭tau itau = new Itau();‬


‭assertFalse("O saque não deve ser concluído, pois a Alice não tem conta",‬
‭itau.sacar(alice.getConta(), 100));‬

‭ tring numeroContaAlice = itau.abrirConta(alice);‬


S
‭alice.listarInformacoes();‬
‭assertEquals("Tipo conta deve ser PF", alice.getConta().obterTipoConta(), "PF");‬
‭assertInstanceOf(ContaPF.class, alice.getConta());‬

i‭tau.depositar(alice.getConta(), 1000);‬
‭assertEquals("Erro Saldo Alice após depósito de 1000",‬
‭alice.getConta().getSaldo(), 1000, 0.0);‬

‭ ssertFalse("O envio não deve ser concluído, pois o Lenio não tem conta",‬
a
‭itau.enviarPix(alice, lenio, 100));‬
‭assertNull("Lenio não tem conta", lenio.getConta());‬

‭ uBank nubank = new NuBank();‬


N
‭String numeroContaLenio = nubank.abrirConta(lenio);‬
l‭enio.listarInformacoes();‬
‭assertEquals("Tipo conta deve ser PJ", lenio.getConta().obterTipoConta(), "PJ");‬
‭assertInstanceOf(ContaPJ.class, lenio.getConta());‬

‭ ubank.abrirConta(mara);‬
n
‭assertEquals("Tipo conta deve ser PJ", mara.getConta().obterTipoConta(), "PJ");‬
‭assertInstanceOf(ContaPJ.class, mara.getConta());‬

‭if (itau.enviarPix(lenio, alice, 100)) {‬


‭String msg = String.format("Pix enviado com sucesso de %s para %s",‬
‭lenio.getNome(), alice.getNome());‬
‭System.out.println(msg);‬
‭} else {‬
‭String msg = String.format("Não foi possível enviar o Pix de %s para %s",‬
‭lenio.getNome(), alice.getNome());‬
‭System.out.println(msg);‬
‭}‬

i‭tau.sacar(alice.getConta(), 100);‬
‭assertEquals("Erro Saldo Alice após saque de 100", alice.getConta().getSaldo(),‬
‭ 00, 0.0);‬
9

‭ ssertTrue("O envio do Pix deveria ter sido feito", itau.enviarPix(alice, lenio, 50));‬
a
‭assertEquals("Erro Saldo Alice após envio Pix de 50", alice.getConta().getSaldo(),‬
‭850, 0.0);‬
‭assertEquals("Erro Saldo Lenio após receber Pix de 50",‬
‭lenio.getConta().getSaldo(), 50, 0.0);‬

‭ ssertFalse("Não é possível sacar, pois o saldo não é suficiente",‬


a
‭nubank.sacar(lenio.getConta(), 100));‬
‭assertTrue("O saque deveria ter sido efetuado, pois há saldo suficiente",‬
‭nubank.sacar(lenio.getConta(), 20));‬
‭assertEquals("Erro Saldo Lenio após saque de 20", lenio.getConta().getSaldo(), 30,‬
‭0.0);‬

l‭enio.listarInformacoes();‬
‭alice.listarInformacoes();‬

‭ ssertEquals("Número de clientes incorreto para o Itau", itau.obterClientes().size(),‬


a
‭1);‬
‭assertEquals("Número de clientes incorreto para o Nubank",‬
‭nubank.obterClientes().size(), 2);‬
‭ ssertFalse("Conta não pode ser encerrada, pois a Mara não é cliente deste‬
a
‭banco", itau.encerrarConta(mara));‬
‭assertTrue("Conta deveria ter sido encerrada", nubank.encerrarConta(mara));‬
‭assertEquals("Número de clientes incorreto para o Nubank após encerramento de‬
‭conta", nubank.obterClientes().size(), 1);‬

‭ essoa roger = new Pessoa("Roger", "7777", 1);‬


P
‭String numeroContaRoger = itau.abrirConta(roger);‬
‭assertEquals("Novo número de clientes incorreto para o Itau após abertura de‬
‭conta", itau.obterClientes().size(), 2);‬

‭ ssertEquals("Erro Saldo Lenio", lenio.getConta().getSaldo(), 30, 0.0);‬


a
‭assertEquals("Erro Saldo Alice", alice.getConta().getSaldo(), 850, 0.0);‬

‭Programa programa = new Programa();‬

‭ rograma.exibirSaldo(itau);‬
p
‭programa.exibirSaldo(nubank);‬
‭}‬

‭ esta parte, continuamos testando diversas operações, incluindo abertura e‬


N
‭encerramento de contas, depósitos, saques, envio de Pix e exibição de saldos. É‬
‭necessário que todas as operações estejam funcionando de acordo com os‬
‭requisitos especificados.‬

Você também pode gostar