Como e onde criar?

3 respostas
N

Boa noite. Pessoal estou apanhando um pouco com uma coisa que parece ser básica, vejam a classe ENDERECO, eu gostaria de saber de acordo com o diagrama em anexo, ONDE que eu posso fazer a leitura de teclado dos atributos para um obejto de ENDERECO. E como eu faço para jogar estes atributos dentro do arrayList array_agencia, já que será um atributo assim como o número da agencia(porem esta é da classe Agencia).

Estou tentando jogar dentro de um arrayList de agencias, acho que está errado, alguém poderia dar uma mão ?

Ou simplesmente dizer como fariam a implementação desta Classe juntamente das outras duas (Cliente e Agencia) ?

public class Agencia {

    //private Cliente[] cliente; //1 agencia contém n clientes (1 - 0...*)
    private int numero;
    Endereco endere = new Endereco();

    public Agencia(int numero){ //1 objeto Agencia tem 1 objeto Endereco ligado no minimo?
      this.numero = numero;
      //Aqui que terei que ter o ENDERECO ?
    }

    public Agencia(){
     
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }
import java.util.ArrayList;

public class Banco {

	private String nome;
        private Endereco endere;
        ArrayList array_agencia = new ArrayList();

        public Banco()
        {
            this.nome = "";
//            this.agencia = null;
        }

        public Banco(String nome)
        {
            this.nome = nome;
        }

      	public void criarAgencia() {
            int nroAgencia = Integer.parseInt(Leitura.getTexto("Informe o NUMERO da AGENCIA: "));
            //ATRIBUTOS DE ENDEREÇO
            String rua = Leitura.getTexto("Informe a RUA: ");
            String bairro = "";
            String cidade = "";
            String estado = "";

            array_agencia.add(new Agencia(nroAgencia));
            array_agencia.add(new Endereco(rua,bairro,cidade,estado));//[b]AQUI ACHO QUE ESTÁ ERRADO ![/b]

        //String rua,int numero,String bairro,String complemento,String cidade,String estado
        }

	public void consultarAgencia() {
             for (int i = 0; i < array_agencia.size();i++){
                 Agencia obj = (Agencia) array_agencia.get(i);
                 System.out.println("Nro da Agencia: "+obj.getNumero());
                 
                 System.out.println("RUA: "+endere.getRua());
                 /*System.out.println("BAIRRO: "+endere.getBairro());
                 System.out.println("CIDADE: "+endere.getCidade());
                 System.out.println("ESTADO: "+endere.getEstado());*/
             }
	}

	public void excluirAgencia() {
            int numAgencia = 0;

            numAgencia = Integer.parseInt(Leitura.getTexto("Informe o numero da agencia para excluir."));

            for (int i = 0; i < array_agencia.size();i++){
                 Agencia obj = (Agencia) array_agencia.get(i);

                 if (obj.getNumero() == numAgencia){
                     array_agencia.remove(i);
                 }
            }
	}

	public void alteraragencia() {
            String nomeAgencia = "";

            consultarAgencia();
            System.out.println();

            nomeAgencia = Leitura.getTexto("Informe o nome da agencia");
	}

    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

}

3 Respostas

j0nny

Cara, por padrão, suas classes de negócio, como é o caso de endereço, não cuidam da parte de ler dados do teclado, imprimir na tela, mandar uma mensagem ao console, etc.
Isso é de cuidado da sua classe de apresentação.

N

Tudo bem, mas em que momento eu cadastro o endereço ? Não tem que estar associado ao array de agencias ?Não são teoricamente atributos de agencia também ?

renanedpedroso

Neste caso, todas as classes que você demonstrou no diagrama, não devem realizar qualquer tipo de interação com o usuário ou ainda acesso ao Banco de Dados, pois são classes de negócio (como disse o j0nny).

Para isso você deve programar de forma separada, delegando tarefas para classes distintas.

Por exemplo.

Uma classe ‘Pessoa’ contém as informações sobre a pessoa (código e nome).

Uma classe ‘PessoaDAO’ faz as operações de CRUD no Banco de Dados.

Uma classe ‘JanelaCadastroPessoa’ faz a inserção dos dados via interface gráfica com o usuário.

E por final é possível criar uma classe ‘ControladorPessoa’ que fará o controle, das operações que a classe ‘JanelaCadastroPessoa’ irá fazer, por exemplo.

Se você programar dessa forma, seu código ficará mais legível e fácil de se dar manutenção, sem falar em outros muitos benefícios.

Espero ter ajudado.

Abraço!

Criado 20 de março de 2010
Ultima resposta 20 de mar. de 2010
Respostas 3
Participantes 3