Duvida ao criar o metodo main

Em não sei oque coloco no parametro do setSalario… código abaixo:

[code]public class Teste {
public static void main(String[] args) {
Empregado em = new Empregado ();

em.setNome("Alexandre");
em.setSalario(100.0);
em.setStatus([b]O que eu coloco aki ???[/b]);
em.setCpf(254684154);

System.out.println(em.getNome()+em.getSalario()+em.getStatus()+em.getCpf());

}[/code]

}

[code]public class EmpregadoStatus {
public boolean contratado;
private boolean demitido;
private boolean emferias;
public EmpregadoStatus(){

}
public boolean isContratado() {
	return contratado;
}
public void setContratado(boolean contratado) {
	this.contratado = contratado;
}
public boolean isDemitido() {
	return demitido;
}
public void setDemitido(boolean demitido) {
	this.demitido = demitido;
}
public boolean isEmferias() {
	return emferias;
}
public void setEmferias(boolean emferias) {
	this.emferias = emferias;
}

}[/code]

[code]public class Empregado {
protected double salario;
protected EmpregadoStatus status;
protected int cpf;
protected String nome;

public String getNome() {
	return nome;
}


public void setNome(String nome) {
	this.nome = nome;
}


public Empregado(){
	
}


public Empregado(String name, double salario, EmpregadoStatus status, int cpf) {
	
}

public void printName(){
	
}

public double getSalario() {
	return salario;
}

public void setSalario(double salario) {
	this.salario = salario;
}

public EmpregadoStatus getStatus() {
	return status;
}

public void setStatus(EmpregadoStatus status) {
			this.status = status;
}

public int getCpf() {
	return cpf;
}

public void setCpf(int cpf) {
	this.cpf = cpf;
}

}[/code]

Boa noite Xandi_m5.

Simples, o método status na classe empregado armazena um valor num atritubo seu que é do tipo da classe EmpregadoStatus, assim sendo voce poderá instanciar a classe EmpregadoStatus, e colocar o valor da sua instância dentro do método, assim

public class Teste {
  
 public static void main(String[] args) {  
    Empregado em = new Empregado ();
    // Instanciando EmpregadoStatus
    EmpregadoStatus emstatus = new EmpregadoStatus();
    // Atribuindo seus valores.
    emstatus.setContratado(true);
    emstatus.setDemitido(false);
    emstatus.setisEmFerias(false);
     
      
    em.setNome("Alexandre");  
    em.setSalario(100.0);  
    em.setStatus(emstatus);  
    em.setCpf(254684154);

    // Agora de acordo com o estatus, voce pode imprimir desta forma
    if (em.getStatus().isContratado()){
        System.out.println("----------Funcionários Contratados----------");
        System.out.println(em.getNome()+em.getSalario()+em.getCpf());
    }
      
      
}

Para facilitar as coisas, primeiro, voce pode criar a instância EmpregadoStatus dentro do próprio método status da classe empregado, e segundo, passar os valores booleanos no construtor da classe Empregado desta forma:

  // Na classe Empregado, modifique o método getStatus assim:
   ......
   public EmpregadoStatus getStatus() {
        if (status == null) status = new EmpregadoStatus();  
        return status;  
    }
    .......
    // Depois cria um construtor sobrecarregado na mesma classe Empregado assim:
    ......
    public Empregado(){  
          
    }  
        
    public Empregado(String name, double salario, EmpregadoStatus status, int cpf) {
        // Voce esqueceu de implementar isto:
        setName(name);
        setSalario(salario);
        setStatus(status);
        setCpf(cpf);
    }

    public Empregado(String name, double salario, Boolean contratado, Boolean demitido, Boolean emferias, int cpf){
        setName(name);
        setSalario(salario);
        getStatus().setContratado(contratado);
        getStatus().setDemitido(demitido);
        getStatus().setemFerias(emferias);
        setCpf(cpf);
    }
    ....
    ....

Agora voce só precisa instanciar a classe Empregado, desta forma:

public class Teste {
  
