Arrays e Listas II

Prezados Colegas,

Através da ajuda de vocês, consegui resolver o problema do vetor, agora, se vocês puderem gostaria de lhes pedir mais esse auxílio:

Tenho que condificar os mesmos métodos só que usando listas:

Os métodos: Saldo_Total e Num_Contas, eles estão dentro da classe BancoL.

Abaixo segue os códigos, agradeço muito.

Tenho uma classe chamada Listadecontas:
class Listadecontas
{
private ContaL contas;
private Listadecontas prox;

void inserir (ContaL c)
{
if (this.contas == null)
{
this.contas = c;
prox = new Listadecontas();
}
else
prox.inserir©;
}

void retirar (ContaL c)
{
if (contas != null)
{
if (contas == c)
{
this.contas = prox.contas;
this.prox = prox.prox;
}
else
prox.retirar©;
}
}

ContaL procurar (String num)
{
if (contas == null)
return null;
else
{
if (contas.numero().equals(num))
return contas;
else
return prox.procurar(num);
}
}

}

Outra chamada ContaL:
public class ContaL
{
private String numero;
private double saldo=0.0;
private String operacoes="";

public void credito(double valor)
{
this.saldo = this.saldo + valor;
}

public void debito(double valor)
{
this.saldo= this.saldo - valor;
}

public String numero()
{
return this.numero;
}

public double saldo()
{
return this.saldo;
}

public void inclui_operacao(String op){
operacoes+=op;
}

public String extrato(){
return this.operacoes;
}

public ContaL(String n)
{
this.numero=n;
this.saldo=0;
this.operacoes+="========================================\nE X T R A T O D A C O N T A - Nº: “+numero()+”\n========================================\nOperação-----------------------------------------------Valor";
}

}

E a classe Banco L que contém os métodos a serem implementados:
import javax.swing.*;

class BancoL implements QqBanco{

private Listadecontas contasm = new Listadecontas();
private double taxa_juros=0;

//cadastra conta
void cadastro(ContaL c)
{
ContaL aux=contasm.procurar(c.numero());
if (aux==null)
contasm.inserir©;
else
JOptionPane.showMessageDialog(null,“Já existe conta com esse número!”);
}

//excluir conta
void excluir(String num)
{
ContaL c;
c=contasm.procurar(num);

// ContaL aux=contasm.procurar(c.numero());
// ContaL ultima;
if (c==null) {
JOptionPane.showMessageDialog(null,“Conta inexistente!”); }
else {
// ultima=contasm;
// if (aux==ultima) {
contasm.retirar©;
JOptionPane.showMessageDialog(null,“Conta excluída com sucesso!”);
}
//// else {
// aux=ultima;}
// indice–;

// }
}

//procura conta
ContaL procurar(String num) {
ContaL c;
c=contasm.procurar(num);
if (c==null)
return null;
else
return c;
}

//saque na conta
void saque(String num, double val) {
ContaL c;
c=contasm.procurar(num);
if (c!=null) {

if (c.saldo()>=val)
{
c.debito(val);
c.inclui_operacao("\nDebito…"+val);
if (c instanceof ImpostoL)
c.inclui_operacao("\nDebito de Imposto…"+ (val*0.01));

}

else JOptionPane.showMessageDialog(null,“Conta não tem saldo suficiente!”);
}
else JOptionPane.showMessageDialog(null,“Conta inexistente!”);
}

//deposito na conta
void deposito(String num, double val) {
ContaL c;
c=contasm.procurar(num);
if (c!=null)
{
c.credito(val); c.inclui_operacao("\nCredito…"+val);
}
else JOptionPane.showMessageDialog(null,“Conta inexistente!”);
}

//saldo da conta
void saldo(String num) {
ContaL c;
c=contasm.procurar(num);
if (c!=null)
JOptionPane.showMessageDialog(null,"=========== S A L D O ==========="+
"\nNúmero da Conta…: "+c.numero()+
"\nSaldo da Conta…: "+c.saldo()+
“\n================================”);
else JOptionPane.showMessageDialog(null,“Conta inexistente!”);
}

//transferencia
void transfere(String origem, String destino, double val) {
ContaL cOrig, cDest;
boolean erro=false;

cOrig=contasm.procurar(origem);
if (cOrig==null) {
JOptionPane.showMessageDialog(null,“Conta de origem inexistente!”);
erro=true;
}
cDest=contasm.procurar(destino);
if (cDest==null) {
JOptionPane.showMessageDialog(null,“Conta de destino inexistente!”);
erro=true;
}
if(erro==false){
if (cOrig.saldo() >= val){
cOrig.debito(val);
cDest.credito(val);
cOrig.inclui_operacao("\nDebito de transferencia para Conta Nº “+cDest.numero()+”…"+val );
cDest.inclui_operacao("\nCredito de transferencia da Conta Nº “+cOrig.numero()+”…"+val );
}
else
JOptionPane.showMessageDialog(null,“Conta de origem não tem saldo suficiente!”);

}

}

//rende juros
void rende_juros(String num) {
ContaL c;
c=contasm.procurar(num);
if (c != null) {
if (c instanceof PoupancaL) {

c.inclui_operacao("\nJuros da Poupança…"+ (this.getJuros()));

((PoupancaL)c).rende_juros(this.getJuros());}
else JOptionPane.showMessageDialog(null,“Essa Conta nao é Poupança!”);
}
else JOptionPane.showMessageDialog(null,“Conta inexistente!”);
}

double getJuros() { return taxa_juros; }

void altera_juros(double juros) {
taxa_juros = juros;
}

//imprime extrato
public void imprime_extrato(String num)
{

ContaL c;
c=contasm.procurar(num);
String aux="";
if (c!=null){
aux=c.extrato();
aux+="\n\nSaldo atual…"+c.saldo()+"\n========================================";
JOptionPane.showMessageDialog(null,aux);
}
else
JOptionPane.showMessageDialog(null,“Conta inexistente”);
}

//calculo do saldo de todas as contas
public double Saldo_Total() { return }

// conta a quantidade de contas cadastradas
public int Num_Contas() { return }
}

