POO com JAVA

Exemplo prático 01.a: Uso de Métodos, Atributos e Visibilidade

Programa BancoQuarta

Crie um novo programa com o nome "BancoQuarta".

package bancoquarta;public class BancoQuarta { public static void main(String[] args) { Conta c01 = new Conta("CP", "Sandrão", 3456789, "Messejana"); c01.abrirConta(3456789, "CC"); c01.depositar(100, "CC"); c01.depositar(200, "CP"); c01.sacar(20, "CC"); c01.sacar(300, "CP"); c01.fecharConta(3456789, "CP"); c01.fecharConta(3456789, "CP"); c01.sacar(90, "CC"); c01.usarChequeEsquecial(); c01.sacar(90, "CC"); c01.fecharConta(3456789, "CC"); c01.depositar(10, "CC"); c01.fecharConta(3456789, "CC"); System.out.println("**********************************************"); c01.print(); } }

Classe Conta( )

Crie uma classe com o nome "Conta".

package bancoquarta;public class Conta { private String agencia; protected float saldoCC; protected float saldoCP; protected float saldoCH; protected String tipoConta; public String nome; private int cpf; private boolean statusCC; private boolean statusCP; //CONSTRUTOR //Conta(tipoConta, nome, cpf, agencia) public Conta(String tc, String n, int c, String a){ this.tipoConta = tc; this.nome = n; this.cpf = c; this.agencia = a; this.statusCC = false; this.statusCP = false; if(this.tipoConta == "CC"){ this.saldoCC = 0; this.statusCC = true; } else { this.saldoCP = 50; this.statusCP = true; } System.out.println("Conta " + this.tipoConta + " aberta!"); print(); } //abrirConta(CPF, tipoConta) public void abrirConta(int num, String tc){ if (this.cpf == num){ if(tc == "CC"){ if(this.statusCC){ System.out.println("Este cliente já possui conta corrente"); } else{ if (this.saldoCP<0){ System.out.println("Cliente em débito com o banco!"); } else{ this.statusCC = true; System.out.println("Conta corrente aberta"); } } } else if(tc == "CP"){ if(this.statusCP){ System.out.println("Este cliente já possui conta poupança"); } else{ if (this.saldoCC<0){ System.out.println("Cliente em débito com o banco!"); } else{ this.statusCP = true; System.out.println("Conta poupança aberta"); } } } } else System.out.println("CPF inválido!"); } //abrirConta(CPF, tipoConta) public void fecharConta(int num, String tc){ if (this.cpf == num){ if(tc == "CC"){ if(this.statusCC){ if (this.saldoCC<0){ System.out.println("Cliente em débito com o banco na CC!"); System.out.println("Deposite " + (this.saldoCC*(-1)) + " para fechar a conta!"); } else if (this.saldoCC>0){ System.out.println("Saque o saldo antes de fechar a conta Corrente"); sacar(this.saldoCC, "CC"); } else{ this.statusCC = false; System.out.println("Conta corrente fechada"); } } else{ System.out.println("Cliente não possui conta corrente ativa!"); } } else if(tc == "CP"){ if(this.statusCP){ if (this.saldoCP<0){ System.out.println("Cliente em débito com o banco na CP!"); } else if (this.saldoCP>0){ System.out.println("Saque o saldo antes de fechar a conta Poupança"); sacar(this.saldoCP, "CP"); } else{ this.statusCP = false; System.out.println("Conta poupança fechada"); } } else{ System.out.println("Cliente não possui conta poupança ativa!"); } } } else System.out.println("CPF inválido!"); } public void sacar(float s, String tc){ System.out.println("O valor do saque solicitado foi: "+ s); if(tc == "CC"){ if(this.statusCC){ if (this.saldoCC >= s){ this.saldoCC = this.saldoCC - s; System.out.println("Saque realizado, saldo atual da CC: "+ this.saldoCC); } else{ System.out.println("Saldo insuficiente."); System.out.println("Saldo em conta CC: " + this.saldoCC); if (this.saldoCH>0){ System.out.println("Utilizando cheque especial;"); if(this.saldoCC > -200){ this.saldoCC = this.saldoCC - s; System.out.println("Saque realizado, saldo atual da CC: "+ this.saldoCC); System.out.println("Você ainda possui " + (this.saldoCH + this.saldoCC) + " do CH."); } else System.out.println("Cheque especial estourado, saldo CC: " + this.saldoCC); } else System.out.println("Ative seu cheque especial."); } } else{ System.out.println("Impossivel sacar, conta corrente desativada!"); } } else{ if(this.statusCP){ if (this.saldoCP >= s){ this.saldoCP = this.saldoCP - s; System.out.println("Saque realizado, saldo atual da CP: "+ this.saldoCP); } else{ System.out.println("Saldo insuficiente."); System.out.println("Saldo em conta CP: " + this.saldoCP); } } else{ System.out.println("Impossivel sacar, conta poupança desativada!"); } } } public void depositar(float d, String tc){ if(tc == "CC"){ if(this.statusCC){ this.saldoCC = this.saldoCC + d; System.out.println("Deposito realizado, saldo atual da CC: "+ this.saldoCC); } else{ System.out.println("Impossivel depositar, conta corrente desativada!"); } } else{ if(this.statusCP){ this.saldoCP = this.saldoCP + d; System.out.println("Deposito realizado, saldo atual da CP: "+ this.saldoCP); } else{ System.out.println("Impossivel depositar, conta poupança desativada!"); } } } public void usarChequeEsquecial(){ if(this.statusCC){ this.saldoCH = 200; System.out.println("Cliente usando cheque especial na CC: "+ this.saldoCH); } } public void print(){ System.out.println("Saldo: " + this.saldoCC); System.out.println("Poupança: " + this.saldoCP); System.out.println("Nome: " + this.nome); System.out.println("CPF: " + this.cpf); System.out.println("Agencia: " + this.agencia); System.out.println("Conta Corrente ativada?: " + this.statusCC); System.out.println("Conta Poupança ativada?: " + this.statusCP); System.out.println("*******************************************************************"); }}

Exemplo prático 01.b: Adicionamos os métodos especiais Getters e Setters.

Classe Conta( )

package bancoquarta;public class Conta { //*****************ATRIBUTOS******************************************** private String agencia; protected float saldoCC; protected float saldoCP; protected float saldoCH; protected String tipoConta; public String nome; private int cpf; private boolean statusCC; private boolean statusCP; //*****************CONSTRUTOR******************************************** //Conta(tipoConta, nome, cpf, agencia) public Conta(String tc, String n, int c, String a){ this.tipoConta = tc; this.nome = n; this.cpf = c; this.agencia = a; this.statusCC = false; this.statusCP = false; if(this.tipoConta == "CC"){ this.saldoCC = 0; this.statusCC = true; } else { this.saldoCP = 50; this.statusCP = true; } System.out.println("Conta " + this.tipoConta + " aberta!"); print(); } //***************MÉTODOS ESPECIAIS**************************************** public String getAgencia() { return agencia; }
public void setAgencia(String agencia) { this.agencia = agencia; }
public String getNome() { return nome; }
public void setNome(String nome) { this.nome = nome; }
public int getCpf() { return cpf; }
public void setCpf(int cpf) { this.cpf = cpf; }
public float getSaldoCC() { return saldoCC; }
public void setSaldoCC(float saldoCC) { this.saldoCC = saldoCC; }
public float getSaldoCP() { return saldoCP; }
public void setSaldoCP(float saldoCP) { this.saldoCP = saldoCP; }
public float getSaldoCH() { return saldoCH; }
public void setSaldoCH(float saldoCH) { this.saldoCH = saldoCH; }
public String getTipoConta() { return tipoConta; }
public void setTipoConta(String tipoConta) { this.tipoConta = tipoConta; }
public boolean getStatusCC() { return statusCC; }
public void setStatusCC(boolean statusCC) { this.statusCC = statusCC; }
public boolean getStatusCP() { return statusCP; }
public void setStatusCP(boolean statusCP) { this.statusCP = statusCP; } //*********************MÉTODOS******************************************** //abrirConta(CPF, tipoConta) public void abrirConta(int num, String tc){ if (this.getCpf() == num){ if(tc == "CC"){ if(this.getStatusCC()){ System.out.println("Este cliente já possui conta corrente"); } else{ if (this.getSaldoCP()<0){ System.out.println("Cliente em débito com o banco!"); } else{ this.setStatusCC(true); System.out.println("Conta corrente aberta"); } } } else if(tc == "CP"){ if(this.getStatusCP()){ System.out.println("Este cliente já possui conta poupança"); } else{ if (this.getSaldoCC()<0){ System.out.println("Cliente em débito com o banco!"); } else{ this.setStatusCP(true); System.out.println("Conta poupança aberta"); } } } } else System.out.println("CPF inválido!"); } //abrirConta(CPF, tipoConta) public void fecharConta(int num, String tc){ if (this.getCpf() == num){ if(tc == "CC"){ if(this.getStatusCC()){ if (this.getSaldoCC()<0){ System.out.println("Cliente em débito com o banco na CC!"); System.out.println("Deposite " + (this.getSaldoCC()*(-1)) + " para fechar a conta!"); } else if (this.getSaldoCC()>0){ System.out.println("Saque o saldo antes de fechar a conta Corrente"); sacar(this.saldoCC, "CC"); } else{ this.setStatusCC(false); System.out.println("Conta corrente fechada"); } } else{ System.out.println("Cliente não possui conta corrente ativa!"); } } else if(tc == "CP"){ if(this.getStatusCP()){ if (this.getSaldoCP()<0){ System.out.println("Cliente em débito com o banco na CP!"); } else if (this.getSaldoCP()>0){ System.out.println("Saque o saldo antes de fechar a conta Poupança"); sacar(this.saldoCP, "CP"); } else{ this.setStatusCP(false); System.out.println("Conta poupança fechada"); } } else{ System.out.println("Cliente não possui conta poupança ativa!"); } } } else System.out.println("CPF inválido!"); } public void sacar(float s, String tc){ System.out.println("O valor do saque solicitado foi: "+ s); if(tc == "CC"){ if(this.getStatusCC()){ if (this.getSaldoCC() >= s){ this.setSaldoCC(this.getSaldoCC()-s); System.out.println("Saque realizado, saldo atual da CC: "+ this.getSaldoCC()); } else{ System.out.println("Saldo insuficiente."); System.out.println("Saldo em conta CC: " + this.getSaldoCC()); if (this.getSaldoCH()>0){ System.out.println("Utilizando cheque especial;"); if(this.getSaldoCC() > -200){ this.setSaldoCC(this.getSaldoCC()-s); System.out.println("Saque realizado, saldo atual da CC: "+ this.getSaldoCC()); System.out.println("Você ainda possui " + (this.saldoCH + this.saldoCC) + " do CH."); } else System.out.println("Cheque especial estourado, saldo CC: " + this.getSaldoCC()); } else System.out.println("Ative seu cheque especial."); } } else{ System.out.println("Impossivel sacar, conta corrente desativada!"); } } else{ if(this.getStatusCP()){ if (this.getSaldoCP() >= s){ this.setSaldoCP(this.getSaldoCP()-s); System.out.println("Saque realizado, saldo atual da CP: "+ this.getSaldoCP()); } else{ System.out.println("Saldo insuficiente."); System.out.println("Saldo em conta CP: " + this.getSaldoCP()); } } else{ System.out.println("Impossivel sacar, conta poupança desativada!"); } } } public void depositar(float d, String tc){ if(tc == "CC"){ if(this.getStatusCC()){ this.setSaldoCC(this.getSaldoCC()+d); System.out.println("Deposito realizado, saldo atual da CC: "+ this.getSaldoCC()); } else{ System.out.println("Impossivel depositar, conta corrente desativada!"); } } else{ if(this.getStatusCP()){ this.setSaldoCP(this.getSaldoCP()+d); System.out.println("Deposito realizado, saldo atual da CP: "+ this.getSaldoCP()); } else{ System.out.println("Impossivel depositar, conta poupança desativada!"); } } } public void usarChequeEsquecial(){ if(this.getStatusCC()){ this.setSaldoCH(200f); System.out.println("Cliente usando cheque especial na CC: "+ this.getSaldoCH()); } } public void print(){ System.out.println("Saldo: " + this.getSaldoCC()); System.out.println("Poupança: " + this.getSaldoCP()); System.out.println("Nome: " + this.getNome()); System.out.println("CPF: " + this.getCpf()); System.out.println("Agencia: " + this.getAgencia()); System.out.println("Conta Corrente ativada?: " + this.getStatusCC()); System.out.println("Conta Poupança ativada?: " + this.getStatusCP()); System.out.println("*******************************************************************"); }}

Programa BancoQuarta

Adicionamos um novo objeto no programa principal

package bancoquarta;public class BancoQuarta { public static void main(String[] args) { Conta c01 = new Conta("CP", "Sandrão", 3456789, "Messejana"); c01.abrirConta(3456789, "CC"); c01.depositar(100f, "CC"); c01.depositar(200f, "CP"); c01.sacar(20f, "CC"); c01.sacar(300f, "CP"); c01.fecharConta(3456789, "CP"); c01.fecharConta(3456789, "CP"); c01.sacar(90f, "CC"); c01.usarChequeEsquecial(); c01.sacar(90f, "CC"); c01.fecharConta(3456789, "CC"); c01.depositar(10f, "CC"); c01.fecharConta(3456789, "CC"); System.out.println("**********************************************"); c01.print(); System.out.println("*******O CLIENTE VOLTOU PARA REABRIR A CONTA****"); //Como já tem um objeto criado (cliente) o seu CPF já esta cadastrado c01.abrirConta(3456789, "CC"); c01.print(); System.out.println("**********************************************"); Conta c02 = new Conta("CP", "Mesquita", 123456, "Maraponga"); } }

Exemplo prático 01.c: Adicionamos uma interface. - Encapsulamento

Interface Cadastro

Crie uma Interface com o nome "Cadastro"

package bancoquarta;public interface Cadastro { public abstract void abrirConta(int num, String tc); public abstract void fecharConta(int num, String tc); public abstract void sacar(float s, String tc); public abstract void depositar(float d, String tc); public abstract void usarChequeEspecial(); public abstract void print();}

Classe Conta( )

package bancoquarta;//*******A MINHA CLASSE IMPLEMENTA UMA INTERFACE*************************public class Conta implements Cadastro { //*****************ATRIBUTOS******************************************** private String agencia; private float saldoCC; private float saldoCP; private float saldoCH; private String tipoConta; private String nome; private int cpf; private boolean statusCC; private boolean statusCP; //*****************CONSTRUTOR******************************************** //Conta(tipoConta, nome, cpf, agencia) public Conta(String tc, String n, int c, String a){ this.tipoConta = tc; this.nome = n; this.cpf = c; this.agencia = a; this.statusCC = false; this.statusCP = false; if(this.tipoConta == "CC"){ this.saldoCC = 0; this.statusCC = true; } else { this.saldoCP = 50; this.statusCP = true; } System.out.println("Conta " + this.tipoConta + " aberta!"); print(); } //***************MÉTODOS ESPECIAIS**************************************** private String getAgencia() { return agencia; }
private void setAgencia(String agencia) { this.agencia = agencia; }
private String getNome() { return nome; }
private void setNome(String nome) { this.nome = nome; }
private int getCpf() { return cpf; }
private void setCpf(int cpf) { this.cpf = cpf; }
private float getSaldoCC() { return saldoCC; }
private void setSaldoCC(float saldoCC) { this.saldoCC = saldoCC; }
private float getSaldoCP() { return saldoCP; }
private void setSaldoCP(float saldoCP) { this.saldoCP = saldoCP; }
private float getSaldoCH() { return saldoCH; }
private void setSaldoCH(float saldoCH) { this.saldoCH = saldoCH; }
private String getTipoConta() { return tipoConta; }
private void setTipoConta(String tipoConta) { this.tipoConta = tipoConta; }
private boolean getStatusCC() { return statusCC; }
private void setStatusCC(boolean statusCC) { this.statusCC = statusCC; }
private boolean getStatusCP() { return statusCP; }
private void setStatusCP(boolean statusCP) { this.statusCP = statusCP; } //*********************MÉTODOS******************************************** //abrirConta(CPF, tipoConta) @Override public void abrirConta(int num, String tc){ if (this.getCpf() == num){ if(tc == "CC"){ if(this.getStatusCC()){ System.out.println("Este cliente já possui conta corrente"); } else{ if (this.getSaldoCP()<0){ System.out.println("Cliente em débito com o banco!"); } else{ this.setStatusCC(true); System.out.println("Conta corrente aberta"); } } } else if(tc == "CP"){ if(this.getStatusCP()){ System.out.println("Este cliente já possui conta poupança"); } else{ if (this.getSaldoCC()<0){ System.out.println("Cliente em débito com o banco!"); } else{ this.setStatusCP(true); System.out.println("Conta poupança aberta"); } } } } else System.out.println("CPF inválido!"); } //abrirConta(CPF, tipoConta) @Override public void fecharConta(int num, String tc){ if (this.getCpf() == num){ if(tc == "CC"){ if(this.getStatusCC()){ if (this.getSaldoCC()<0){ System.out.println("Cliente em débito com o banco na CC!"); System.out.println("Deposite " + (this.getSaldoCC()*(-1)) + " para fechar a conta!"); } else if (this.getSaldoCC()>0){ System.out.println("Saque o saldo antes de fechar a conta Corrente"); sacar(this.saldoCC, "CC"); } else{ this.setStatusCC(false); System.out.println("Conta corrente fechada"); } } else{ System.out.println("Cliente não possui conta corrente ativa!"); } } else if(tc == "CP"){ if(this.getStatusCP()){ if (this.getSaldoCP()<0){ System.out.println("Cliente em débito com o banco na CP!"); } else if (this.getSaldoCP()>0){ System.out.println("Saque o saldo antes de fechar a conta Poupança"); sacar(this.saldoCP, "CP"); } else{ this.setStatusCP(false); System.out.println("Conta poupança fechada"); } } else{ System.out.println("Cliente não possui conta poupança ativa!"); } } } else System.out.println("CPF inválido!"); } @Override public void sacar(float s, String tc){ System.out.println("O valor do saque solicitado foi: "+ s); if(tc == "CC"){ if(this.getStatusCC()){ if (this.getSaldoCC() >= s){ this.setSaldoCC(this.getSaldoCC()-s); System.out.println("Saque realizado, saldo atual da CC: "+ this.getSaldoCC()); } else{ System.out.println("Saldo insuficiente."); System.out.println("Saldo em conta CC: " + this.getSaldoCC()); if (this.getSaldoCH()>0){ System.out.println("Utilizando cheque especial;"); if(this.getSaldoCC() > -200){ this.setSaldoCC(this.getSaldoCC()-s); System.out.println("Saque realizado, saldo atual da CC: "+ this.getSaldoCC()); System.out.println("Você ainda possui " + (this.saldoCH + this.saldoCC) + " do CH."); } else System.out.println("Cheque especial estourado, saldo CC: " + this.getSaldoCC()); } else System.out.println("Ative seu cheque especial."); } } else{ System.out.println("Impossivel sacar, conta corrente desativada!"); } } else{ if(this.getStatusCP()){ if (this.getSaldoCP() >= s){ this.setSaldoCP(this.getSaldoCP()-s); System.out.println("Saque realizado, saldo atual da CP: "+ this.getSaldoCP()); } else{ System.out.println("Saldo insuficiente."); System.out.println("Saldo em conta CP: " + this.getSaldoCP()); } } else{ System.out.println("Impossivel sacar, conta poupança desativada!"); } } } @Override public void depositar(float d, String tc){ if(tc == "CC"){ if(this.getStatusCC()){ this.setSaldoCC(this.getSaldoCC()+d); System.out.println("Deposito realizado, saldo atual da CC: "+ this.getSaldoCC()); } else{ System.out.println("Impossivel depositar, conta corrente desativada!"); } } else{ if(this.getStatusCP()){ this.setSaldoCP(this.getSaldoCP()+d); System.out.println("Deposito realizado, saldo atual da CP: "+ this.getSaldoCP()); } else{ System.out.println("Impossivel depositar, conta poupança desativada!"); } } } @Override public void print(){ System.out.println("Saldo: " + this.getSaldoCC()); System.out.println("Poupança: " + this.getSaldoCP()); System.out.println("Nome: " + this.getNome()); System.out.println("CPF: " + this.getCpf()); System.out.println("Agencia: " + this.getAgencia()); System.out.println("Conta Corrente ativada?: " + this.getStatusCC()); System.out.println("Conta Poupança ativada?: " + this.getStatusCP()); System.out.println("*******************************************************************"); }
public void usarChequeEspecial() { if(this.getStatusCC()){ this.setSaldoCH(200f); System.out.println("Cliente usando cheque especial na CC: "+ this.getSaldoCH()); } }

}

Programa BancoQuarta

package bancoquarta;public class BancoQuarta { public static void main(String[] args) { Conta c01 = new Conta("CP", "Sandrão", 3456789, "Messejana"); c01.abrirConta(3456789, "CC"); c01.depositar(100f, "CC"); c01.depositar(200f, "CP"); c01.sacar(20f, "CC"); c01.sacar(300f, "CP"); c01.fecharConta(3456789, "CP"); c01.fecharConta(3456789, "CP"); c01.sacar(90f, "CC"); c01.usarChequeEspecial(); c01.sacar(90f, "CC"); c01.fecharConta(3456789, "CC"); c01.depositar(10f, "CC"); c01.fecharConta(3456789, "CC"); System.out.println("**********************************************"); c01.print(); System.out.println("*******O CLIENTE VOLTOU PARA REABRIR A CONTA****"); //Como já tem um objeto criado (cliente) o seu CPF já esta cadastrado c01.abrirConta(3456789, "CC"); c01.print(); System.out.println("**********************************************"); Conta c02 = new Conta("CP", "Mesquita", 123456, "Maraponga"); c02.abrirConta(123456, "CC"); } }

Exemplo prático 01.d: Instanciando objetos com vetor e agregando Classe

Neste novo exemplo, que é uma evolução dos anteriores iremos melhorar o código com alguns recursos de programação mais clean e criaremos uma nova classe que se chamará de empréstimo, essa classe tem a função de autorizar e realizar emprestimos entre clientes quando solicitado pelo programa principal. Como os clientes estarão cadastrados na Classe Conta, agregamos a Classe Empréstimo a ela para usarmos os recursos da Classe principal.

Programa BancoQuarta

package bancoquarta;public class BancoQuarta { public static void main(String[] args) { Conta c[] = new Conta[1000]; //Conta(tipoConta, nome, cpf, agencia, salario) c[0] = new Conta("CC", "Sandro", 123456789, "Maraponga", 1345.67f); c[1] = new Conta("CC", "UniAteneu", 111111111, "Messejana", 1000.65f); c[2] = new Conta("CP", "Redes", 222222222, "Lagoa", 10000f); c[3] = new Conta("CC", "ADS", 333333333, "Aerolândia", 10674.33f); c[4] = new Conta("CC", "POO", 444444444, "Narnia", 30000f); Emprestimo e1 = new Emprestimo(); c[1].setEmprestimo(1000); e1.pedirEmprestimo(c[0],c[1]); c[0].depositar(10000f, "CC"); e1.pedirEmprestimo(c[0],c[1]); } }

A interface Cadastro permanece a mesma

package bancoquarta;public interface Cadastro { public abstract void abrirConta(int num, String tc); public abstract void fecharConta(int num, String tc); public abstract void sacar(float s, String tc); public abstract void depositar(float d, String tc); public abstract void usarChequeEspecial(); public abstract void atualizarSalario(float s); public abstract void print();}

A Classe Conta adicionamos atributos e métodos

package bancoquarta;//*******A MINHA CLASSE IMPLEMENTA UMA INTERFACE*************************public class Conta implements Cadastro { //*****************ATRIBUTOS******************************************** private String agencia, tipoConta, nome; private float saldoCC, saldoCP, saldoCH, salario; private int cpf, estrelas; private boolean statusCC, statusCP; private float emprestimo; //*****************CONSTRUTOR******************************************** //Conta(tipoConta, nome, cpf, agencia, salario) public Conta(String tc, String n, int c, String a, float s){ this.tipoConta = tc; this.nome = n; this.cpf = c; this.agencia = a; this.statusCC = false; this.statusCP = false; setSalario(s); if(this.tipoConta == "CC"){ this.saldoCC = 0; this.statusCC = true; setEstrelas(s); } else { this.saldoCP = 50; this.statusCP = true; } System.out.println("Conta " + this.tipoConta + " aberta!"); print(); } //***************MÉTODOS ESPECIAIS**************************************** protected void setEmprestimo(float e){ this.emprestimo = e; } protected float getEmprestimo(){ return emprestimo; } private void setEstrelas(float s){ if(s<=1500.00f){ this.estrelas = 1; } else if (s<=3000.00f){ this.estrelas = 2; } else if (s<=7000.00f){ this.estrelas = 3; } else if (s<=12000.00f){ this.estrelas = 4; } else{ this.estrelas = 5; } } private int getEstrelas(){ return estrelas; } protected void setSalario(float s){ this.salario = s; } protected float getSalario(){ return salario; } private String getAgencia() { return agencia; }
private void setAgencia(String agencia) { this.agencia = agencia; }
private String getNome() { return nome; }
private void setNome(String nome) { this.nome = nome; }
private int getCpf() { return cpf; }
private void setCpf(int cpf) { this.cpf = cpf; }
protected float getSaldoCC() { return saldoCC; }
protected void setSaldoCC(float saldoCC) { this.saldoCC = saldoCC; }
private float getSaldoCP() { return saldoCP; }
private void setSaldoCP(float saldoCP) { this.saldoCP = saldoCP; }
private float getSaldoCH() { return saldoCH; }
private void setSaldoCH(float saldoCH) { this.saldoCH = saldoCH; }
private String getTipoConta() { return tipoConta; }
private void setTipoConta(String tipoConta) { this.tipoConta = tipoConta; }
private boolean getStatusCC() { return statusCC; }
private void setStatusCC(boolean statusCC) { this.statusCC = statusCC; }
private boolean getStatusCP() { return statusCP; }
private void setStatusCP(boolean statusCP) { this.statusCP = statusCP; } //*********************MÉTODOS******************************************** //abrirConta(CPF, tipoConta) @Override public void abrirConta(int num, String tc){ if (this.getCpf() == num){ if(tc == "CC"){ if(this.getStatusCC()){ System.out.println("Este cliente já possui conta corrente"); } else{ if (this.getSaldoCP()<0){ System.out.println("Cliente em débito com o banco!"); } else{ this.setStatusCC(true); System.out.println("Conta corrente aberta"); } } } else if(tc == "CP"){ if(this.getStatusCP()){ System.out.println("Este cliente já possui conta poupança"); } else{ if (this.getSaldoCC()<0){ System.out.println("Cliente em débito com o banco!"); } else{ this.setStatusCP(true); System.out.println("Conta poupança aberta"); } } } } else System.out.println("CPF inválido!"); } //abrirConta(CPF, tipoConta) @Override public void fecharConta(int num, String tc){ if (this.getCpf() == num){ if(tc == "CC"){ if(this.getStatusCC()){ if (this.getSaldoCC()<0){ System.out.println("Cliente em débito com o banco na CC!"); System.out.println("Deposite " + (this.getSaldoCC()*(-1)) + " para fechar a conta!"); } else if (this.getSaldoCC()>0){ System.out.println("Saque o saldo antes de fechar a conta Corrente"); sacar(this.saldoCC, "CC"); } else{ this.setStatusCC(false); System.out.println("Conta corrente fechada"); } } else{ System.out.println("Cliente não possui conta corrente ativa!"); } } else if(tc == "CP"){ if(this.getStatusCP()){ if (this.getSaldoCP()<0){ System.out.println("Cliente em débito com o banco na CP!"); } else if (this.getSaldoCP()>0){ System.out.println("Saque o saldo antes de fechar a conta Poupança"); sacar(this.saldoCP, "CP"); } else{ this.setStatusCP(false); System.out.println("Conta poupança fechada"); } } else{ System.out.println("Cliente não possui conta poupança ativa!"); } } } else System.out.println("CPF inválido!"); } @Override public void sacar(float s, String tc){ System.out.println("O valor do saque solicitado foi: "+ s); if(tc == "CC"){ if(this.getStatusCC()){ if (this.getSaldoCC() >= s){ this.setSaldoCC(this.getSaldoCC()-s); System.out.println("Saque realizado, saldo atual da CC: "+ this.getSaldoCC()); } else{ System.out.println("Saldo insuficiente."); System.out.println("Saldo em conta CC: " + this.getSaldoCC()); if (this.getSaldoCH()>0){ System.out.println("Utilizando cheque especial;"); if(this.getSaldoCC() > -200){ this.setSaldoCC(this.getSaldoCC()-s); System.out.println("Saque realizado, saldo atual da CC: "+ this.getSaldoCC()); System.out.println("Você ainda possui " + (this.saldoCH + this.saldoCC) + " do CH."); } else System.out.println("Cheque especial estourado, saldo CC: " + this.getSaldoCC()); } else System.out.println("Ative seu cheque especial."); } } else{ System.out.println("Impossivel sacar, conta corrente desativada!"); } } else{ if(this.getStatusCP()){ if (this.getSaldoCP() >= s){ this.setSaldoCP(this.getSaldoCP()-s); System.out.println("Saque realizado, saldo atual da CP: "+ this.getSaldoCP()); } else{ System.out.println("Saldo insuficiente."); System.out.println("Saldo em conta CP: " + this.getSaldoCP()); } } else{ System.out.println("Impossivel sacar, conta poupança desativada!"); } } } @Override public void depositar(float d, String tc){ if(tc == "CC"){ if(this.getStatusCC()){ this.setSaldoCC(this.getSaldoCC()+d); System.out.println("Deposito realizado, saldo atual da CC: "+ this.getSaldoCC()); } else{ System.out.println("Impossivel depositar, conta corrente desativada!"); } } else{ if(this.getStatusCP()){ this.setSaldoCP(this.getSaldoCP()+d); System.out.println("Deposito realizado, saldo atual da CP: "+ this.getSaldoCP()); } else{ System.out.println("Impossivel depositar, conta poupança desativada!"); } } } @Override public void atualizarSalario(float s){ if ("CC".equals(getTipoConta())){ this.salario = s; setEstrelas(s); } else{ this.salario = s; } } @Override public void print(){ System.out.println("Saldo: " + this.getSaldoCC()); System.out.println("Poupança: " + this.getSaldoCP()); System.out.println("Nome: " + this.getNome()); System.out.println("CPF: " + this.getCpf()); System.out.println("Agencia: " + this.getAgencia()); System.out.println("Salário atual: " + this.getSalario()); System.out.println("Cliente " + this.getEstrelas() + " estrelas!"); System.out.println("Conta Corrente ativada?: " + this.getStatusCC()); System.out.println("Conta Poupança ativada?: " + this.getStatusCP()); System.out.println("*******************************************************************"); }
@Override public void usarChequeEspecial() { if(this.getStatusCC()){ this.setSaldoCH(200f); System.out.println("Cliente usando cheque especial na CC: "+ this.getSaldoCH()); } } public void emprestimo(float e){ //Procurar cliente com saldo x = e/0.30 //Saldo[] > x? //Quem tiver saldo maior ou igual habilitado //Quem tem mais estrelas aprovado //Quem for mais antigo }
}

Criamos uma nova Classe Empréstimo e agregamos a Classe Conta


package bancoquarta;public class Emprestimo { //Atributos private Conta credor; private Conta devedor; private boolean aprovado; private int parcelas; //Métodos Especiais public Conta getCredor(){ return credor; }
public void setCredor(Conta credor) { this.credor = credor; }
public Conta getDevedor() { return devedor; }
public void setDevedor(Conta devedor) { this.devedor = devedor; }
public boolean isAprovado() { return aprovado; }
public void setAprovado(boolean aprovado) { this.aprovado = aprovado; }
public int getParcelas() { return parcelas; }
public void setParcelas(int parcelas) { this.parcelas = parcelas; }
//Métodos public void pedirEmprestimo(Conta c, Conta d) { if (c.getSaldoCC()*0.30 > d.getEmprestimo()){ this.aprovado = true; System.out.println("Emprestimo aprovado!"); this.credor = c; this.devedor = d; float e = d.getEmprestimo(); float s = d.getSalario(); calcularParcelas(s, e); } else{ System.out.println("Credor não aprovado para emprestar."); System.out.println("========================================================"); this.aprovado = false; this.credor = null; this.devedor = null; } } public void calcularParcelas(float s, float e){ float p = s*0.30f; float n = e/p; System.out.println("Numero de parcelas: " + n); System.out.println("Valor das parcelas: " + p); emprestar(e); } public void emprestar(float e){ this.credor.setSaldoCC(this.credor.getSaldoCC()-e); System.out.println("Emprestimo efetuado de: " + e); System.out.println("Debitado da conta corrente, novo saldo: " + this.credor.getSaldoCC()); this.devedor.setSaldoCC(this.devedor.getSaldoCC()+e); System.out.println("Emprestimo creditado de: " + e); System.out.println("Creditado na conta corrente, novo saldo: " + this.devedor.getSaldoCC()); System.out.println("========================================================"); }}