Duvida ao criar o metodo main

5 respostas
X

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

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

}

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

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

5 Respostas

discorpio

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:

X

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

VLW!!!

discorpio

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

VLW!!!

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

X

OK VLW!!!

discorpio

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.

Criado 7 de outubro de 2011
Ultima resposta 8 de out. de 2011
Respostas 5
Participantes 2