Muitas duvidas em um exercício

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.

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.

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”.

Voce consegue identificar o que é um parametro e um metodo setter??

xD~~

O problema é essse, eu não consigo fazer essas parte, so fiz a classe Funcionario:

public class funcionario {

    String nome ;
    int departamento;
    double salario;
    String entradaBanco;
    String RG;
    boolean ativo;

}

Continuar para os métodos que está sendo o problema. Não sei cria-los e utiliza-los na questão.

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:

[code]public class funcionario {

String nome ;
int departamento;
double salario;
String entradaBanco;
String RG;
boolean ativo;

} [/code]

Digamos que eu tenha um Funcionário assim:

[code]public class Funcionario {

String nome ;
int departamento;
double salario;
String entradaBanco;
String RG;
boolean ativo; 

}[/code]

Um método que reajustasse o valor do salário, seria mais ou menos assim:

[code]public void reajustarSalario(double valorDoReajuste) {

this.salario += valorDoReajuste;

}[/code]

É 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

[code]public void reajustarSalario(double valorDoReajuste) {

this.salario += valorDoReajuste; 
System.out.println("Valor do reajuste"+salario);

} [/code]
entao tenta fazer a verificação q o thiagobaptista pedi

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.

if (desempenho > 20 ) System.out.println("Merece um aumento");
ai é so colocar no metodo

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”? :wink:

Valeu [color=darkblue]thiagobaptista[/color] pela dica sempre é bom

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)

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é!

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

e meu main:

[code]public class Main {

public static void main(String[] args) {

funcionario F1;
F1 = new funcionario();

    System.out.println(F1.salario);
    F1.modificarSalario(-200);
    System.out.println(F1.salario);
    F1.modificarSalario(1000);
    System.out.println(F1.salario);
    F1.modificarDesempenho(20);
    System.out.println(F1.salario);
    System.out.println(F1.ativo);
    F1.modificarDesempenho(-40);
    System.out.println(F1.salario);
    System.out.println(F1.desempenho);
    System.out.println(F1.ativo);

}

}[/code]

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…

Devo ter errado algum nome de variável ou a síntese (essas IDE deixam agente mal acostumados. :smiley: )

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

[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!

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!