`` //public abstract class Conta { public abstract class Conta implements Comparable {// este formato significa que Conta pode ser classificada // private double saldo; protected double saldo; //private int numero; protected int numero; private String nome;
public double getSaldo() { return this.saldo; }
public void setSaldo(double saldo) { this.saldo = saldo; } public String toString() { return "esse objeto é uma conta com saldo R$ " + this.nome + " " + this.saldo; }
public int getNumero() { return this.numero; } public int setNumero(int numero) { return this.numero = numero; }
public String getNome() { return this.nome; } public String setNome(String nome) { return this.nome = nome; }
/* realiza um saque na conta dado o valor passado @param valor_saque valor a ser sacado @return @throws Exception Excption caso saldo seja insuficiente / public boolean saca(double valor_saque) throws Exception { if (this.saldo < valor_saque) { //return false; throw new SaldoInsuficienteException(saldo); } else { this.saldo = this.saldo - valor_saque; return true; } }
// public void deposita(double valor_dep) {//use este formato quando a classe filha de RuntimeException public void deposita(double valor_dep) throws ValorInvalidoException {//use este formato quando a classe filha de Exception// if (valor_dep > 0) {// neste formato utiliza a exeption do java// this.saldo += valor_dep; // } // else { // throw new IllegalArgumentException("Você tentou depositar" + " um valor negativo"); // } if (valor_dep > 0) {// neste formato utiliza a exeption pelo programador this.saldo += valor_dep; } else { throw new ValorInvalidoException(valor_dep); } }
/* atualiza nome e numero de conta / public void idConta(int numero, String nome) { this.numero = numero; this.nome = nome;
}
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime result + ((nome == null) ? 0 : nome.hashCode()); result = prime result + numero; return result; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Conta other = (Conta) obj; if (nome == null) { if (other.nome != null) return false; } else if (!nome.equals(other.nome)) return false; if (numero != other.numero) return false; return true; }
public int compareTo(Conta outra) { if(this.saldo < outra.saldo) { return -1; } if(this.saldo > outra.saldo) { return 1; } return 0; }
//public void atualiza(double taxa) { // this.saldo += (this.saldo * taxa); // }; abstract public void atualiza(double taxa);
} -- public class ContaCorrente extends Conta implements Tributavel {
public ContaCorrente(int numero, String nome) { this.setNumero(numero); this.setNome(nome); return; }
public void atualiza(double taxa) { this.saldo += this.saldo taxa 2; }
@Override public double calculaTributos() { return this.getSaldo() * 0.01; }
public int compareTo(Conta outra) { if(this.saldo < outra.saldo) { return -1; } if(this.saldo > outra.saldo) { return 1; } return 0; } }
-- public class ContaPoupanca extends Conta {
public ContaPoupanca(int numero, String nome) { this.setNumero(numero); this.setNome(nome); return; }
public void atualiza(double taxa) { this.saldo += this.saldo taxa 3; }
public void deposita(double valor) throws ValorInvalidoException { if (valor > 0) { this.saldo += valor - 0.10; } else { throw new ValorInvalidoException("Depósito de valor negativo"); } }
} -- public class TesteOrdenacao2 { public static void main(String[] args) { List contas = new ArrayList();//somente aceita dados referente a contas
ContaCorrente cc1 = new ContaCorrente(1, "Leonardo"); ContaPoupanca cp1 = new ContaPoupanca(2, "Leonardo");
try { cc1.deposita(2000); } catch (ValorInvalidoException e) { System.out.println(e.getMessage()); //utilizando mensagem ca classe ValorInvalidoException }
try { cp1.deposita(3000); } catch (ValorInvalidoException e) { System.out.println(e.getMessage()); //utilizando mensagem ca classe ValorInvalidoException }
ContaCorrente cc2 = new ContaCorrente(3, "Eduardo"); ContaPoupanca cp2 = new ContaPoupanca(4, "Eduardo");
try { cc2.deposita(1500); } catch (ValorInvalidoException e) { System.out.println(e.getMessage()); //utilizando mensagem ca classe ValorInvalidoException }
try { cp2.deposita(2500); } catch (ValorInvalidoException e) { System.out.println(e.getMessage()); //utilizando mensagem ca classe ValorInvalidoException }
ContaCorrente cc3 = new ContaCorrente(5, "João"); ContaPoupanca cp3 = new ContaPoupanca(3, "João"); try { cc3.deposita(50); } catch (ValorInvalidoException e) { System.out.println(e.getMessage()); //utilizando mensagem ca classe ValorInvalidoException }
try { cp3.deposita(150); } catch (ValorInvalidoException e) { System.out.println(e.getMessage()); //utilizando mensagem ca classe ValorInvalidoException }
contas.add(cc1); contas.add(cc2); contas.add(cc3);
contas.add(cp1); contas.add(cp2); contas.add(cp3);
Collections.sort(contas);
for (Conta c : contas) { System.out.println(c); }
}
}
``` Construí uma classe que atualiza e lista ContaCorrente e Conta Poupança esse objeto é uma conta com saldo R$ João 50.0 esse objeto é uma conta com saldo R$ João 149.9 esse objeto é uma conta com saldo R$ Eduardo 1500.0 esse objeto é uma conta com saldo R$ Leonardo 2000.0 esse objeto é uma conta com saldo R$ Eduardo 2499.9 esse objeto é uma conta com saldo R$ Leonardo 2999.9
Como eu faço pára incluir o tipo de conta, por exemplo esse objeto é uma conta corrente com saldo R$ João 50.0 esse objeto é uma conta poupança com saldo R$ João 149.9