Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Dúvida no Ex. 2 da Aula 3 - Começando com Orientação a objetos

No código abaixo eu fiz recebeAumento e o calculaGanhoAnual da forma apresentada abaixo, deu o mesmo resultado, porém é aconselhável usar desta forma?

Tem alguma coisa prejudicial, profissionalmente quando tiver no mercado? Como faço para pensar mais resumido a programação da forma que sempre é mostrado nas ajudas do curso?

obs: professor do Curso e outros aguardo suas respostas ... Obrigado!

public class Funcionario {

        String nome;
        String dtEntrada;
        String rg;
        double salario;

        // seus outros atributos e métodos

        void recebeAumento(double aumento) {
            // calcula o salario com aumento
            this.salario = salario + aumento;
        }

        double calculaGanhoAnual() {
            // calcula o Salário * 12, ou seja, ganho anual
            this.salario = salario * 12;
            return salario;
        }
}
11 respostas

Olá Marcos,

Pelo que entendi, no método calculaGanhoAnual você armazenou o ganho anual na variável 'salario'. Isto estaria errado, pois você estaria alterando o salário do funcionário, quando não é essa a intenção do cálculo. Você poderia realizar o cálculo e retornar o resultado diretamente:

return salario * 12;

Ou utilizar uma variável local:

double ganhoAnual = salario * 12;

return ganhoAnual;

Entendi, no caso seria somente para eu mostrar o resultado.

Obrigado pela interação.

PS: é possível o professor ou algum supervisor do Curso estar enviando FeedBacks quando envio os meus códigos pelo Alura.

Gostaria de receber dicas e conselhos de cada código isso poderia me fazer crescer muito... (poderia ser mais automático sem ter que sempre entrar em Fórum ou coisa assim)

Oi Marcos,

Não há "certo ou errado". Sempre que você tomar uma decisão, precisará avaliar os prós e os contras. E, claro, quanto mais experiência, melhor você vai conseguir levantar esses pontos.

Sobre responder cada exercício individualmente, apesar de tentarmos, a quantidade de respostas é grande. E muitos dos exercícios são bem diretos, não precisam tanto do nosso feedback. Por isso, o melhor canal é sempre abrir aqui no fórum! :)

Um abraço!

Entendi...

Outra dúvida. Qual a melhor forma de memorizar e assimilar tudo o que estou estudando para me tornar um excelente programador?

Marcos,

Praticar, praticar e praticar! :)

Invente projetos particulares e saia programando! Aí, pare e olhe pro código, e reflita sobre ele!

Bem, é assim que eu faço!

Um abraço!

Amigos, estou tentando fazer o exercício mesclando com o vídeo e tentando acrescentar alguns dados, mesmo que poucos. Acontece que na hora de rodar ele esta me dizendo que não há método main na classe Funcionario. Caramba, já tentei visualizar o erro mas ainda não consegui. Abaixo está como estou tentando:

class Funcionario { String nome; String departamento; double salario; String dataEntrada; long rg;

void recebeAumento(double aumento) { // o que fazer aqui dentro? this.salario += aumento; }

double calculaGanhoAnual() { // o que fazer aqui dentro? return this.salario * 12; } }

class TestaFuncionario { public static void main(String[] args) { Funcionario f1 = new Funcionario(); f1.departamento = "coint"; f1.salario = 100.0; f1.dataEntrada = "18102005"; f1.rg = 1610607; f1.nome = "Henrique Fontenelle"; f1.recebeAumento(50);

System.out.println(f1.departamento);

} }

Amigos, estou tentando fazer o exercício mesclando com o vídeo e tentando acrescentar alguns dados, mesmo que poucos. Acontece que na hora de rodar ele esta me dizendo que não há método main na classe Funcionario. Caramba, já tentei visualizar o erro mas ainda não consegui. Abaixo está como estou tentando:

```class Funcionario { String nome; String departamento; double salario; String dataEntrada; long rg;

void recebeAumento(double aumento) { // o que fazer aqui dentro? this.salario += aumento; }

double calculaGanhoAnual() { // o que fazer aqui dentro? return this.salario * 12; } }

class TestaFuncionario { public static void main(String[] args) { Funcionario f1 = new Funcionario(); f1.departamento = "coint"; f1.salario = 100.0; f1.dataEntrada = "18102005"; f1.rg = 1610607; f1.nome = "Henrique Fontenelle"; f1.recebeAumento(50);

System.out.println(f1.departamento);

} }```

O método main está no TestaFuncionario, certo? Vc está executando a partir dele?

Sim, o método está na class TestaFuncionario, mas ele não gerou o TestaFuncionario.java

Henrique,

Isso acontece pois você deve ter nomeado o arquivo como Funcionario.java, então a JVM está procurando o método main na classe Funcionario.

Ou você coloca o método main na classe Funcionario, ou cria um novo arquivo TestaFuncionario.java (e consequentemente a classe TestaFuncionario) e o coloca lá, e aí você vai precisar importar a classe Funcionario nessa nova classe.

solução

Agora entendi, assisti o vídeo da aula novamente e percebi o que o Maurício Aniche fez. Acho que agora consegui.