Ajudem-me a resolver um exercício de método por favor

7 respostas
W

O exercício é o seguinte:
1-Modele um funcionário. Ele deve ter o nome do funcionário, o departamento onde trabalha, seu salário, a data de entrada no banco(String), seu RG(String), e um valor booleano que indique se o funcionário está na empresa no momento ou se já foi embora.
Você deve criar alguns métodos de acordo com o que você sentir necessidade. Além deles, crie um método “bonifica” que aumenta o “salário” do funcionário de acordo com o parâmetro passado como argumento. Crie também um método “demite” que não recebe parâmetro algum, só modifica o valor booleano indicando que o funcionário não trabalha mais aqui.
A idéia aqui é apenas modelar, isto é, só identifique que informações são importantes, e o que um funcionário faz.

Acima está o enunciado do exercicio, tudo que consegui fazer esta abaixo na parte de código…comecei com java a 2 semanas, sózinho com uma apostila, então entendam se algo for ridículo para vocês…

import java.sql.Date;

public class Funcionario {
	double salario;
	String nome;
	String depart;
	String dtEnt;
	String rg;
	boolean ausente;

	
	
	//metodo que declara o NOME
	void nome() {
		nome = "Sansung";
		System.out.println(nome);
	}
	
	//declara o departamento
	void depart() {
		depart = "Informática";
		System.out.println(depart);
	}
	
	//declara a data de entrada
	void dtEnt() {
		dtEnt = "22/09/1990";
		System.out.println(dtEnt);
	}
	
	void rg() {
		rg = "[CPF removido]";
		System.out.println(rg);
	}
	
	void ausente() {
		int i;
		i = 1;
		if (i==1) {
			System.out.println("Permanece na empresa");
		}
		else {
			System.out.println("Saiu da empresa");
		}
	}
	
	void demite() {
		
	}
	
	void bonifica(double valor) {
		

	}

}

Muito obrigado pela ajuda…

7 Respostas

C

Olá!

Amigo, acho que vc está com alguns problemas conceituais...
Na classe que você fez, vc inicializa argumentos direto dentro do método com valores pré-definidos. Com isso sua classe fica amarrada e se vc quiser fazer outro objeto diferente, por exemplo un funcionário com outro nome, etc, teria que escrever um nova classe. nada produtivo, hein?!

Você fez assim:

//metodo que declara o NOME
 	void nome() {
 		nome = "Sansung";
 		System.out.println(nome);
 	}
 	
 	//declara o departamento
 	void depart() {
 		depart = "Informática";
 		System.out.println(depart);
 	}

//e assim por diante...
[/code}

Mas deveria ter feito assim

[code]
//metodo que declara o NOME
 	public void setNome(String n) {
 		nome = n;
 		System.out.println(nome);
 	}
 	
 	//declara o departamento
 	public void setDepart(String d) {
 		depart = d;
 		System.out.println(depart);
 	}

//e assim por diante

Nos exemplos acima, o método recebe um argumento e para escrever nos valores da classe. Mudei o nome dos métodos, colocando "set" no começo porque essa função é pra escrever nos argumentos da classe. Para ler estes argumentos, vc poderia usar

public String getNome()
{
   return nome;
}

//e assim por diante....

De resto é só estudar orientaçào a objeto memso cara!

boa sorte!

W

muito obrigado novamente pela ajuda, mas cara, poderia me dar uma forcinha na seguinte parte do exercicio?

…valor booleano que indique se o funcionario está na empresa no momento ou se já foi embora…crie também um método “demite” que não recebe parâmetro nenhum, só modifica o valor booleano indicando que o funcionário não trabalha mais aqui.

C
public class Funcionario {
   private Boolean demitido = false; //se for false é porque o funcionário ainda esta na empresa

   public Boolean estaDemitido() {
      return Demitido;
   }

   public void demite() {
      demitido = true;
   }

}
W

essa parte do código:

public Boolean estaDemitido() {
       return Demitido;
    }

o Demitido está com o D maiúsculo, aqui diz que não existe…

C

vc pode definir os nomes do métodos da maneira como preferir… esse nome esta Demitido em que criei… é só declarar assm como esta dentro da sua classe

M

Embora seja possível dar o nome que se queira a um campo de uma classe, há uma padronização aceita e fortemente encorajada pela cominidade de programadores java que diz que indentificadores (campos de classe, variaveis e métodos) devam ser escritos com a primeira letra minúscula e a primeira letra dou outras palavras que compor o nome do identificador sejam maiúsculas. Essim como para classes, o padrão é todas as primeiras letras serem maiúsculas, inclusive a primeira de todas. Por exemplo:

