Resolvido - Associação de Classe

8 respostas
jorhudson

Boa noite, gostaria de tirar umas duvidas, como crio uma associação de classe ?

Sintaxe ??? :shock:

Estou tentando fazer uma associação e não sei como que faz … :?

8 Respostas

devvdevv.interior

isso me ajudou, creio que irá te ajudar tambem…

estevaodrdias

Me desculpe se estiver errado, mas você deve estar bem no começo, não é? Observe o exemplo abaixo com atenção:

public class A {
    int number;
}

public class B {
    int number;
}

public class Associa {

    public static void main(String[] args) {

        // Aqui faço a associação
        A a = new A();
        B b = new B();

        // Aqui acesso os dados
        a.number = 1;
        b.number = a.number;

        // Aqui imprimo os dados pra ter certeza que deu tudo certo
        System.out.println(a.number);
        System.out.println(b.number);
    }
}

Em outras linguagens como o PHP eu não preciso declarar a variável a como sendo do tipo A. Mas Java é uma linguagem fortemente tipada. Toda variável tem um tipo.

estevaodrdias

Entendo. Você se refere ao Hibernate? Pode ser mais específico?

Caio.Sergio

Verifique a classe Cliente

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package loja;

import java.util.*;

/**
 *
 * @author Caio
 */
public class Cliente {
    //Atributos do cliente
    private String nome; // Nome do cliente
    private String cpf; // CPF do cliente
    private int codigo; // código do cliente
    
    //Métodos
    
    //////////////////////
    ////construtor
    public Cliente(){
        nome = null; // Inicialização do atributo nome como null
        cpf = null; // Inicialização do atributo cpf como null
        codigo = 0; // Inicialização do atributo codigo como 0
    }
    
    ///////////////////////////////////////////
    ///////////get's e set's///////////////////
    
    //////////////////////
    //// set do atributo nome
    public void setNome(){
        Scanner leitura_do_teclado = new Scanner(System.in); // Objeto para leitura a partir do teclado
        this.nome = leitura_do_teclado.nextLine(); // Atribuição do Nome da pessoa a partir do teclado
    }
    
    //////////////////////
    //// set do atributo cpf
    public void setCpf(){
        Scanner leitura_do_teclado = new Scanner(System.in); // Objeto para leitura a partir do teclado
        this.cpf = leitura_do_teclado.nextLine(); // Atribuição do CPF da pessoa a partir do teclado
    }
    
    //////////////////////
    //// set do atributo codigo
    public void setCodigo(int codigo){
        this.codigo = codigo; // Atribuição do Código da pessoa
    }
    
    //////////////////////
    //// get do atributo nome
    public String getNome(){
        return this.nome; // retorno do atributo nome
    }
    
    //////////////////////
    //// get do atributo cpf
    public String getCpf(){
        return this.cpf; // retorno do atributo cpf
    }
    
    //////////////////////
    //// get do atributo codigo
    public int getCodigo(){
        return this.codigo; // retorno do atributo codigo
    }
}

e agora verifique a classe ListaDeClientes, onde armazena os clientes em um vetor do tipo: Cliente, fazendo a associação, assim cada elemento do vetor: lista_de_clientes é do tipo Cliente da classe Cliente.

Preste atencão na classe:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package loja;

import java.util.*;

/**
 *
 * @author Caio
 */
public class ListaDeClientes {
    //Atributos
    private Cliente[] lista_de_clientes; // Vetor onde cada elemento é do tipo da classe Cliente
    private int tamanho_da_lista;
    private int quantidade_da_lista;
    
    //Métodos
    
    public ListaDeClientes(){
        tamanho_da_lista = 0;
        quantidade_da_lista = 0;
    }
    
    public ListaDeClientes(int tamanho, int quantidade){
        this.tamanho_da_lista = tamanho;
        this.quantidade_da_lista = quantidade;
    }
    
    
    public void criarLista(){

        System.out.print("Defina o tamanho da lista: ");
        Scanner leitura_do_teclado = new Scanner(System.in);
        tamanho_da_lista = leitura_do_teclado.nextInt();
        lista_de_clientes = new Cliente[tamanho_da_lista];
        for(int x = 0; x < tamanho_da_lista; x++){
            lista_de_clientes[x] = new Cliente();
        }
        System.out.print("\n");
    }
    
    public boolean verificarLista(){
        if(quantidade_da_lista == tamanho_da_lista){
            return false;
        }else{
            return true;
        }
        
    }
    
    public void CadastrarCliente(){
        if(verificarLista() == true){
            System.out.print("Digite o Nome do cliente: ");
            lista_de_clientes[quantidade_da_lista].setNome();
            System.out.print("Digite o CPF do cliente: ");
            lista_de_clientes[quantidade_da_lista].setCpf();
            lista_de_clientes[quantidade_da_lista].setCodigo(quantidade_da_lista + 1);
            System.out.println("\nCliente " + lista_de_clientes[quantidade_da_lista].getNome() + " cadastrado com sucesso");
            quantidade_da_lista ++;
        }else{
            System.out.println("A lista de clientes está cheia");
        }
        
        
    }
    
