Olá, sou bastante novato no Java e em SOO, estudo pela apostila da Caelum e encontrei bastante dificuldade quando fui resolver um exercício em OO. Apesar de não gostar de pedir isso, gostaria da resolução completa, ja que pela minha enorme quantia de duvidas vai ser bem mais proveitoso pra mim analizar a resolução por completo. Ai segue a atividade:
Modele um funcionário. Ele deve ter o nome do funcionário, o departamento onde trabalha, seu salário
(double), a data de entrada no banco (String), seu RG (String) e um valor booleano que indique se o
funcionário ainda está ativa na empresa no momento ou se já foi mandado embora.
Você deve criar alguns métodos de acordo com sua necessidade. Além deles, crie um método bonifica que
aumenta o salario 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.
crie um método bonifica que aumenta o salario 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.
O melhor seria você postar aqui o código que você já escreveu até agora, assim a gente pode identificar melhor em que ponto do exercício você “empacou”.
É lógico que esse exemplo é muito simplificado; o ideal seria você fazer algumas verificações nesse método como, por exemplo, se o valor passado é um número negativo.
Opa muito obrigado Thiago, tive um avanço bastante significativo agora, estou entendendo bem mais como funcionam os metódos. Como esse seu exemplo fiz uns testes aqui.
Você poderia mandar mais alguns exemplos simples de metódos que eu poderia utilizar nessa questão??
Bom seguindo a dica do [color=darkblue] thiagobaptista [/color]
você pode criar outra classe TestFuncionario dessa maneira
[code]public class TestFuncionario
{
public static void main(String args[])
{
Funcionario obj_funcionario = new Funcionario();
obj_funcionario.reajustarSalario(1000);/* o valor que esta em parentes é o parametro
*/
}
}[/code]
no metodo q o [color=darkblue] thiagobaptista [/color]coloquei um [color=darkblue]System.out.println[/color] para poder ver o reajuste.
Dessa maneira
Sim sim, eu estava realizando vários testes, estou aprendeno bastante.
Alguem poderia dar uns exemplos do comando IF nas classes??
por exemplo nessa classe:
public class funcionario {
String nome = "Hegaja";
int departamento;
double salario;
String entradaBanco;
String RG;
boolean ativo = true;
int desempenho;
}
Se a pessoa tiver um desempenho maior que 20, apareça a mensagem: “merece um aumento”, por exemplo.
Só um toque, Grohl: a linguagem Java tem uma convenção de códigos e, segundo ela, a sua variável “obj_funcionario” deveria ser escrita assim: “objFuncionario”, ou seja, tudo junto, com a primeira letra minúscula e as demais primeiras letras das palavras em maiúsculo, o que é conhecido como camel case.
Aliás, devemos sempre procurar nomes que tenham significado e tornem nosso código fácil de ler. Por que não nomear essa variável como “objetoFuncionario”, ou “objetoRepresentandoUmFuncionario” ou até mesmo simplesmente “funcionario”?
Ok, e se eu quiser complementar esse codigo do If para quando o desempenho for mais que 20 seu salario seja aumentado em 100, por exemplo, e caso seja menor que 20 o boolean fique false. (no default coloquei como true)
if(desempenho>20) { //verifica a condição (desempenho maior 20) se for verdadeira executa tudo que tiver entre essas chaves
salario+=100;
} else {// se não for executa tudo que tiver entre essas chaves aqui
ativo = false;
}
Devo ter errado algum nome de variável ou a síntese (essas IDE deixam agente mal acostumados. )
para isso você vai ter que limitar o acesso ao atributo desempenho apenas pelos métodos (criar métodos getter e setter) e no método setDesempenho(int desempenho)
colocar o if diretamente ou chamar um método para isso
[code]public class Funcionario { // nome de class pelo padão devem começar com
// maiusculas
// todos os atributos deveriam ser privados, mas vou mudar só o que é
// essencial
String nome;
int departamento;
private double salario; // não queres no teu programa qualquer um podendo
// fazer funcionario.salario = 1500000;
String entradaBanco;
String RG;
boolean ativo = true;
private int desempenho; // não queres que mudem o desenpenho sem passar pela
// verificação para mudar o salario
public void modificarSalario(double valorDoReajuste) {
salario += valorDoReajuste;
}
public double getSalario() { // metodo para ver o salario já que agora ele é
// privado
return salario;
}
public void modificarDesempenho(int modifDesempenho) {
this.desempenho += modifDesempenho;
if (desempenho > 20) { // verifica a condição (desempenho maior 20) se
// for verdadeira executa tudo que tiver entre
// essas chaves
modificarSalario(100);
} else {// se não for executa tudo que tiver entre essas chaves aqui
ativo = false;
}
}
public double getDesempenho() { // metodo para ver o desempenho já que agora
// ele é
// privado
return desempenho;
}
}[/code]
Tá ai o exemplo, mas cuidado ao testar mudei o nome da class de funcionario para Funcionario
Obs: Testei o if mas não encontrei problema com ele!