al.barbosa:
Guilherme
Dei uma olhada na fj11, acho que o exercício é esse aqui:
quote Adicione um atributo na classe Funcionario de tipo int que se chama identificador. Esse identificador deve ter um valor único para cada instância do tipo Funcionario. O primeiro Funcionario instanciado tem identificador 1, o segundo 2, e assim por diante. Você deve utilizar os recursos aprendidos aqui para resolver esse problema.
Crie um getter para o identificador. Devemos ter um setter?
Que está na seção Exercícios: Encapsulamento, construtores e static
Não vi necessidade de criar um vetor de funcionários. Nestes exercícios ele apenas cria a classe Funcionario, conforme abaixo (este código está na questão 2):
class Funcionario {
private double salario;
// ...
public double getSalario() {
return this.salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
Ele está pedindo: “Adicione um atributo na classe Funcionario de tipo int que se chama identificador”, então você pode adicionar o seguinte dentro da classe:
private int identificador;
A questão é que “O primeiro Funcionario instanciado tem identificador 1, o segundo 2, e assim por diante”. Como fazer o identificador ser 1 para o primeiro Funcionario, e ser incrementado em 1 para cada funcionario criado? Você precisa de um contador que seja incrementado a cada funcionário criado. E precisa guardar esse contador em algum lugar que todo funcionário possa acessar. O contador deve pertencer à classe Funcionario, e não a cada objeto da classe. Qual o tipo de atributo que é da classe, e não do objeto? É o atributo do tipo static.
Então você pode incluir o seguinte atributo:
private static int contadorFuncionario;
E no construtor da classe funcionario colocar o seguinte:
public Funcionario(){
identificador = ++contadorFuncionario;
}
Assim o contadorFuncionario será incrementado a cada funcionário criado. O identificador do funcionário criado recebe o valor do contador no momento da criação do funcionário.
Ele pede: “Crie um getter para o identificador”. Então pode incluir:
public int getIdentificador(){
return identificador;
}
Qual a resposta para a outra pergunta: “Devemos ter um setter?”
[/quote]
Desculpe a demora para responder , estou viajando e só agora tive acesso a internet…
Conforme você escreveu… acho melhor pensar um pouco.
Não acha mais viavel, quando eu criar um Funcionario ele já dá um identificador pra ele ?
Pense bem, eu crio um metodo a mais para só identifica-lo, não me parece nada confortante.
O certo seria criou um funcionario? já dê logo um identificador pra ele, não invente metodos, para fazer isto! ( no caso que você fez foi um construtor)
Sendo assim al.barbosa , está de acordo? , não acha mais viavel o método que fiz?
void adiciona(Funcionario f){
this.empregados[contador] = f;
this.empregados[contador].setIdentificador(contador);
contador ++;
}
Sobre o exercício, eu fiz tudo sem problemas, e esta igual ao meu =)
Ah! e sobre o …
claro que não. pra que mudar o identificador do Funcionario, sendo que o identificador serve pra identifica-lo!,NÃO devemos NEM, queremos mecher nele.
Até + , qualquer coisa só postar ai , que agente discute =)