public class umaclassequalquer//Desencorajado (Aconselha-se "UmaClasseQualquer"
{
	private String Nome; //Desencorajado (Aconselha-se "nome")
	private String nomeDoMeio; //OK
	private Date inicio; //OK
	private int numerodecontrole; //Desencorajado (Aconselha-se "numeroDeControle")
	
	public void criarApresentacao(){ //OK
		...
	}

	public void DetonarNomenclaturapadrao(){//Desencorajado (Aconselha-se "detonarNomenclaturaPadrao()"
		...
	}

	private class UmaClasseInternaQualquer{//OK
	}
}

Sendo assim, aconselha-se que vc transforme o trecho…

public Boolean estaDemitido() {
   return Demitido;
}

… em …

public Boolean estaDemitido() {
   return demitido;
}

… e deixar o trecho …

private Boolean demitido = false; //se for false é porque o funcionário ainda esta na empresa
… do jeito que está.

qq dúvida, pergunte mais, ok!

P

De uma olhada, veja se não consegue aplicar alguma coisa:

import java.util.Date;

public class Funcionario {
 	private double salario;
 	private String nome;
 	private String depart;
 	private String rg;
 	private Date dtEntrada;
 	private Date dtSaida; 	
 	private boolean ausente;
 
 	// constroi sem nome e salario zero
 	public Funcionario() { this(null,0.0); } 
 	
 	// constroi com nome mas salario zero
 	public Funcionario(String _nome) { this(_nome,0.0); }
 	
 	// constroi com nome e salario
 	public Funcionario(String _nome,double _sal) {
 		this.nome = _nome;
 		this.ausente = false;
 		this.dtEntrada = new Date();
 		this.salario = _sal;
 		this.depart = "--preencher--";
 		this.rg = "--preencher--"; 		
 		this.dtSaida = null; 		
 	}
 
 	// demite o vagabundo
 	public void demite() { this.dtSaida = new Date();this.ausente = true;}

 	// readmite o vagabundo
 	public void readmite() {this.dtEntrada = new Date(); this.ausente = false; }
 	
 	// da X reais a mais pro cara
 	public void bonifica(double dimdim) { this.salario += dimdim; }
 	
 	// util pra vc mandar imprimir o funcionario
 	// experimente fazer um System.out.prinln(f) 
 	// onde f é uma instancia do seu funcionario
 	public String toString() {
 		return   "Nome    : " + this.nome 
 		      +"\nRG      : " + this.rg
 		      +"\nDepto   : " + this.depart
 		      +"\nEntrada : " + this.dtEntrada
 		      +"\nSalario : " + this.salario
 		      +"\nStatus  : " + ((this.ausente) ? "Afastado em " + this.dtSaida : "Ativo");
 	}
 	
        // nem todos os metodos podem ser necessarios,
        // implemente aqueles que são ;-)
 	public void setNome(String _nome) {this.nome = _nome;}
 	public void setRg(String _rg) {this.rg = _rg;}
 	public void setDepto(String _depto) {this.depart = _depto;}
 	public void setEntrada(Date _in){this.dtEntrada = _in;}
 	public void setSaida(Date _out) {this.dtSaida = _out;}
 	public void setSalario(double _s) { this.salario = _s;}
 	
 	public String getNome() {return this.nome;}
 	public String getRg() {return this.rg;}
 	public String getDepto() {return this.depart;}
 	public Date getEntrada() {return this.dtEntrada;}
 	public Date getSaida() {return this.dtSaida;}
 	public double getSalario() {return this.salario;}
 	
 	public static void main(String [] args) {

                // apenas exercitando...
 		Funcionario a = new Funcionario();
 		Funcionario b = new Funcionario("Reginaldo");
 		Funcionario c = new Funcionario("Zumira", 1000.00);

 		a.setNome("Marco nanini");
 		a.setDepto("Depto1");
 		a.setRg("493874923");
 		
 		b.demite();
 		
 		c.bonifica(100.00);
 		
 		a.demite();
 		a.readmite();
 		
 		System.out.println(a);
 		System.out.println(b);
 		System.out.println(c);
 	}
 }
Criado 26 de junho de 2006
Ultima resposta 26 de jun. de 2006
Respostas 7
Participantes 4