Problema com classes - Básico

olá pessoal, sou novato no java e estou seguindo uma apostila da Caelum. Empaquei na parte das classes. Gosto de fazer todos os exercícios que são propostos mas tem um que não tem jeito de funcionar.

É o seguinte:

Tenho um programa onde eu sempre usava apenas 1 classe para salvar minhas informações, mas agora preciso usar 2 classes: funcionario, data. Assim:

class funcionario

{

String nome;

String departamento;

double salario;

String dataentrada;
String rg;

boolean presente;

}

class data
{
int dia;
int mes;
int ano;
}

Eu preciso que o valor da String dataentrada (classe funcionario) seja o mesmo que o valor do int dia (classe data)

Como eu faço essa ligação entre os dois?

até então, para salvar alguma coisas dentro de uma variável, eu estava usado:

carlos.nome = Carlos;

como é que eu faço para salvar alguma coisa dentro da classe data? Eu tento colocar carlos.dia = 10 mas ele não da certo, quero saber como faz.

(quero lembrar que sou iniciante então por favor: expliquem bem.

Obrigado

Fala amigo… poxa é só instanciar a classe!

Seja bem vindo ao GUJ. :smiley:

cara, você vai te que ter um objeto da classe data na sua classe funcionário…
então, em vez de seu objeto dataentrada ser uma String, ela deve ser um objeto da sua classe Data

[code]public class Funcionario {

String nome;

String departamento;

double salario;
//objeto da class Data
Data dataentrada;

String rg;

boolean presente;

}[/code]

[code]public class Data {

int dia;

int mes;

int ano;

}[/code]

dessa forma, você pode fazer carlos.dataentrada.dia = 10; :wink:

[]´s

Bom antes de mais nada você instanciou o objeto data dentro da classe funcionário?, caso contrario faça isso, dessa forma você cria uma referência para esse objeto (data) dentro de funcionário para poder acessar do jeito que você mostrou.
Ficaria assim no final:

class funcionario

{

String nome;

String departamento;

double salario;

data dataentrada = new data();
String rg;

boolean presente;

}

class data
{
int dia;
int mes;
int ano;
}

depois dessa alteração você pode fazer assim que não tem problema:

funcionario carlos = new funcionario();
carlos.dataentrada.dia = 10;

Espero ter ajudado :slight_smile:

OI , vamos la então , primeiro quando for colocar algum codigo use as tags code para ficar mais facil de ler . Vocer precisa dar uma olhada em uma parte que chama composição , ou seja e quando um objeto tem um outro , como por exemplo temos a classe Ponto que tem os atributos x , y , e uma classe Quadrado que tem 4 pontos . De uma olhada no capitulo 8 do Deitel Java como programar

No seu caso voce tem uma classe Funcionario que tem uma data que e de entrada .


 class funcionario

{

String nome;

String departamento;

double salario;

//atributo para representar a data de entrada 
Data dataentrada;

String rg;

boolean presente;

}

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

Entao voce pode instanciar um objeto funcionario , vc faria


Funcionario carlos = new Funcionario();

carlos.nome = "Carllos";

//aqui vc faz o acesso a data , primeiro  vc faz o acesso a funcionario depois a data usando o operador ponto
carlos.dataentrada.dia = 10;

Alguma duvida ? de uma olhada em metodos de acesso para proteger seus atributos , os famosos metodos get e set , e tambem de uma olhada em construtores eu recomendo o Deitel Java Como Programar … qualquer duvida e so postar …flw

Bem vindo ao GUJ!

Dicas importantes:

1 - Procure SEMPRE seguir a convenção para nomear as classes, métodos, etc. em Java. Por exemplo, o nome de suas classes deveriam iniciar com letra maiúscula. Para saber mais, procure por Java code conventions.

2 - Sempre que postar qualquer código aqui no fórum, use as tags de formatação especial:

Seu código entre as tags

Aí ele ficará formatado e bem mais legível.

kra Bem vindo ao GUJ…

E mais facil vc trabalhar orientado a objeto, pq vc “compacta em partes seus problemas”;

Olha o metodo que eu fiz para te ajudar:

[code]public class Funcionario{

Data dataentrada = new Data();  // Intanciando a outra classe criada "DATA"


String nome;
String departamento;
double salario;
String rg;

boolean presente;

//Todos os metodos que tem getAlguma coisa, são metodos que delvove o que esta indicado pelo metodo.
//Todos os metodos que tem setAlguma coisa, são medotos que modificam o que esta indicado pelo metodo.

public Data getDataentrada() { // Este metodo retorna a Data de entrada
    return dataentrada;
	}
public void setDataentrada(Data dataentrada) { // Este metodo acessa o objeto dataentrada que e objeto de Data e o modifica acessando um metodo de Data
    this.dataentrada = dataentrada;
}

public String getDepartamento() {
    return departamento;
}

public void setDepartamento(String departamento) {
    this.departamento = departamento;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public boolean isPresente() {
    return presente;
}

public void setPresente(boolean presente) {
    this.presente = presente;
}

public String getRg() {
    return rg;
}

public void setRg(String rg) {
    this.rg = rg;
}

public double getSalario() {
    return salario;
}

public void setSalario(double salario) {
    this.salario = salario;
}

}
// Esta e uma classe separada de Data onde logo acima estou criando um objeto dela
public class Data{

int dia;
int mes;
int ano;

public void setData (int Mdia, int Mmes, int Mano){

	dia = Mdia;
	mes = Mmes;
	ano = Mano; 
}
public String DevolveData(){
	return ""+dia+"/"+mes+"/"+ano;
}

}[/code]

E no seu metodo main e so vc colocar assim:

           [code]Funcionario func = new Funcionario(); 

          int dia = 20;
          int mes = 10;
         int ano = 2008;

          func.setDataentrada(dia,mes,ano);
          System.out.println(func.dataentrada.DevolveData());[/code]

esta ai vei…
espero ter ajudado.

flw