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.
Eu acredito que a melhor opção é você ir tentando e a medida que não for conseguindo ir postando o erro.
hegaja
Certo, o que está complicando é o seguinte:
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.
thiagobaptista
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”.
altitdb
Voce consegue identificar o que é um parametro e um metodo setter??
xD~~
hegaja
O problema é essse, eu não consigo fazer essas parte, so fiz a classe Funcionario:
Continuar para os métodos que está sendo o problema. Não sei cria-los e utiliza-los na questão.
thiagobaptista
Uma dica: aqui no fórum, coloque seu código entre as tags "quote", assim ele fica formatado de um jeito que facilita muito sua leitura. :wink:
public class funcionario {
String nome ;
int departamento;
double salario;
String entradaBanco;
String RG;
boolean ativo;
}
thiagobaptista
Digamos que eu tenha um Funcionário assim:
public class Funcionario {
String nome ;
int departamento;
double salario;
String entradaBanco;
String RG;
boolean ativo;
}
Um método que reajustasse o valor do salário, seria mais ou menos assim:
public void reajustarSalario(double valorDoReajuste) {
this.salario += valorDoReajuste;
}
É 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.
hegaja
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??
G
Grohl
Bom seguindo a dica do [color=darkblue] thiagobaptista [/color]
você pode criar outra classe TestFuncionario dessa maneira
publicclassTestFuncionario{publicstaticvoidmain(Stringargs[]){Funcionarioobj_funcionario=newFuncionario();obj_funcionario.reajustarSalario(1000);/* o valor que esta em parentes é o parametro */}}
no metodo q o [color=darkblue] thiagobaptista [/color]coloquei um [color=darkblue]System.out.println[/color] para poder ver o reajuste.
Dessa maneira
publicvoidreajustarSalario(doublevalorDoReajuste){this.salario+=valorDoReajuste;System.out.println("Valor do reajuste"+salario);}
entao tenta fazer a verificação q o thiagobaptista pedi
hegaja
Sim sim, eu estava realizando vários testes, estou aprendeno bastante.
Alguem poderia dar uns exemplos do comando IF nas classes??
Se a pessoa tiver um desempenho maior que 20, apareça a mensagem: “merece um aumento”, por exemplo.
G
Grohl
if (desempenho > 20 )
System.out.println("Merece um aumento");
ai é so colocar no metodo
thiagobaptista
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”?
G
Grohl
Valeu [color=darkblue]thiagobaptista[/color] pela dica sempre é bom
hegaja
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)
InSeOfKn
Bem vindo ao GUJ!!
Bom Vamos ao if
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;
}
Até!
hegaja
Opa, olá. Eu executei o código acima mas ele ta com erro na linha do If e do Else...
meu class ta assim:
public class funcionario {
String nome;
int departamento;
double salario;
String entradaBanco;
String RG;
boolean ativo = true;
int desempenho;
public void modificarSalario(double valorDoReajuste) {
this.salario += valorDoReajuste;
}
public void modificarDesempenho (int modifDesempenho){
this.desempenho += modifDesempenho;
}
}
O que eu quero é so isso, que ao modificar o desempenho apareça o aumento do salário e depois que ele fique boolean false...
InSeOfKn
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
Volto a postar com um exemplo
InSeOfKn
publicclassFuncionario{// nome de class pelo padão devem começar com// maiusculas// todos os atributos deveriam ser privados, mas vou mudar só o que é// essencialStringnome;intdepartamento;privatedoublesalario;// não queres no teu programa qualquer um podendo// fazer funcionario.salario = 1500000;StringentradaBanco;StringRG;booleanativo=true;privateintdesempenho;// não queres que mudem o desenpenho sem passar pela// verificação para mudar o salariopublicvoidmodificarSalario(doublevalorDoReajuste){salario+=valorDoReajuste;}publicdoublegetSalario(){// metodo para ver o salario já que agora ele é// privadoreturnsalario;}publicvoidmodificarDesempenho(intmodifDesempenho){this.desempenho+=modifDesempenho;if(desempenho>20){// verifica a condição (desempenho maior 20) se// for verdadeira executa tudo que tiver entre// essas chavesmodificarSalario(100);}else{// se não for executa tudo que tiver entre essas chaves aquiativo=false;}}publicdoublegetDesempenho(){// metodo para ver o desempenho já que agora// ele é// privadoreturndesempenho;}}
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!
hegaja
opa olá, em relação a nomeclaura e as boas regras de digitação eu sei que existem, mas ainda não fui atras de aprender (comecei no jova ontem…)
hmmm resumidamente o If era so colocar dentro do public void modificarDesempenho…
que nubada auehuaheuhaeuhuhae, normal*
quero agradecer a todos e quero dizer que eu realmente aprendi mt hj, amanhã irei continuar com mais duvidas e fome de aprendizagem!
InSeOfKn
fome de aprendizagem isso realmente é importante, mas sobre os padrões de nomenclatura eu acho bom começar desdo inicio pois fica ais fácil pra todo mundo pois a legibilidade aumenta ficando mais fácil pra você e para nós (em caso de duvida) localizar um erro!
E se tiver duvida! Joga no Google e se mesmo assim não achar nada que te agrade manda para o GUJ
Até e Boa Sorte no mundo java!
hegaja
Certo certo, sim senhor, amanhã irei começar com a nomeclatura.
Você acha que devo dar uma olhada em UML ou isso é avançado??
InSeOfKn
Também não sou especialista em java, to arressem começando
No inicio não falo para ir a fundo na nomenclatura, mas já é bom se acostumar com
E sobre UML já li poucas coisas mas nunca fiz um diagrama um diagrama de Class, por exemplo. Não posso dizer se é recomendado estudar isso ou não no começo!