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 … :?
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 … :?
isso me ajudou, creio que irá te ajudar tambem…
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.
Entendo. Você se refere ao Hibernate? Pode ser mais específico?
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!!!
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?
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 … 
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?
Alguem pode me tirar essa duvida ??? :shock:
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: