Fórum Collections Java - Interface List #598831
27/11/2018
0
Mas por exemplo na minha classe Principal, como que eu faco pra chamar esse metodo a partir da minha variavel de referencia que eh do tipo da Interface List.
import java.util.List;
public abstract class Conta {
private String id;
private double saldo;
private Cliente cliente;
private double limite;
public Conta(String id, Cliente cliente) {
this.id = id;
this.saldo = 0.0;
this.limite = 1000.0;
this.cliente = cliente;
}
public String getId() {
return this.id;
}
public double getSaldo() {
return this.saldo;
}
public double getLimite() {
return this.limite+this.saldo;
}
public void setSaldo(double valor) {
this.saldo+=valor;
}
public void exibirDadosDaConta(Conta conta) {
System.out.println("Conta: "+conta.getId());
System.out.println("Saldo: "+conta.getSaldo());
System.out.println("Limite: "+conta.getLimite());
conta.cliente.exibeDados(cliente);
}
public abstract boolean saca(double valor);
public abstract void deposita(double valor);
public abstract void transferePara(double valor, Conta c);
public boolean equals(Object obj) {
if(obj == null) {
throw new NullPointerException("Objeto passado nulo");
}if(!(obj instanceof Conta)) {
return false;
}else {
Conta conta = (Conta)obj;
return this.getId().equals(conta.getId());
}
}
public boolean existe(List<Conta> x, Conta y) {
if(x.contains(y)) {
System.out.println("Ja existe uma conta para o ID cadastrado");
return false;
}else {
x.add(y);
System.out.println("Conta adicionada ao sistema");
return true;
}
}
}import java.util.List;
public class ContaCorrente extends Conta{
public ContaCorrente(String id, Cliente cliente) {
super(id, cliente);
}
public boolean saca(double valor) {
if((getLimite()+getSaldo())>=valor){
setSaldo(getSaldo()-valor);
System.out.println("Saque realizado");
return true;
}else {
throw new SaldoInsuficienteException("Saldo Insuficiente para saque");
}
}
public void deposita(double valor) {
if(valor<0) {
throw new IllegalArgumentException("Deposite apenas valores maiores que 0");
}else {
setSaldo(getSaldo()+valor);
System.out.println("Deposito realizado");
}
}
public void transferePara(double valor, Conta c) {
if(c == null) {
throw new NullPointerException("Conta a receber o valor nao esta iniciada");
}else {
c.setSaldo(getSaldo()+valor);
this.setSaldo(getSaldo()-valor);
System.out.println("Transferencia realizada");
}
}
}
import java.util.List;
public class ContaPoupanca extends Conta{
public ContaPoupanca(String id, Cliente cliente) {
super(id, cliente);
}
public boolean saca(double valor) {
if((getLimite()+getSaldo())>=valor){
setSaldo(getSaldo()-valor);
System.out.println("Saque realizado");
return true;
}else {
throw new SaldoInsuficienteException("Saldo Insuficiente para saque");
}
}
public void deposita(double valor) {
if(valor<0) {
throw new IllegalArgumentException("Deposite apenas valores maiores que 0");
}else {
setSaldo(getSaldo()+valor);
System.out.println("Deposito realizado");
}
}
public void transferePara(double valor, Conta c) {
if(c == null) {
throw new NullPointerException("Conta a receber o valor nao esta iniciada");
}else {
c.setSaldo(getSaldo()+valor);
this.setSaldo(getSaldo()-valor);
System.out.println("Transferencia realizada");
}
}
}import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;
public class CaixaEletronicoMain {
public static void main(String[] args) {
Cliente cliente1 = new Cliente("143-260-527-59","Wendel");
Cliente cliente2 = new Cliente("896-727-637-00","Claudio");
List <Conta> contas = new ArrayList<Conta>();
Conta conta1 = new ContaCorrente("123-0", cliente1);
Conta conta2 = new ContaCorrente("456-0", cliente2);
}
}
Wendel Rios
Curtir tópico
+ 0Post mais votado
28/11/2018
Como assim o método existe() é do tipo List?
public static void main(String[] args) {
Cliente cliente1 = new Cliente("143-260-527-59","Wendel");
Cliente cliente2 = new Cliente("896-727-637-00","Claudio");
List<Conta> contas = new ArrayList<Conta>();
Conta conta1 = new ContaCorrente("123-0", cliente1);
conta1.existe(contas, conta1);
Conta conta2 = new ContaCorrente("456-0", cliente2);
conta2.existe(contas, conta2);
}Quer ver uma coisa bacana? No método existe(List, Conta), não precisa passar Conta como argumento, já que o método faz parte da classe. Use o this, que remete a instancia da classe que você criou.
Na classe abstrata:
if(x.contains(this)) {
System.out.println("Ja existe uma conta para o ID cadastrado");
return false;
}else {
x.add(this);
System.out.println("Conta adicionada ao sistema");
return true;
}
}
public static void main(String[] args) {
Cliente cliente1 = new Cliente("143-260-527-59","Wendel");
Cliente cliente2 = new Cliente("896-727-637-00","Claudio");
List<Conta> contas = new ArrayList<Conta>();
Conta conta1 = new ContaCorrente("123-0", cliente1);
conta1.existe(contas);
Conta conta2 = new ContaCorrente("456-0", cliente2);
conta2.existe(contas);
// testa se as contas já existem
conta1.existe(contas);
conta2.existe(contas);
}Marcio Souza
Gostei + 1
Mais Posts
28/11/2018
Wendel Rios
A respeito da assinatura do metodo Existe, eh pq eu queria adicionar os objetos da colecao a partir desse metodo, entende.
E uma duvida a respeito do uso de Generics, no momento q nos declaramos a nossa variavel de referencia, a boa pratica eh declararmos como a classe mais generica ou a mais especifica ?
Gostei + 0
28/11/2018
Wendel Rios
A respeito da assinatura do metodo Existe, eh pq eu queria adicionar os objetos da colecao a partir desse metodo, entende.<br />
E uma duvida a respeito do uso de Generics, no momento q nos declaramos a nossa variavel de referencia, a boa pratica eh declararmos como a classe mais generica ou a mais especifica ?
<br />
Ah sim, entendi oq vc quis dizer em relacao ao metodo, nao tinha entendido direito.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)