Ajuda - Adicionar e Exibir dados;

Pessoal, estou fazendo um projeto de transportadora conforme o diagrama:

Construi aas classes, nao sei se estao corretas, mas agora estou com dificuldade para acrescentar clientes na arraylist e depois exibilos.

classes:

package Model;

public abstract class Principal {
	private String id;
	private String nome;
	private String cnpj;
	private String cadastro;
	
	public Principal (String id, String nome, String cnpj, String cadastro) {
		this.id = id;
		this.nome = nome;
		this.cnpj = cnpj;
		this.cadastro = cadastro;		
	} 
	
	

	public String teste() {
		String dados;
		dados = id+"\n"+nome+"\n"+cnpj+"\n"+cadastro;
		return dados;
		
	}

}





package Model;

public class Clientes extends Principal {
	private String segmento;
	private String inscricaoEstadual;
	private String inscricaoMunicipal;
	private String nomeFantasia;
	private String juntaComenrcial;
	private String temFilial;
	private String estaAtivo;
	
	private Endereco papel;
	private Contato cont;
	private ReferenciaBancaria rb;
	private ReferenciaComercial rc;
	private Participacao pt;
	
	public Clientes (String id, String nome, String cnpj, String cadastro, String segmento, String inscricaoEstadual, String inscricaoMunicipal, String nomeFantasia, String juntaComercial, String temFilial, String estaAtivo, Endereco papel, Contato cont, ReferenciaBancaria rb, ReferenciaComercial rc, Participacao pt) {
		super(id, nomeFantasia, cnpj, cadastro);
		this.segmento = segmento;
		this.inscricaoEstadual = inscricaoEstadual;
		this.inscricaoMunicipal = inscricaoMunicipal;
		this.nomeFantasia = nomeFantasia;
		this.juntaComenrcial = juntaComercial;
		this.temFilial = temFilial;
		this.estaAtivo = estaAtivo;
		this.papel = papel;
		this.cont = cont;
		this.rb = rb;
		this.rc = rc;
		this.pt = pt;

	}	
	public String teste() {
		String dados;
		dados = super.teste()+" \n "+segmento+" \n "+inscricaoEstadual+" \n "+inscricaoMunicipal+" \n "+nomeFantasia+" \n "+juntaComenrcial+" \n "+temFilial+" \n "+estaAtivo+" \n "+papel.teste()+" \n "+cont.teste()+" \n "+rb.teste()+" \n "+rc.teste()+" \n "+pt.teste();
		return dados;
		
	}
	
}



package Model;

public class ContaBancaria {
	private String nomeBanco;
	private String agencia;
	private String numconta;
	private String correntista;
	
	public ContaBancaria (String nomeBanco, String agencia, String numconta, String correntista) {
		this.nomeBanco = nomeBanco;
		this.agencia = agencia;
		this.numconta = numconta;
		this.correntista = correntista;
		
	}
	public String teste() {
		String dados;
		dados = nomeBanco+" "+agencia+" "+numconta+" "+correntista;
		return dados;
	}
}



package Model;

public class Contato {
	private String meioDeContato;
	private String setor;
	private String descricao;
	
	public Contato (String meioDeContato, String setor, String descricao) {
		this.meioDeContato = meioDeContato;
		this.setor = setor;
		this.descricao = descricao;
	}
		
	public String teste() {
		String dados;
		dados = meioDeContato+" "+setor+" "+descricao;
		return dados;
		
	}
}



package Model;

public class Endereco {
	private String endereco;
	private String uf;
	private String cidade;
	private String bairro;
	
	
	public Endereco (String endereco, String uf, String cidade, String bairro ) {
		this.endereco = endereco;
		this.uf = uf;
		this.cidade = cidade;
		this.bairro = bairro;
		
		
	}
	
	public String teste() {
		String dados;
		dados = endereco+" \n "+uf+" \n "+cidade+" \n "+bairro;
		return dados;
	}

}



package Model;

public class Participacao {
	private String participacao;

	
	public Participacao (String participacao) {
		this.participacao = participacao;
	}
	
	public String teste() {
		String dados;
		dados = participacao;
		return participacao;
	}
}



package Model;

public class ReferenciaBancaria extends ContaBancaria {
	private String telefone;
	
	public ReferenciaBancaria (String nomeBanco, String agencia, String numconta, String correntista, String telefone) {
		super(nomeBanco, agencia, numconta, correntista);
		this.telefone = telefone;
}
	public String teste() {
		String dados;
		dados = super.teste()+" "+telefone;
		return dados;
	}

}



package Model;

public class ReferenciaComercial {
	private String email;
	
	public ReferenciaComercial(String email) {
		this.email = email;
	}
	
	public String teste() {
		String dados;
		dados = email;
		return dados;
	}

}



package Model;