Obs.: Esses dois últimos métodos terão que ser implementados.

Que mal lhe pergunte, pra que??? trabalho de facul? se for, eu não ajudo mais! hehehe…

Vc precisa usar a classe List ou implementar uma lista?

Prezado amigo,

Independente de para que seja, se coloquei é porque estou precisando de ajuda, assim como em muitas vezes posso também ajudar, ois também sou programador. Tenho certeza de que esse forum é usado por pessoas adultas e que sabem o que quer é por isso que eu participo dele.

Obrigado por sua contribuição, se alguém poder me ajudar eu agradeço.

Francisco Gerson (creipi)

[quote=“creipi”]Prezado amigo,

Independente de para que seja, se coloquei é porque estou precisando de ajuda, assim como em muitas vezes posso também ajudar, ois também sou programador. Tenho certeza de que esse forum é usado por pessoas adultas e que sabem o que quer é por isso que eu participo dele.

Obrigado por sua contribuição, se alguém poder me ajudar eu agradeço.

Francisco Gerson (creipi)[/quote]

calma…

se vc não percebeu, eu estava brincando…

se vc quer mesmo ajuda, responda à minha pergunda:

vc precisa imprementar a Lista, tipo uma classe de lista encadeada etc, ou vc pode usar uma coleção da API???

No pacote java.util tem AbstractList, AbstractSequentialList, ArrayList e LinkedList… além das demais coleções (Vector, Array, Hashtable, etc.) por isso eu perguntei se era pra faculdade… se for para uma aplicação comercial, vc vai ter q analisar como q é o acesso à esta lista. Como ela é consultada, se tem q ser ordenada, etc.

Não me leve a mal…

Neto

Amigo Neto,

Desculpa pela minha precipitação, infelizmente ainda não temos a possibilidade de analizar à distância a intensão das pessoas. Se não fosse por você eu não tinha resolvido o problema do vetor.

O programa é sim para faculdade (Especialização em Análise de Sistemas), tive lendo alguma coisa sobre (Vector, Array, Hashtable, etc.), mas não consegui resolver o problema.

Se puder contar com o seu apoio mais uma vez obrigado, se não, só pelo fato de aceitar minhas desculpas é o suficiente pra mim.

Francisco Gerson (creipi)

blz… dá nada…

agora analisei o teu código direito e vi que vc tem uma lista com contiguidade encadeada implementada… só lembro o nome pq eu tb tô vendo isso na faculdade :lol: , só que em C. como eu não consegui me achar no teu código dei peguei as tuas classes e implementei o seguinte:

class Listadecontas  { 
	private ContaL contas; 
	Listadecontas prox; 

	void inserir (ContaL c) { 
		if (this.contas == null) { 
			this.contas = c; 
			prox = new Listadecontas(); 
		} else 
			prox.inserir(c); 
	} 

	void retirar (ContaL c) { 
		if (contas != null) { 
			if (contas == c) { 
				this.contas = prox.contas; 
				this.prox = prox.prox; 
			} else 
				prox.retirar(c); 
		} 
	} 

	ContaL procurar (String num) { 
		if (contas == null) 
			return null; 
		else { 
			if (contas.numero().equals(num)) 
				return contas; 
			else 
				return prox.procurar(num); 
		} 
	} 
} 


class ContaL { 
	private String numero; 
	private double saldo=0.0; 
	private String operacoes=""; 

	public void credito(double valor) { 
		this.saldo = this.saldo + valor; 
	} 

	public void debito(double valor) { 
		this.saldo= this.saldo - valor; 
	} 

	public String numero() { 
		return this.numero; 
	} 

	public double saldo() { 
		return this.saldo; 
	} 

	public void inclui_operacao(String op){ 
		operacoes+=op; 
	} 

	public String extrato(){ 
		return this.operacoes; 
	} 

	public ContaL(String n) { 
		this.numero=n; 
		this.saldo=0; 
		this.operacoes+="========================================\nE X T R A T O D A C O N T A - Nº: 	"+numero()+"\n========================================\nOperação-----------------------------------------------Valor"; 
	} 
} 

public class TestaListaContas {

	int Num_Contas(Listadecontas lContas) { 
		if (lContas == null) 
			return 0; 
		else 
			return(Num_Contas(lContas.prox)+1);
		
	}
		
	public TestaListaContas() {
		ContaL c1 = new ContaL("1");
		ContaL c2 = new ContaL("2");
		ContaL c3 = new ContaL("3");
		ContaL c4 = new ContaL("4");
		ContaL c5 = new ContaL("5");
		
		Listadecontas listaContas = new Listadecontas();
		listaContas.inserir(c1);
		listaContas.inserir(c2);
		listaContas.inserir(c3);
		listaContas.inserir(c4);
		listaContas.inserir(c5);
		
		System.out.println(Num_Contas(listaContas)-1);
	}
	
	public static void main(String args[]) {
		new TestaListaContas();
	}
}

Pra ver rodando é só salvar td em um arquivo chamado TestaListaContas.java, compilar e executar… veja que eu tirei o modificador de acesso ao campo prox da lista pra poder fazer o método Num_Contas(Listadecontas lContas) recursivo…

pra fazer o de saldo total, é por aí tb…

ok? falow…