Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Capitulo Começando com Orientação Objeto Exercícios 6,7,8 e 9.

Do capitulo Começando com Orientação a objetos, não consegui executar o código dos exercícios: 6, 7, 8 e 9.

Se Alguém por gentileza, puder me ajudar, agradeço de coração.
9 respostas

Boa noite Vicente, poste o sua dúvida para que eu possa ajudá-lo....

Boa noite! Theomar, as minhas duvidas ou dificuldades começam no Exercício 6 e vai até o Exercício 9. 

Estou postando o Exercício 6, acredito que se este funcionar, o restante irá executar.

Ao compilar a classe TestaFuncionariox ocorre os seguintes erros:

C:\Ambiente Alura>javac tstaFuncionariox.java
TestaFuncionariox.java:9: error: incompatible types
    F1.dataEntrada = new Data();  
    Required: String
    Found: Data

TestaFuncionariox.java:10: error: cannot find symbol
         F1.dataEntrada.preencheDataEntrada(15,01,2014);
         Symbol: method preencheDataEntrada(int,int,int);
         Location: variable dataEntrada of type String
2 errors


public class Data {
    int dia;
    int mes;
    int ano;

    void preencheDataEntrada (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
}

public class Funcionariox {
    String nome;
    Data dataEntrada;
    double salario;

    void recebeAumento(double aumento) {
        this.salario +=aumento;
    }

    void mostra1() {
        System.out.println("Nome f1.........: " + this.nome);
         System.out.println("Data Entrada f1.: " + this.dataEntrada);
         System.out.println("Salario Atual f1: " + this.salario);
    }

}

public class TestaFuncionariox {
    public static void main(String[] args) {

          Funcionario f1 = new Funcionario();
          f1.nome = "Vicente Paulo";
          f1.salario = 240.00;
          f1.recebeAumento(60);

        f1.dataEntrada = new Data();
        f1.dataEntrada.preencheDataEntrada(15, 01, 2014);
        f1.mostra1();
      }
}

Boa Tarde Vicente! Você nomeou sua classe como 'TestaFuncionariox' e quando está pedindo para compilar está digitando 'javac tstaFuncionariox.java' tente fazer 'javac TestaFuncionariox.java'.

Boa tarde Vicente, você criou sua classe como "public class Funcinonariox" e está instanciando como new Funcionario()

Theomar, tem muitas coisas estranhas no seu código.

1) O que o Fabio já falou: você está compilando tstaFuncionariox.java.

O arquivo tstaFuncionariox.java existe no seu computador ??

Se ele não existe a mensagem de erro seria que o arquivo não foi encontrado...

2) As 3 classes são púlicas. Por isto devem ser salvas nos arquivos

Data.java

Funcionariox.java

TestaFuncionariox.java

3) Como o Hugo já disse, você tem a classe Funcionariox, e não Funcionario.

Para que seu código funcione você deve ter 3 arquivos como segue:

Data.java

public class Data {
    int dia;
    int mes;
    int ano;

    void preencheDataEntrada (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
}

Funcionariox.java


public class Funcionariox {
    String nome;
    Data dataEntrada;
    double salario;

    void recebeAumento(double aumento) {
        this.salario +=aumento;
    }

    void mostra1() {
        System.out.println("Nome f1.........: " + this.nome);
         System.out.println("Data Entrada f1.: " + this.dataEntrada);
         System.out.println("Salario Atual f1: " + this.salario);
    }

}

TestaFuncionariox.java

public class TestaFuncionariox {
    public static void main(String[] args) {

          Funcionariox f1 = new Funcionariox();
          f1.nome = "Vicente Paulo";
          f1.salario = 240.00;
          f1.recebeAumento(60);

        f1.dataEntrada = new Data();
        f1.dataEntrada.preencheDataEntrada(15, 01, 2014);
        f1.mostra1();
      }
}

Compile os 3

javac Data.java

javac Funcionariox.java

javac TestaFuncionariox.java

para testar: java TestaFuncionariox

4) Outra coisa muito estranha: De onde saiu F1.dataEntrada = new Data(); ??? O java é case sensitive. No seu código não vi F1 em nenhum lugar...

Desculpe estava me referindo ao Vicente e não ao Theomar

Além disto, onde eu digo pulicas, leia-se públicas.

Realmente o único problema é chamar "new Funcionario()" no lugar de "new Funcionariox()"

Quanto ao "javac tstaFuncionariox.java" está correto pois o nome do arquivo e da classe principal (main) é tstaFuncionariox. Deve-se compilar pelo nome do arquivo e o colega estava fazendo isso correto, tanto que o compilador identifica um problema durante a compilação, ou seja, encontrou o arquivo.

solução!

Acabei de perceber mais uma coisa, o compilador acusa que tu chamou F1.dataEntrada e pelo teu código tu definiu a variável como f1. Cuidado que JAVA é case sensitive, ou seja f1 e F1 são coisas diferentes.

Obrigado! a todos, consegui entender e resolver a questão.