Dificuldade na criação de métodos

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 :smiley:

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 :smiley: