Objeto como parametro para um outro Objeto

5 respostas
P

Pessoal!

eu tenho uma classe Funcionario com os seguintes parametros: nome, salario, departamento, dataDeNasc, dataDeAdmissao. E eu tenho um classe Departamento que tem como parametros: codigoDoDepto, nomeDoDepto, qtdFuncDepto.

mas na hora de instanciar o funcionario eu não sei como colocar um objeto da classe Departamento(ja instanciado anteriormente), como parametro para ele.

se quiserem posso postar os códigos aqui!

desde já agradeço.

5 Respostas

gRoOve

Primeiro, não existem parametros em classes e sim atributos e métodos(junção dos dois seriam os membros). Segundo, não seria ao contrário? Inserir um funcionário dentro do departamento? Terceiro, sempre poste os códigos :slight_smile:

dreampeppers99

petros:
Pessoal!

eu tenho uma classe Funcionario com os seguintes parametros: nome, salario, departamento, dataDeNasc, dataDeAdmissao. E eu tenho um classe Departamento que tem como parametros: codigoDoDepto, nomeDoDepto, qtdFuncDepto.

mas na hora de instanciar o funcionario eu não sei como colocar um objeto da classe Departamento(ja instanciado anteriormente), como parametro para ele.

se quiserem posso postar os códigos aqui!

desde já agradeço.

Amigo há inúmeras formas de se fazer isso… (passar essa dependência)

Pelo construtor:

public Funcionario(Departamento departamento){ this.depto = departamento; }
Por setter:

public void setDepartamento(Departamento departamento) funcionario.setDepartamento(depto);

P

sim isso mesmo, são atributos.

segundo, eu tenho que ler do teclado o departamento que a pessoa deve entrar.

terceiro, não não é ao contrario, sempre que um funcionario novo tiver como parametro determinado departamento, eu tenho que somar 1 no nº de funcionario do departamento. o problema todo esta nisso :/

seguem os códigos:

import java.util.GregorianCalendar;
public class Data{
    private int dia;
    private int mes;
    private int ano;
    // constrói o objeto Data com os valores recebidos via parâmetros
    public Data(int d, int m, int a){
        setAno(a);
        setMes(m);
        setDia(d);
    }
    // constrói o objeto Data com a data recebida no formato inteiro AAAAMMDD
    public Data (int data){
        setAno(data / 10000);
        setDia (data % 100);
        setMes( data % 10000 / 100);
    }
    // constrói o objeto Data com a data atual
    public Data(){
        GregorianCalendar c = new GregorianCalendar();
        dia = c.get(GregorianCalendar.DAY_OF_MONTH);
        mes = c.get(GregorianCalendar.MONTH)+1;
        ano = c.get(GregorianCalendar.YEAR);
    }
    public String getDataPadrao(){
        return dia + "/" + mes + "/" + ano;
    }
    public int getDataInvertida(){
        return ano * 10000 + mes * 100 + dia;
    }
    public boolean ehBissexto(){
        if (ano % 4 == 0){
            return true;
        }else{
            return false;
        }
    }
    public void setDia(int d){
        dia = d;
    }
    public void setMes(int m){
        mes = m;
    }
    public void setAno(int a){
        ano = a;
    }
    public int getDia(){
        return dia;
    }
    public int getMes(){
        return mes;
    }
    public int getAno(){
        return ano;
    }
}
public class Departamento{
    private int codDepto;
    private String nomeDepto;
    private int qtdFunc;
    
    public Departamento(int codigoDepto, String nomeDoDepto){
        codDepto = codigoDepto;
        nomeDepto = nomeDoDepto;
    }
    
    public void setCodDepto(int codigoNovo){
        if (codigoNovo > 0 && codigoNovo < 6){
            codDepto = codigoNovo;
        }else{
            codDepto = 1;
        }
    }
    public void setNomeDepto(String novoNome){
        nomeDepto = novoNome;
    }
    public int getCodDepto(){
        return codDepto;
    }
    public String getNomeDepto(){
        return nomeDepto;
    }
    public int getQtdFunc(){
        return qtdFunc;
    }
    public void saiFuncionarioDoDepto(){
        qtdFunc--;
    }
    public void entraFuncionarioNoDepto(){
        qtdFunc++;
    }
    public String dadosDoDepartamento(){
        return ("Nome do departamento: " + nomeDepto + "; Código do departamento: " + codDepto + "; Quantidade de funcionarios: " + qtdFunc);
    }
    
}
public class Funcionario{
    private String nome;
    private double salario;
    private Data dataDeNasc;
    private Data dataDeAdmissao;
    private Departamento departamento;
    
    public Funcionario(String n, double sal, Departamento depto, Data dataNasc, Data dataAdmissao){
        nome = n;
        salario = sal;
        dataDeNasc = dataNasc;
        dataDeAdmissao = dataAdmissao;
        departamento = depto;
        departamento.entraFuncionarioNoDepto();
    }
    public Funcionario(String n, double sal, Departamento depto, Data dataNasc, int diaAdmissao, int mesAdmissao, int anoAdmissao){
        nome = n;
        salario = sal;
        dataDeNasc = dataNasc;
        dataDeAdmissao = new Data(diaAdmissao, mesAdmissao, anoAdmissao);
        departamento = depto;
        departamento.entraFuncionarioNoDepto();
    }
    public Funcionario(String n, double sal, Data dataNasc, Data dataAdmissao){
        nome = n;
        salario = sal;
        dataDeNasc = dataNasc;
        dataDeAdmissao = dataAdmissao;
    }
    
    public void setSalario(double novoSalario){
        salario = novoSalario;
    }
    public void aloca(Departamento novoDepto){
        departamento = novoDepto;
    }
    public int calculaIdade(){
        return new Data().getDataInvertida() - dataDeNasc.getDataInvertida(); 
    }
    public int calculaTempoDeServico(){
        return new Data().getAno() - dataDeAdmissao.getAno();
    }
    public void aumentaSalario(double taxa){
        double tax = taxa / 100;
        salario *= tax;
    }
    public void aumentaSalario(double taxa1, double taxa2, double taxa3){
        if (calculaIdade() < 27){
            aumentaSalario(taxa1);
        }else if(calculaIdade() >= 27 && calculaIdade() <= 38){
            if (calculaTempoDeServico() < 7){
                aumentaSalario(taxa2);
            }else{
                aumentaSalario(taxa3);
            }
        }else{
            aumentaSalario(taxa3);
        }
    }
    public void aumentaSalario(int cod, double taxa){
        if (departamento.getCodDepto() == cod){
            aumentaSalario(taxa);
        }
    }
    public String getNome(){
        return nome;
    }
    public double getSalario(){
        return salario;
    }
    public Data getDataDeNasc(){
        return dataDeNasc;//.getDataPadrao();
    }
    public Data getDataDeAdmissao(){
        return dataDeAdmissao;//.getDataPadrao();
    }
    public Departamento getDepartamento(){
        return departamento;
    }
}
O_Monge

petros:
Pessoal!

eu tenho uma classe Funcionario com os seguintes parametros: nome, salario, departamento, dataDeNasc, dataDeAdmissao. E eu tenho um classe Departamento que tem como parametros: codigoDoDepto, nomeDoDepto, qtdFuncDepto.

mas na hora de instanciar o funcionario eu não sei como colocar um objeto da classe Departamento(ja instanciado anteriormente), como parametro para ele.

se quiserem posso postar os códigos aqui!

desde já agradeço.

Cara… já fizesse isso não? A não ser que não entendi o que tu queres…

Só fazer:

public void setDepartamento( Departamento departamento ) { this.departamento = departamento; departamento.entraFuncionarioNoDepto(); }

Departamento depto = null; new Funcionario("nome", 100d /*estagiario :P*/, depto, null, null);

Se não é isso que tu queres, por favor explique melhor… valeu

P

assim ó, eu tenho uma classe que se chama Teclado.
aqui esta ela:

import java.io.*;

/** Classe que permite fazer leitura de dados do teclado */

public class Teclado{
     private String s;
     private InputStreamReader i = new InputStreamReader (System.in);
     private BufferedReader d = new BufferedReader(i);

     /**
        Lê um inteiro.
        @return int
     */
     public int leInt (){
         int a = 0;
         try{
             s = d.readLine();
             a = Integer.parseInt(s);
         }
         catch (IOException e){
             System.out.println ("Erro de I/O: " + e);
         }
         catch (NumberFormatException e){
             System.out.println ("o valor digitado deve ser inteiro: "+e );
         }
         return (a);
     }

     /**
        Lê um inteiro, com mensagem de solicitação.
        @return int
     */
     public int leInt (String msg){   
         int a = 0;
         System.out.print(msg);
         try{
             s = d.readLine();
             a = Integer.parseInt(s);
         }
         catch (IOException e){
             System.out.println ("Erro de I/O: "+e );
         }
         catch (NumberFormatException e){
             System.out.println ("o valor digitado deve ser inteiro: "+e );
         }
         return (a);
     }

     /**
        Lê um double.
        @return double
     */
     public double leDouble(){
         double a = 0;
         try{
             s = d.readLine();
             a = Double.parseDouble(s);
         }
         catch (IOException e){
             System.out.println ("Erro de I/O: " + e);
         }
         catch (NumberFormatException e){
             System.out.println ("o valor digitado deve ser número: "+e );
         }
         return (a);
     }

     /**
        Lê um double, com mensagem.
        @return double
     */
     public double leDouble(String msg){
         double a = 0;
         System.out.print(msg);
         try{
             s = d.readLine();
             a = Double.parseDouble(s);
         }
         catch (IOException e){
             System.out.println ("Erro de I/O: " + e);
         }
         catch (NumberFormatException e){
             System.out.println ("o valor digitado deve ser numero: "+e );
         }
         return (a);
     }

     /**
        Lê um string.
        @return String
     */
     public String leString(){
         s = "";
         try{
            s = d.readLine();
         }
         catch (IOException e){
            System.out.println ("Erro de I/O: " + e);
         }
         return (s);
     }

     /**
        Lê um string. com mensagem.
        @return String
     */
     public String leString(String msg){
         s = "";
         System.out.print(msg);
         try{
            s = d.readLine();
         }
         catch (IOException e){
            System.out.println ("Erro de I/O: " + e);
         }
         return (s);
     }
     /**
        Lê um caractere com mensagem.
        @return Char
     */
     public Character leChar(String msg){
         s = "";
         System.out.print(msg);
         try{
            s = d.readLine();
         }
         catch (IOException e){
            System.out.println ("Erro de I/O: " + e);
         }
         return (s.charAt(0));
        }
}

eu uso ela para receber informações do usuario.

então eu crio o funcionario:
public class TesteFuncionarioDepto{
    public static void main(String args[]){
        Teclado t = new Teclado();
        
        Departamento depto_1 = new Departamento(1, "RH");
        System.out.println("Criando funcionario...");
        Funcionario f_1 = new Funcionario(
            t.leString("nome: "),
            t.leDouble("salario: "),
            [b]// aqui eu tenho que receber objeto departamento VIA TECLADO!,[/b]
            new Data(t.leInt("data de Nasc. no formato AAAAMMDD: ")),
            new Data(t.leInt("data de admiss. no formato AAAAMMDD: "))
        );
    }
}
Criado 26 de abril de 2011
Ultima resposta 26 de abr. de 2011
Respostas 5
Participantes 4