public class ProgramaçãoPais {
public static void main(String[] args) {
Pais pas1 = new Pais();
pas1.setNome("Brasil");
Estado est1 = new Estado();
est1.setNome("Mato Grosso do Sul");
est1.setUf("MS");
Cidade cid1 = new Cidade();
cid1.setNome("Campo Grande");
Empresa emp1 = new Empresa();
emp1.setNome("HightechCursos");
Funcionario func1 = new Funcionario();
func1.setNome("Jão");
func1.setCargo("Ti");
func1.setEmpresa(emp1);
func1.setCidade(cid1);
func1.setEstado(est1);
func1.setPais(pas1);
System.out.println("Nome: "+func1.getNome()+", Cargo: "+func1.getCargo());
System.out.println("Empresa: "+func1.getEmpresa());
System.out.println(" "+func1.getEstado());
}
Relacionamento-Classes
20 Respostas
Qual erro está dando???
Esse aqui:
Empresa: com.hightech.Aula3.Empresa@15b44d6
com.hightech.Aula3.Estado@1044daf
O primeiro erro que se nota é o nome da classe com “ç” e assentos…
Mas vou acreditar que você escrever aqui e acabou colocando assim.
Posta aí a trace do erro que fica mais fácil da gente te ajudar. 
posta suas classes pais, estado, empresa, etc… acho que já sei…
Esse aqui:
Empresa: com.hightech.Aula3.Empresa@15b44d6 com.hightech.Aula3.Estado@1044daf
Ah, agora sim!
Simples, para Empresa e Estado você guarda uma referência de objeto. Ao imprimir com o getEstado() ele vai te trazer o endereço de memória do objeto em questão.
Tens que adicionar um método toString() em cada classe que acontece isso, assim quando você pedir pra exibir os dados, vai sair corretamente(claro, do modo que você configurou no toString).
edersombarros,
Voce está incluindo o objeto completo dentro de cada atributo do funcionário.
Tenta assim:
Funcionario func1 = new Funcionario();
func1.setNome(“Jão”);
func1.setCargo(“Ti”);
func1.setEmpresa(emp1.getNome());
func1.setCidade(cid1.getNome());
func1.setEstado(est1.getNome());
func1.setPais(pas1.getNome());
E ai pegou?
public class Pais {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
public class Estado {
private String nome;
private String uf;
private String pais;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
public String getPais() {
return pais;
}
public void setPais(String pais) {
this.pais = pais;
}
}
public class Cidade {
private String nome;
private String estado;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
}
public class Empresa {
private String nome;
private String cnpj;
private String cidade;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
}
public class Funcionario {
private String nome;
private String cargo;
private Pais pais;
private Estado estado;
private Cidade cidade;
private Empresa empresa;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCargo() {
return cargo;
}
public void setCargo(String cargo) {
this.cargo = cargo;
}
public Pais getPais() {
return pais;
}
public void setPais(Pais pais) {
this.pais = pais;
}
public Estado getEstado() {
return estado;
}
public void setEstado(Estado estado) {
this.estado = estado;
}
public Cidade getCidade() {
return cidade;
}
public void setCidade(Cidade cidade) {
this.cidade = cidade;
}
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
}
socialclub,
Não deu certo, dá a mensagem: The method setEmpresa(Empresa) in the type Funcionario is not applicable for the arguments (String)!
edersombarros,Voce está incluindo o objeto completo dentro de cada atributo do funcionário.
Tenta assim:
Funcionario func1 = new Funcionario(); func1.setNome(“Jão”); func1.setCargo(“Ti”); func1.setEmpresa(emp1.getNome()); func1.setCidade(cid1.getNome()); func1.setEstado(est1.getNome()); func1.setPais(pas1.getNome());E ai pegou?
Essa solução “em tese” funciona, mas destoa totalmente dos conceitos da Orientação a Objeto.
Afinal, porque criar um atributo do tipo String pra receber o nome de um objeto Estado, quando se pode passar uma referência de todo o objeto Estado para o Funcionario?
O modo que a classe foi dimensionada está certo, com Cidade, Estado e Pais sendo atributos de um Funcionario. O que ele deve fazer é o que eu já disse acima, implementar o método toString para as respectivas classes.
Criando atributos do tipo String você só aloca memória desnecessária no tempo em que poderia apenas passar referências de objetos já existentes em memória. Você vai escrever duas vezes, em dois locais diferentes o mesmo valor, quando pode escrever em um único lugar e consultar de lá mesmo.
socialclub,Não deu certo, dá a mensagem:
The method setEmpresa(Empresa) in the type Funcionario is not applicable for the arguments (String)!
E esse erro acontece pois no método setEmpresa da sua classe Funcionario é esperado um objeto do tipo Empresa em vez de um String.
Leia o que escrevi acima e pesquise sobre o toString(). Com esse tanto de classe que tens não demora nem 3 minutos implementar em todas.
Ruttmann,
como faço esse método toString()?
Esse aqui:
Empresa: com.hightech.Aula3.Empresa@15b44d6 com.hightech.Aula3.Estado@1044dafAh, agora sim!
Simples, para Empresa e Estado você guarda uma referência de objeto. Ao imprimir com o getEstado() ele vai te trazer o endereço de memória do objeto em questão.
Tens que adicionar um método toString() em cada classe que acontece isso, assim quando você pedir pra exibir os dados, vai sair corretamente(claro, do modo que você configurou no toString).
Tenho que colocar o método toString() em cada classe?
Esse aqui:
Empresa: com.hightech.Aula3.Empresa@15b44d6 com.hightech.Aula3.Estado@1044dafAh, agora sim!
Simples, para Empresa e Estado você guarda uma referência de objeto. Ao imprimir com o getEstado() ele vai te trazer o endereço de memória do objeto em questão.
Tens que adicionar um método toString() em cada classe que acontece isso, assim quando você pedir pra exibir os dados, vai sair corretamente(claro, do modo que você configurou no toString).
Tenho que colocar o método toString() em cada classe?
Sim, você coloca eles nas classes Estado, Cidade e Pais.
No Eclipse ou Netbeans, se você digitar toString e dar Ctrl+Espaço ele já vai puxar o método pra ti. Esse é um método padrão que pode ser aplicado pra qualquer classe, aliás, ele é implicitamente aplicado a todas as classes.
Este método tem um comportamento padrão, que é o que aconteceu pra você. Quando vc deu um getEstado, o toString atuou e retornou o que apareceu pra você: com.hightech.Aula3.Estado@1044daf.
com.hightech.Aula3 é o pacote onde está sua classe Estado. Por sua vez Estado é nome da sua classe. E 1044daf é o endereço de memória hexadecimal do seu objeto.
O que você deve fazer é sobrescrever o comportamento deste método, pra que ele retorne os atributos que você deseja exibir.
Nos links a seguir tem informações importantes pra ti:
http://javafree.uol.com.br/artigo/884104/Representacao-textual-de-objetos-metodo-toString.html

Ruttmann,
Valeu pela força…
edersombarros
dá uma olhada rápida em 3 capítulos do livro Java Use a Cabeça.
Assim vai entender os Relacionamentos, Heranças e Objetos.
Abraço.
Quais capítulos JavaDreams ?
Capítulos:
2 - Uma viagem até objetópolis
4 - Como os objetos se comportam
5 - Métodos extra fortes
7 - Melhor viver em objetópolis
e talvez o 8 e 9, mas estes dois últimos depende de qual nível você está.
Desculpa pois eram 4 e não 3.
abraço e boa leitura.
ps.: o livro você pega no google com download em pdf.
Capítulos:
2 - Uma viagem até objetópolis
4 - Como os objetos se comportam
5 - Métodos extra fortes
7 - Melhor viver em objetópolis
e talvez o 8 e 9, mas estes dois últimos depende de qual nível você está.
Desculpa pois eram 4 e não 3.
abraço e boa leitura.
ps.: o livro você pega no google com download em pdf.
Até o momento estou no Capítulo 11 por enquanto…
mas voltarei estudar táis capítulos…
Obrigado.
Capítulos:
2 - Uma viagem até objetópolis
4 - Como os objetos se comportam
5 - Métodos extra fortes
7 - Melhor viver em objetópolis
e talvez o 8 e 9, mas estes dois últimos depende de qual nível você está.
Desculpa pois eram 4 e não 3.
abraço e boa leitura.
ps.: o livro você pega no google com download em pdf.
Até o momento estou no Capítulo 11 por enquanto…
mas voltarei estudar táis capítulos…
Obrigado.
Sempre quando preciso eu olho de novo também, pois reforça a base.
Abraço.
Capítulos:
2 - Uma viagem até objetópolis
4 - Como os objetos se comportam
5 - Métodos extra fortes
7 - Melhor viver em objetópolis
e talvez o 8 e 9, mas estes dois últimos depende de qual nível você está.
Desculpa pois eram 4 e não 3.
abraço e boa leitura.
ps.: o livro você pega no google com download em pdf.
Até o momento estou no Capítulo 11 por enquanto…
mas voltarei estudar táis capítulos…
Obrigado.
Sempre quando preciso eu olho de novo também, pois reforça a base.
Abraço.
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk…
