Boa noite, meu problema é o seguinte…
Preciso fazer um método que demite ou realoca um funcionário para outro setor do departamento, eu dei o nome de “saiFuncionarioDoDepto” para o método, mas eu estou com dificuldade para implementá-lo, alguém pode me dar uma ajuda?
Brother, cola o seu código aqui para ver se posso ajudar. E não esqueça das tags code /code!
Qual a sua dificuldade para implementar ? A relacao entre as classes ?
Como esta o relacionamento entre as classes Funcionario e Departamento ?
Dependendo de como estiver seria ALGO assim:
public class Funcionario {
private Departamento departamento;
...
public void setDepartamento(Departamento dep) {
this.departamento = dep;
}
...
}
public class Departamento{
private Set<Funcionario> funcionarios = new HashSet<Funcionario>();
...
public void setFuncionarios(Set<Funcionario> funs) {
this.funcionarios = funs;
}
...
}
//Seu método:
public void saiFuncionarioDoDepto (Funcionario f, Departamento d) {
f.setDepartamento(null); //tirei a relacao do funcionario com o departamento
Set<Funcionario> funcs = d.getFuncionario(); //deve retornar um Set<Funcionario> (implementar o metodo get na classe Departamento)
funcs.remove(f); // removendo o Objeto Funcionario f do Set
d.setFuncionario(funcs); //"quitei" o funcionario da empresa
}
Creio que seja iso sua duvida ?
Eu tenho tenho as classes Funcionario e Departamento, daí dentro da classe Departamento, eu preciso criar o método para a demissão do funcionário.
[code]public class Departamento {
//------ atributos------
private int codigo;
private String nome_departamento;
private int qtd_func;
public Departamento( int cod, String nom) {
codigo = cod;
nome_departamento = nom;
qtd_func = 0;
setCodigo(cod);
setNome(nom);
}
public void saiFuncionarioDoDepto(){
// eu não teria que fazer um get, pegando a quantidade de funcionários, e depois implementar um código que retira um daquele valor que o get retorna?
}
}
[/code]
Primeiro: Tem uma coisinha que você está fazendo no método construtor que está repetindo a mesma atribuição duas vezes mas de formas diferentes.
[code]public Departamento( int cod, String nom) {
codigo = cod;
nome_departamento = nom;
qtd_func = 0;
setCodigo(cod);
setNome(nom);
} [/code]
Você está atribuindo nos atributos diretamente os parâmetros, e depois esta usando os sets dos mesmo pra atribuir os mesmos parâmetros, ou faz de um jeito ou de outro. Eu sei que não tem nada a ver com o problema, mas não da pra deixar assim neh
Você esta usando um vetor de objetos, ArrayList, banco de dados, o que? Você poderia criar um atributo boolan “ativo” para vincular a contratação dos funcionarios, se você quiser demitir esse funcionario você só faria esse atributo receber false;
Agora vi o jeito que você está querendo fazer, poderia ficar mais ou menos assim:
[code]public void saiFuncionarioDoDepto(){
Scanner input = new Scanner (System.in);
System.out.println("Deseja demitir quantos funcionarios?");
int qtdDemitidos = input.nextInt();
setQtd_func(getQtd_func()-qtdDemitidos);
}[/code]
Note que usei para entrada de dados o Scanner, apenas pro exemplo, e pra saida usei o sysou. Mas você use o que quiser. Usei esses dois apenas para mostrar onde estaria entrando e saindo dados.
Ok, entendi. Mas como no enunciado do exercício diz que, esse método é chamado a cada vez que um funcionário é demitido, então poderia ficar assim?
public void saiFuncionarioDoDepto() {
int quantFunc = getQtdFunc() - 1;
}
[quote=maxcanoas]Ok, entendi. Mas como no enunciado do exercício diz que, esse método é chamado a cada vez que um funcionário é demitido, então poderia ficar assim?
[code]
public void saiFuncionarioDoDepto() {
int quantFunc = getQtdFunc() - 1;
}
[/code][/quote]
Poderia ficar assim:
public void saiFuncionarioDoDepto() {
if(getQtdFunc() > 0){
setQtdFunc(getQtdFunc()-1);
}else{
System.out.println("Não existe funcionario para ser demitido");
}
}
É bom fazer essa verificação, pois assim não da para a quantidade de funcionarios ficar negativa.
Ah, claro, esqueci da verificação. Valeu, cara. Me ajudou muito!
Qualquer coisa estamos ai