[RESOLVIDO]Dificuldade com Construtores - Sobrecarga

9 respostas
C

Bom dia pessoal,

Estou fazendo um trabalho e estou com dúvida nos construtores... Fiz até o segundo construtor, e então eu travei. Se alguém puder me ajudar eu agradeço.

O enunciado desta parte é este abaixo:
· Faça a classe Funcionario com os seguintes atributos privados:
- nome
- salário
- data de nascimento ? do tipo Data
- data de admissão ? que é a data que o funcionário entrou na empresa ? do tipo Data
- departamento ? que é o departamento da empresa ao qual o funcionário está vinculado no momento
(do tipo Departamento). Ao longo de sua vida dentro da empresa, o funcionário pode ser realocado
(transferido) de um departamento para outro.
Construtores:
 Um que receba, como parâmetros, o nome, o salário, o departamento (do tipo Departamento)
e as datas (do tipo Data)
 Outro que receba, como parâmetros, o nome, o salário, o departamento (do tipo
Departamento), a data de nascimento (do tipo Data) e o dia, o mês e o ano de admissão.
 Mais um construtor para funcionários que ainda não foram alocados para um departamento.
Neste caso, os parâmetros são o nome, o salário e as datas (do tipo Data).

public class Funcionario {
	private String nome;
	private double salario;
	private Data nascimento;
	private Data admissao;
	private Departamento departamento;
	
	//construtor que recebe como parâmetros, o nome, o salário, o departamento (do tipo Departamento) e as datas (do tipo Data)
	public Funcionario(String nome, double salario, Data nascimento, Data admissao, Departamento departamento){
		this.nome = nome;
		this.salario = salario;
		this.nascimento = nascimento;
		this.admissao = admissao;
		this.departamento = departamento; 
	}
	
	public Funcionario(String nome, double salario, Departamento departamento, Data nascimento, Data admissao){
		
	}

9 Respostas

A

Você fez certinho, onde é que você está sentido dúvida exatamente? Você continua usando o .this. para setar valores.

C

No segundo construtor, pois conforme enunciado ele pede para o último parâmetro seria: Outro que receba, como parâmetros, o nome, o salário, o departamento (do tipo
Departamento), a data de nascimento (do tipo Data) e o dia, o mês e o ano de admissão.. O meu problema está neste parâmetro: dia, mes e ano de admissao.

//construtor que recebe, como parâmetro, o nome, o salário, o departamento (do tipo Departamento), a data de nascimento (do tipo Data) e o dia, o mês e o ano de admissão public Funcionario(String nome, double salario, Departamento departamento, Data nascimento, Data dia, Data mes, Data ano){ this.nome = nome; this.salario = salario; this.departamento = departamento; this.nascimento = nascimento; this.dia = dia; this.mes = mes; this.ano = ano;

Eu fiz assim, mas o eclipse acusa erro no dia mes e ano(erro: mes nao consegue resolver), e no final nao tem nada a ver com o enunciado: " dia, o mês e o ano de admissão".

Não sei se fui clara o bastante.

pmlm

O dia, mes e ano não são do tipo data. Dentro do construtor é que terás de criar a data com base nos valores passados para esses campos.

C

Tá, tudo bem… eu arrumei, mas não sei como criar a data dentro do construtor…

Alguém poderia ser mais específico, pois estou trancada…

//construtor que recebe, como parâmetro, o nome, o salário, o departamento (do tipo Departamento), a data de nascimento (do tipo Data) e o dia, o mês e o ano de admissão public Funcionario(String nome, double salario, Departamento departamento, Data nascimento, Data admissao){ this.nome = nome; this.salario = salario; this.departamento = departamento; this.nascimento = nascimento; this.admissao = admissao; }

maior_abandonado

o tipo data que acredito que você queira usar seria o de nome Date (pacote java.util).

Além dele ter o construtor sem argumentos ele tem um construtor que recebem o dia, o mês e o ano como inteiros (mesmo tipo que você deve colocar nos parâmetros do seu construtor, mas ao dar o new Date você deve passar na inversa a que eu falei, ano, mes, dia).

existe uma documentação que fala dos detalhes de todas as classes da API do java, veja: http://download.oracle.com/javase/6/docs/api/java/util/Date.html .

o tipo dos parâmetros que vc coloca no construtor é “int”, e ai dentro do construtor você coloca essa linha: this.admissao = new Date(ano, mes, dia);

e da o import nessa classe

A

maior_abandonado:
o tipo data que acredito que você queira usar seria o de nome Date (pacote java.util).

Além dele ter o construtor sem argumentos ele tem um construtor que recebem o dia, o mês e o ano como inteiros (mesmo tipo que você deve colocar nos parâmetros do seu construtor, mas ao dar o new Date você deve passar na inversa a que eu falei, ano, mes, dia).

existe uma documentação que fala dos detalhes de todas as classes da API do java, veja: http://download.oracle.com/javase/6/docs/api/java/util/Date.html .

o tipo dos parâmetros que vc coloca no construtor é "int", e ai dentro do construtor você coloca essa linha: this.admissao = new Date(ano, mes, dia);

e da o import nessa classe

Só complementando:

Seu professor comentou de criar uma classe Data ou usar (Date do Java)? Caso seja Date do Java o processo é o citado acima, você cria uma instância ex: new Date() -> pega da ta corrente ou new Date(02,05,2011); ou se não me engano new Date(02/05/2011); resumindo, se não me engano você usa , ou / como separador para criar uma data.

C

Oi André,

Sim… ela pediu pra criar uma classe Data também, que eu também terei que postar aqui pq também estou com dificuldade em algumas partes, pois esta professora não nos dá exercícios em aula e depois passa estes trabalhos bem elaborados.

Pelos menos agora já entendo o que é um construtor, e sim, sei que posso importar APIs do Java, mais ainda não entendo como fazer isto funcionar.

Sou bem iniciante mesmo e as dicas aqui estão meio avançadas para mim…

discorpio

Boa noite a todos.

Voce não precisa mudar o tipo dos parâmetros só para armazená-lo em um atributo data da classe que está como Date, basta que voce converta-os dentro do construtor assim:

public Funcionario(String nome, double salario, Departamento departamento, Data nascimento, int dia, int mes, int ano){  
        this.nome = nome;  
        this.salario = salario;  
        this.departamento = departamento;  
        this.nascimento = nascimento;
        this.admissao = new Date(ano, mes - 1, dia);   
}

O porque subtrai o valor 1 do mes :?:

Simples, os índices dos meses na classe Date começa no 0 (zero), assim sendo Janeiro = 0, Fevereiro = 1 e assim por diante, se voce informar o 5 como o número do més de maio, ele vai computar o mes de Junho.

Uma observação sobre construtores.

O java não entende o construtor como método, coisa que até hoje eu não consigo engolir, por mais explicações que já tive, contudo a finalidade do contrutor nas classes o próprio nome já diz, é construir o objeto cuja estrutura foi definido por sua classe, ele serve especificamente para iniciar variáveis atributos da classe, como voce pode perceber, e na Biblioteca visual como AWT e SWING, eles até servem para configurar a janela de um frame e iniciar os seus atributos no momento de sua criação

C

Discorpio,

Obrigado pela explicação, foi muito esclarecedora.

Ainda não pude testar, pois estou na empresa agora, mas testarei a noite assim que chegar em casa…

Criado 2 de maio de 2011
Ultima resposta 3 de mai. de 2011
Respostas 9
Participantes 5