public class Transportadora extends Principal{
	private String codigo;
	
	public Transportadora (String id, String nome, String cnpj, String cadastro, String codigo) {
		super(id, nome, cnpj, cadastro);
		this.codigo = codigo;
		
	}
	
		public String teste() {
		String dados;
		dados = super.teste()+" "+codigo;
		return dados;
		
	}

}


//agora fiz a classe teste no View que e para add clientes e depois exibilos, mas aki estou com problremas


package View;
import Model.*;
import java.util.ArrayList;
import javax.swing.*;
public class Teste {
	
	
	public static void main(String[] args) {
		ArrayList<Clientes> lista = new ArrayList<Clientes>(); 
		int i = 0;
		lista.add( new Clientes(""+(i+1),"Empresa X"+i,"02546-54","525","Rural","025874","654415","Batatas do Vale"+(1+i),"Junta Comercail"+(1+i),"Nao tem filial","ativo", new Endereco("Rua"+(1+i), "SC"+(1+i), "BNU"+(1+i), "IT"+(1+i)), new Contato("Telefone", "Gerencia", "Produtos Alimenticios"), new ReferenciaBancaria("Itau", "0102", "02354-9", "Sim", "3339-8777"), new ReferenciaComercial("contato@batatasdovale.com.br"), new Participacao("Participa 50%")));
		
		System.out.println(lista);
	}

}

nao quero que ngm resolva pra mim, kero ajuda para entender o q fiz de errado e como posso resolver. Minha maior dificuldade eh a oop.

obrigado

O recomendado é que, para cada modelo, você crie um get e um set para cada atributo. Não é uma forma elegante definir todos os valores no objeto no construtor.
O Eclipse faz isso automaticamente para você. Na classe que você está, clique no menu Source > Generate Getters and Setters.
Ai você tira todos os parâmetros do construtor, que é uma prática feia e muito confusa de entender.
Quando for criar um objeto você faz o seguinte:

Cliente cliente = new Cliente();
cliente.setSegmento("Segmento 1");
...
// Definição de outras propriedades
...
lista.add(cliente);

Assim ficará muito mais fácil de ler o código e uma coisa muito mais manutenível :smiley:
Qualquer dúvida, há vários artigos sobre Orientação a Objetos aqui e na internet, ou também pode postar aqui :smiley:

Guri.

O amigo acima esta com toda a razão, seguir as boas praticas ajuda mto, pq elas sao boas… ahuuhas

cara, qual foi o resultado do seu teste?

Mais uma dikinha: Nomes de classes por convenção são no singular, sei q é confuso pq a convenção em bd, é o nome das tabelas no banco de dados.

mas é só vc pensar assim, em bd dizemos tabela de clienteS, em oo dizemos classe do tipo cliente.

abç!

esdmorais

opa, obrigado pela resposta!

Pra ser bem sincero com voce, foi assim que o professor explicou, mas eu nao conseguir entender bem desse jeito, e do jeito que eu fiz e mostrei ali em cima, foi com um cara que faz o curso comigo me explicou e entendi melhor. Mas como voce disse, o jeito que o professor passou e o jeito que vc falou, q eh o mesmo, eh o recomendado. Mas eu nao entendi.
Voce teria como fazer um exemplo pra mim? de qq classe?

JM4X

eu fiz uma nova classe q add cliente:

[code]
package Model;
import java.util.ArrayList;

public class AddClientes {
public AddClientes (){
ArrayList lista = new ArrayList();

for (int i = 0; i < 10; i++) {
lista.add( new Clientes("ID: "+(i+1),"","CNPJ: 02546-5"+(i+1),"Cadastro: "+(i+1),"Segmento: Rural"+(i+1),"Inscriçao Estadual: 025874"+(i+1),"Inscricao Municipal: 654415"+(i+1),"Empresa X"+(i+1),"Junta Comercial"+(1+i),"Filial:"+(i+1),"Ativo:"+(i+1), new Endereco("Rua: Rua  "+(1+i), "Estado: SC"+(1+i), "Cidade: Blumenau "+(1+i), "Bairro: Bairro "+(1+i)), new Contato("Telefone: 3330-012"+(i+1), "Setor: Gerencia "+(i+1), "Descricao: Produtos Alimenticios "+(i+1)), new ReferenciaBancaria("Banco: Itau", "Agencia: 010"+(i+1), "Conta: 02354-"+(i+1), "Telefone: 3233-987"+(i+1), "3339-877"+(i+1)), new ReferenciaComercial("E-Mail: contato@empresa"+(i+1)+".com.br"), new Participacao("Participaçao: 1"+(i+1)+"%")));
System.out.println();
System.out.println(lista.get(i).teste());
}

}
}[/code]

e na classe teste de antes so chamei o new AddClientes();

