Dificuldade na criação de métodos

9 respostas
M

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?

9 Respostas

bgomes06

Brother, cola o seu código aqui para ver se posso ajudar. E não esqueça das tags code /code!

A

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 ?

M

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.

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?      
            
            
            }


}
Matheus_terra

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.

public Departamento( int cod, String nom) {  
                codigo = cod;  
                nome_departamento = nom;  
                qtd_func = 0;  
                  
                setCodigo(cod);  
                setNome(nom);  
            }

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

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;

Matheus_terra

Agora vi o jeito que você está querendo fazer, poderia ficar mais ou menos assim:

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); 
}

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.

M

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;


}
Matheus_terra
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?
public void saiFuncionarioDoDepto() {

int quantFunc = getQtdFunc() - 1;


}

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.

M

Ah, claro, esqueci da verificação. Valeu, cara. Me ajudou muito!

Matheus_terra

Qualquer coisa estamos ai :smiley:

Criado 11 de abril de 2013
Ultima resposta 11 de abr. de 2013
Respostas 9
Participantes 4