Class como atributo

16 respostas
B

Boa tarde, sou universitário do quinto semestre de Sistema de Informaçao e estou estudando JAVA Básico. Esta é minha primeira duvida, gostaria de saber o que esta errado na Class TestaFuncionario…

class Funcionario

{

String nome;

String departamento;

double salario;

Data dataEntrada; //CLASS Data.

int rg;

boolean estaNaEmpresa;
void bonifica (double valor)
{
	salario = salario + valor;
}
void mostra ()
{
	System.out.println ("Nome : " +nome + "\n" + "Departamento : " +departamento + "\n" + 
	"Salario : " +salario + "\n" + "Data de Admissao : " +dataEntrada + "\n" + "RG : " + rg); 
}

}


class TestaFuncionario

{

public static void main (String [] args)

{

Funcionario f1 = new Funcionario();

f1.nome = glauco;

f1.salario = 1000;

f1.bonifica (500);

Data data = new Data();

data.dia=01;

data.mes=02;

data.ano=12;

f1.dataEntrada = data;

f1.mostra();

}

}


A primeira class compilou mas a segunda class TestaFuncionario da um erro de compilaçao no DOS:

C:\Java>javac TestaFuncionario.java
TestaFuncionario.java:13: error: incompatible types
f1.dataEntrada = data;
^
required: Funcionario.Data
found: Data
1 error

Por favor me ajudem a identificar onde esta o erro…

16 Respostas

adriano_si

Bulldog, tudo bom cara ???

leia por favor as regras do fórum cara para não criar tópicos nesse formato, pois isso atrapalha o bom andamento do Fórum.

Qaunto ao seu erro, a própria stack trace do erro está bem claro… Onde está a classe Data ??? Você a criou ou pretende usar a class Date do pacote java.util que já está presente na JVM ???

Enfim. Precisamos saber o que você realmente precisa.

Abs []

ul1sses

Onde está essa classe Data? Como estão organizados seus pacotes? Fica tudo em um pacote só?
Ah, e coloca o código entre as tags [code]

B

Adriano_si blz, como falei na mensagem sou novo por aqui e principalmente no mundo java, criei este codigo no NotePad++, criei a class Funcionario, TestaFuncionario e Data.

class Funcionario

{

String nome;

String departamento;

double salario;

Data dataEntrada;

int rg;

boolean estaNaEmpresa;
void bonifica (double valor)
{
	salario = salario + valor;
}
void mostra ()
{
	System.out.println ("Nome : " +nome + "\n" + "Departamento : " +departamento + "\n" + 
	"Salario : " +salario + "\n" + "Data de Admissao : " +dataEntrada + "\n" + "RG : " + rg); 
}

}

Obs: Compilou…

class Data
{
int dia;
int mes;
int ano;
}
Obs.: Compilou…

class TestaFuncionario

{

public static void main (String [] args)

{

Funcionario f1 = new Funcionario();

f1.nome = glauco;

f1.salario = 1000;

f1.bonifica (500);

Data data = new Data();

data.dia=01;

data.mes=02;

data.ano=12;

f1.dataEntrada = data;

f1.mostra();

}

}

Obs.: Nao compila:

C:\Java>javac TestaFuncionario.java
TestaFuncionario.java:13: error: incompatible types
f1.dataEntrada = data;
^
required: Funcionario.Data
found: Data
1 error

ul1sses

Você tá fazendo as importações corretamente?

cido18

Olá Bulldog,

Eu compilei seu codigo e não encontrei erro, voce ta usando o mesmo pacote para essas três classes?

B

Ulisses boa tarde, companheiro eu nao sei responder sua pergunta sou NOVATO em java, estou aqui justamente para aprender e quando possivel ensinar tambem… preciso resolver meu problema. Obrigado.

B

Cido boa tarde, vc realmente fez do mesmo jeito que esta na mensagem…, ta compilando do MS-DOS com javac…, porque aqui compila as duas classes Funcionario e Data, mas na hora de testar com a classe TestaFuncionario nao compila…

cido18

Faz o seguinte, na frente dos class coloca public, acredito que voce fez todas essas classes em pacotes diferentes.

B

Cido, compilou bacana mas infelizmente na hora de executar a classe TestaFuncionario da o seguinte retorno:

C:\Java>java TestaFuncionario
Nome : glauco
Departamento : null
Salario : 1500.0
Data de Admissao : Data@19f953d-------------------> o que é isso ?Porque este resultado?
RG : 0

C:\Java>

ul1sses

Data é uma classe. dataEntrada é um objeto/instancia dessa classe.
No seu método mostra() você está mandando imprimir o objeto dataEntrada… e não os atributos/variáveis desse objeto.

B

Ulisses, entendi o que vc falou mas como devo colocar os atributos deste objetos ? Poderia se possivel me mostrar…

ul1sses

Na sua classe data você poderia colocar um método, por exemplo:

public class Data 
{ 
    int dia; 
    int mes; 
    int ano; 
}

public String retornaDataFormatada() {
    return dia+"/"+mes+"/"+ano;
}

ai o método mostrar() da classe Funcionario ficaria mais ou menos assim:

void mostra () 
{ 
    System.out.println ("Nome : " +nome + "\n" + "Departamento : " +departamento + "\n" + 
    "Salario : " +salario + "\n" + "Data de Admissao : " +dataEntrada.retornaDataFormatada() + "\n" + "RG : " + rg); 
}
B

Ulisses e Cido, muito obrigado pela ajuda …

Cido me ajudou com o public, e o Ulisses me alertou sobre o metodo Mostra sobre os atributos do objeto…

neste metodo:

[	void mostra ()

{

System.out.println (Nome : " +nome + “\n” + “Departamento : " +departamento + \n +

Salario : " +salario + “\n” + “Data de Admissao : " +dataEntrada.dia+/+dataEntrada.mes+

/+dataEntrada.ano+/ + \n + "RG : " + rg);

}

]

estava colocando para imprimir apenas dataEntrada. Sendo que na verdade tenho que colocar dataEntrada.dia, dataEntrada.mes, dataEntrada.ano.

Obrigado galera,…GOSTEI DESTE FORUM É SUPER RAPIDO NAS RESPOSTAS…

B

Uma perguntinha básica…, COMO EU MARCO ESTE TOPICO COMO RESOLVIDO.

devvdevv.interior

edita seu primeiro post, colocando resolvido na frente :smiley:

cido18

Você pode tambem toda vez que criar uma classe, sobreescrever o metodo toString(), assim mostra as informações que você quer.
No seu post em um botão de editar, ai eh só trocar lá para resolvido.

Criado 19 de abril de 2012
Ultima resposta 19 de abr. de 2012
Respostas 16
Participantes 5