ate deu certo, mas nao eh isso que eu keria, ainda mais agora q soube q essa nao eh a melhor pratica…
vou tentar fazer aqui como o amigo acima comentou, e posto aqui depois!

vlww

Opa, tenho sim :smiley:
Essa é a classe de Cliente:


public class Cliente {
    private int codigo;
    private String nome;
    private String endereco;

    public Cliente() {}

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
}

Essa classe é uma de teste que fiz para adicionar o cliente na lista e imprimir os dados:

import java.util.ArrayList;
import java.util.List;

public class TesteCliente {
    public static void main(String[] args) {
        List<Cliente> clientes = new ArrayList<Cliente>();

        // Cria o objeto e define os seus atributos.
        Cliente c = new Cliente();
        c.setCodigo(1);
        c.setNome("Terry Balsamo");
        c.setEndereco("Rua das Camélias, 777");

        // Adiciona o cliente na lista de clientes.
        clientes.add(c);

        // Imprime os atributos do objeto cliente.
        System.out.println("Código: " + c.getCodigo());
        System.out.println("Nome: " + c.getNome());
        System.out.println("Endereço: " + c.getEndereco());
    }
}

Qualquer outra dúvida, é só perguntar :smiley:

esdmorais

blz, ate ai blz, agora qdo sao varias classes:
exemplo, tenho a classe cliente com nome, e codigo e id
ai tenho a classe endereco q tb tem nome, codigo, id e endereco, como ja tenho esses atributos nome, codigo e id na classe cliente, entao pego a classe endereco e dou um extends na classe cliente para eu poder herdar nome, codigo e id dela, certo? entao so declaro endereco na classe endereco. Ai tenho tb a classe contato que pede endereco do cliente q no caso esta na classe endereco e pede tb o nome, codigo e id do cliente q esta na classe cliente, mas que eu saiba somente uma classe pode herdar de uma outra classe, como entao conseguirei pegar os dados de duas classes (endereco e cliente) sendo que so posso dar extends de clientes ou do endereco? e depois como chama-los dpois no main para exibilos?

isso que me confundi muito!

obrigado

Cara, o jeito que você está tentando fazer isso não é bem usual.
A herança de classes é recomendável quando você tem dois objetos com coisas em comum e quer reutilizar o código. Exemplo: Existem dois tipos de pessoa, Pessoa Física e Pessoa Jurídica. O que pode ser feito:

  1. Criar uma classe Pessoa com os atributos em comum.
  2. Criar uma classe PessoaFisica, herdando da classe Pessoa e definindo atributos que somente a pessoa física possui.
  3. Criar uma classe PessoaJuridica, herdando da classe Pessoa e definindo atributos que somente a pessoa jurídica possui.

Se quiser, dê uma lida sobre herança de classe e suas utilizações. Há vários artigos ótimos para isso :smiley:

Agora, dê uma olhada no que seria o mais recomendável a você fazer:

Criar uma classe de Endereço:


public class Endereco {
    private String rua;
    private int numero;
    private String complemento;
    private String cidade;
    private String UF;
    private int CEP;

    public Endereco() {}

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getUF() {
        return UF;
    }

    public void setUF(String UF) {
        this.UF = UF;
    }

    public int getCEP() {
        return CEP;
    }

    public void setCEP(int CEP) {
        this.CEP = CEP;
    }
}

Criar uma classe de Cliente, onde haverá um atributo do tipo Endereco:


public class Cliente {
    private int codigo;
    private String nome;
    private Endereco endereco;

    public Cliente() {}

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }
}

Classe de teste:

import java.util.ArrayList;
import java.util.List;

public class TesteCliente {
    public static void main(String[] args) {
        List<Cliente> clientes = new ArrayList<Cliente>();

        // Endereço.
        Endereco e = new Endereco();
        e.setRua("Rua das Camélias");
        e.setNumero(777);
        e.setCidade("Indaiatuba");
        e.setUF("SP");

        // Cria o objeto e define os seus atributos.
        Cliente c = new Cliente();
        c.setCodigo(1);
        c.setNome("Terry Balsamo");
        // Aqui é só definir o objeto endereço no cliente.
        c.setEndereco(e);

        // Adiciona o cliente na lista de clientes.
        clientes.add(c);

        // Imprime os atributos do objeto cliente.
        System.out.println("Código: " + c.getCodigo());
        System.out.println("Nome: " + c.getNome());
        System.out.println("Endereço: " + c.getEndereco().getRua() + ", n° " + c.getEndereco().getNumero());
    }
}

Se quiser, pode me adicionar no MSN, por lá é melhor explicar rsrs
esdmorais@hotmail.com

Espero ter ajudado :smiley:

obrigado pelas respostas!

vlw

alguem mais pooderia me dar uma luz?

O que mais você precisa?