 public static void main(String[] args) {
    // Atribuindo seus valores diretamente na classe Empregado  
    Empregado em = new Empregado ("Alexandre", 100.0, true, false, false, 254684154);

    // Agora de acordo com o estatus, voce pode imprimir desta forma
    if (em.getStatus().isContratado()){
        System.out.println("----------Funcionários Contratados----------");
        System.out.println(em.getNome()+em.getSalario()+em.getCpf());
    }
      
      
}

Ficou mais simples, enxuto e mais fácil não :?: :shock: :roll: :slight_smile: :smiley: :lol:

Haaaa
Tava esquecendo disso EmpregadoStatus emstatus = new EmpregadoStatus();

VLW!!!

[quote=xandi_m5]Haaaa
Tava esquecendo disso EmpregadoStatus emstatus = new EmpregadoStatus();

VLW!!![/quote]

Eu reeditei o código anterior, dê um olhada. :idea:

OK VLW!!!

Boa tarde Xandi_m5.

Na verdade tem como simplificar ainda mais esse seu código.

Após uma análise mais apurada, verifiquei que o atributo “status” não precisa ser necessariamente um objeto, mas sim um valor String e porque não dizer até um valor inteiro que simbolize um status. Se não vejamos:

    // Sua classe Empregado com modificações.

    public class Empregado  {
         /* Se voce encapsulou com getters e setters,
             então estes atributos tem que ser privados
             e não protegidos. */
         private double salario;  
         private int status;  // Aqui o atributo status será um valor inteiro
         private String cpf;   // O atributo cpf é bom ser String por causa de caracteres com "/" e "-" e etc.
         private String nome;

         // Constantes inteiras que definem o status
         public static final int DEMITIDO = 0;
         public static final int CONTRATADO = 1;
         public static final int EM_FERIAS = 2;

         public Empregado(){  
          
         }  
      
         // Construtor sobrecarregado com passagem de parâmentros.
         public Empregado(String name, double salario, int status, String cpf) {  
                setName(name);  
                setSalario(salario);  
                setStatus(status);  
                setCpf(cpf); 
         }  
    
         public String getNome() {  
               return nome;  
         }  
  
         public void setNome(String nome) {  
              this.nome = nome;  
         } 
  
         public double getSalario() {  
             return salario;  
         }  
  
         public void setSalario(double salario) {  
              this.salario = salario;  
         }  
  
         public int getStatus() {  
              return status;  
         }  
  
         public void setStatus(int status) {  
              this.status = status;  
         }  
  
         public String getCpf() {  
             return cpf;  
         }  
  
         public void setCpf(String cpf) {  
             this.cpf = cpf;  
         }  
}

Agora vejamos como ficou fácil de identificar se um empregado foi contratado, está de férias ou foi demitido.

     public class Teste {  
    
           public static void main(String[] args) {  
                 // Atribuindo seus valores diretamente na classe Empregado    
                 Empregado em = new Empregado ("Alexandre", 100.0, Empregado.CONTRATADO, 254684154);  
  
                // Agora de acordo com o estatus, voce pode imprimir desta forma  
               if (em.getStatus() == Empregado.CONTRATADO){  
                    System.out.println("----------Funcionários Contratados----------");  
                    System.out.println(em.getNome()+em.getSalario()+em.getCpf());  
               }  
           }  
   }

Repare como o seu projeto ficou mais enxuto, com menos código, pois uma classe (EmpregadoStatus) não precisou ser escrita, economizando código e espaço em bytecodes. :idea:

Além disso, na hora de atribuir ou comparar o valor se o Empregado foi contratado, está de férias ou foi demitido, ficou mais fácil identificá-lo com as constantes com os seus respectivos nomes, do que com seus valores booleanos, não é mesmo 8)

Lembre-se que através de uma singularidade, DEUS criou todo este Universo maravilhoso.