    public void exibirClientes(){
        System.out.println("Exibindo cliente: \n");
        for(int x = 0; x < quantidade_da_lista; x++){
            System.out.print(x + 1);
            System.out.print(". Nome: ");
            System.out.println(lista_de_clientes[x].getNome());
            System.out.print("   CPF: ");
            System.out.println(lista_de_clientes[x].getCpf());
            System.out.print("   Codigo: ");
            System.out.println(lista_de_clientes[x].getCodigo());
            System.out.print("\n");
        }
    }
    
    public void exibirQuantidadeETamanho(){
        System.out.println("Tamanho da lista de clientes: " + tamanho_da_lista);
        System.out.println("Quantidade da lista de clientes: " + quantidade_da_lista);
    }
    
    public void removerCliente(){
        Scanner leitura_do_teclado = new Scanner(System.in);
        int cliente_escolhido;
        exibirClientes();
        System.out.print("Digite o número do cliente que deseja remover: ");
        cliente_escolhido = leitura_do_teclado.nextInt();
        if(cliente_escolhido > tamanho_da_lista){
            System.out.println("Cliente invalido");
        }else{
            if(cliente_escolhido < quantidade_da_lista){
                for(int x = cliente_escolhido; cliente_escolhido < quantidade_da_lista; x++){
                    lista_de_clientes[x - 1] = lista_de_clientes[x];
                    quantidade_da_lista--;
                }
            }else{
               quantidade_da_lista--;
            
            }
        }
        
        
    }
    
    
      

}

Vlw!!!

jorhudson

estevaoordias
Bom dia
Como vc mesmo disse, estou no começo, estou começando aprender rsrs :lol:,
Mas o pouco que eu sei, isso não parece ser associação de classe …

Isso serio um obj apontando para outro, isso ocorrendo , os dois objtos teria o mesmo valor…
Tudo que for mudado no obj a.number, será refletido no b.number…

tiago.sinatra
Eu entendi o codigo fonte, para eu acessar a outra classe, como seria dentro da main ?
Eu criaria um Objnovo Paciente? acho q isso está errado rsrs :oops:
Ou acessaria Por Exemplo:

Entrada.Paciente.Prontuario ??? Obs: Como o atributo está em private, irei ter que acessar por get e set ? Correto?

jorhudson

Acabei de fazer esse codigo, para ver se eu entendi …
3 Classes = Cadastro , Localização e Exec…

public class Cadastro {
	private String nome;
	private int cpf;
	public Localização local; // Associação da classe Localização.
	
                 //Gets e Sets ( Metodos De Acesso )
	String getnome2(){
		return this.nome;
	}
	void setnome2(String nome){
		this.nome=nome;
		
	}
	void setcpf(int cpf){
		this.cpf=cpf;
	}
	int getcpf(){
		return this.cpf;
	}

}
public class Localização {
	private String lugar;
	
	String getlugar(){
		return this.lugar;
	}
	void setlugar(String lugar){
		this.lugar=lugar;
	}
	}
import java.util.Scanner;
public class Exec {
	public static void main(String[] args) {
	Scanner entrada = new Scanner(System.in);
	Cadastro cad = new Cadastro();
	System.out.println("**Hospital**");
	System.out.println("Nome Paciente : ");
	String paciente=entrada.nextLine();
	cad.setnome2(paciente);
	System.out.println("Digite CPF : ");
	int cpf = entrada.nextInt();
	cad.setcpf(cpf);
	System.out.println("Localização : ");
	String localizacao=entrada.nextLine();
	cad.local.setlugar(localizacao); // Estou com problema nessa linha de codigo ... 
	System.out.println(cad.getnome2());
	System.out.println(cad.getcpf());
	System.out.println(cad.local.getlugar());
	}

}

Estou com o seguinte erro … :frowning:

Hospital
Nome Paciente :
Jorge Hudson
Digite CPF :
123
Localização :
Exception in thread “main” java.lang.NullPointerException
at Exec.main(Exec.java:15)

Estou fazendo certo isso?

jorhudson

Alguem pode me tirar essa duvida ??? :shock:

jorhudson

:stuck_out_tongue: Brigado a todos por ter me ajudado …

Descobri como resolve este problema , tive que criar um novo obj Localização local.

Codigo Fonte ;

Exemplo :

Lozalizacao local = new Localizacao();

Obs: Esse novo cod deve ser criado dentro da classe Cadastro, para haver uma associação entre elas…
:lol:

Criado 6 de abril de 2011
Ultima resposta 7 de abr. de 2011
Respostas 8
Participantes 4