3
respostas

Nao consigo instaciar a classe data no main.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Orientacao_Objeto;


/**
 *
 * @author Wugzz
 */
public class Ex9 {

    static class funcionario {
        String nome;
        String departamento;
        double salario;
        data dataDeEntrada;
        String RG;

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

        double calculaGanhoAnual() {
            return salario * 12;
        }

        void mostra (){
               System.out.println("Data de entrada: " + dataDeEntrada.getFormatada());
        }

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

        public void preencheData(int _dia, int _mes, int _ano){
            dia = _dia;
            mes = _mes;
            ano = _ano;
        }

        String getFormatada(){
            return dia + "/" + mes + "/" + ano;
        }

        }
    }   

    public static void main(String[] args) {
            funcionario robson = new funcionario();
            robson.nome = "Robson Nunes";
            robson.salario = 1800;

            robson.dataDeEntrada = new data();
            robson.dataDeEntrada.preencheData(28, 10, 1999);
            System.out.println(robson.dataDeEntrada);
    }


}
3 respostas

Qual a mensagem de erro? As três classes estão em um único arquivo?

A primeira coisa que estou vendo é que, se tudo isso estiver dentro de um só arquivo vai dar problema. Sua classe data não pode ser pública. Só pode haver uma classe pública por arquivo

Bom dia Wagner, tudo bem ? Então cara, analisando seu código verifiquei algumas falhas, fiz alguns ajustes e testei. Você estava usando a classe funcionário como estática, o nome da classe funcionário você deixou como "Ex9", então quando você for instanciar um objeto dessa classe, terá que usar esse nome. Bom abaixo segue o código, caso fique alguma duvida, basta deixar o comentário que eu explico com mais detalhes.

Classe Data:

package Orientacao_Objeto;

public class Data {
    int dia;
    int mes;
    int ano;
    public void preencheData(int _dia, int _mes, int _ano) {
        dia = _dia;
        mes = _mes;
        ano = _ano;
    }
    String getFormatada() {
        return dia + "/" + mes + "/" + ano;
    }
}

Classe Funcionário (que no caso, você deu o nome de Ex9):

package Orientacao_Objeto;
class Funcionario {
        String nome;
        String departamento;
        double salario;
        Data dataDeEntrada;
        String RG;

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

        double calculaGanhoAnual() {
            return salario * 12;
        }

        void mostra (){
               System.out.println("Data de entrada: " + dataDeEntrada.getFormatada());
        }
}

Classe Main (teste):

package Orientacao_Objeto;
class main {
    public static void main(String[] args) {
        Funcionario robson = new Funcionario();
        robson.nome = "Robson Nunes";
        robson.salario = 1800;

        robson.dataDeEntrada = new Data();
        robson.dataDeEntrada.preencheData(28, 10, 1999);
        System.out.println(robson.dataDeEntrada);
    //Esse System.out.print vai imprimir a referencia da memoria, caso queira imprimir a data mesmo, basta colocar "robson.dataDeEntrada.ano"  e assim por diante, ou sobrescrever o toString.
    }
}

Um abraço, espero ter ajudado. Fico a disposição :) .

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software