Muitas duvidas em um exercício

22 respostas
hegaja

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.

22 Respostas

otaviojava

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:

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.

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

Bom seguindo a dica do [color=darkblue] thiagobaptista [/color]

você pode criar outra classe TestFuncionario dessa maneira

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       
                                                        */
      }

}
no metodo q o [color=darkblue] thiagobaptista [/color]coloquei um [color=darkblue]System.out.println[/color] para poder ver o reajuste. Dessa maneira
public void reajustarSalario(double valorDoReajuste) {   
  
    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??

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.

G

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

G

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

e meu main:

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

}

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

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

}

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 :smiley:

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 :smiley:

No inicio não falo para ir a fundo na nomenclatura, mas já é bom se acostumar com

NomeDeClass
nomeDeVariavel
nomeDeMetodo
NOME_DE_CONSTANTE

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!

Bom estudos!

Criado 26 de janeiro de 2011
Ultima resposta 27 de jan. de 2011
Respostas 22
Participantes 6