Jump to content
ole1990

Problema Construtor objectos

Recommended Posts

ole1990

Boa noite,

Ao querer retornar um objecto empregado quem tem como atributo (Primeironome, UltimoNOme e uma hora do tipo data [tipo data sendo eu que o criei numa outra classe])

O meu programa da-me erro ao retornar o objecto empregado (Supostamente é por causa do constructor)

tem aqui a classe on vai ser retornado o Empregado:

package empregado;

public class TesteEmpregado {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      Empregado emp1;
      emp1= Empregado.introduzirempregado();

        // TODO code application logic here
    }
}

E aqui a classe do objecto empregado

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package empregado;

import utilitarios.*;
import javax.swing.JOptionPane;


public class Empregado {

    private String primNome;
    private String ultnome;
    private Data dataContrato;
  

    public Empregado(String PN, String UN) {
        primNome = PN;
        ultnome = UN;
    }

    public Empregado(String PN, String UN, int a, int m, int d){
        this(PN, UN);
        dataContrato = new Data(a, m, d);
    }
public Empregado(String PN, String UN, Data dataaa){
        this(PN, UN);
        dataContrato = dataaa;
    }
    public static Empregado introduzirempregado() {
        int PN = Integer.parseInt(JOptionPane.showInputDialog("Hora: "));
        int UN = Integer.parseInt(JOptionPane.showInputDialog("Minutos: "));
        
        Data dadatacontra = Data.lerData();
  
        return new Empregado(PN, UN, dadatacontra);
    }
}

Onde o erro está na ultima linha

Share this post


Link to post
Share on other sites
Draakar

Quando chamas o construtor eles espera Strings não inteiros, os formatos tem de ser iguais!

Share this post


Link to post
Share on other sites
ole1990

mas mesmo que meta só

public static Empregado introduzirempregado() {
Empregado e1
        int PN = Integer.parseInt(JOptionPane.showInputDialog("Hora: "));
        int UN = Integer.parseInt(JOptionPane.showInputDialog("Minutos: "));
        
        Data dadatacontra = Data.lerData();
  
        return e1(PN, UN, dadatacontra);
    }

Ele diz-me que tenho o mesmo erro.

Share this post


Link to post
Share on other sites
Draakar

O que interessa não são os nomes (estes podem ser completamente distintos) mas sim o tipo!

Share this post


Link to post
Share on other sites
ole1990

Não porque o objectivo desse método é pedir ao utilizador os valores das instâncias

Tenho aqui o que acabei de modificar (nesse metodo):

package empregado;

import utilitarios.*;
import javax.swing.JOptionPane;

/**
*
* @author Diogo Leite
*/
public class Empregado {

    private String primNome;
    private String ultnome;
    private Data dataContrato;
    private Tempo horaEntrada;
    private Tempo horaSaida;

    public Empregado(String PN, String UN) {
        primNome = PN;
        ultnome = UN;
    }

    public Empregado(String PN, String UN, int a, int m, int d, int hentrada, int minentrada, int hsaida, int minsaida) {
        this(PN, UN);
        dataContrato = new Data(a, m, d);
        horaEntrada = new Tempo(hentrada, minentrada);
        horaSaida = new Tempo(hsaida, minsaida);
    }

    public static Empregado introduzirempregado() {
        
        String PN = (JOptionPane.showInputDialog("Primeiro nome: "));
        String UN = (JOptionPane.showInputDialog("Ultimo Nome: "));

        Data dadatacontra = Data.lerData();
        Tempo horaEntrada = Tempo.lerTempo();
        Tempo horaSaida = Tempo.lerTempo();

        return emp1(PN, UN, dadatacontra, horaEntrada, horaSaida);
    }

Share this post


Link to post
Share on other sites
Draakar

para ja falta o new depois do return porque queres criar um objecto novo.

E continuas sem satisfazer nenhum dos construtores..

por exemplo

public 
Empregado (String nome, int idade){

}

String nome = "ze";
int idade = 2;
//para criar um novo empregado tens de fazer
Empregado m = new Empregado(nome, idade);//Exactamente o que o construtor pede uma String primeiro e depois um inteiro

Share this post


Link to post
Share on other sites
ole1990

No precebi o facto de o meu objecto não estar a satesfazer os contrutores,

tem:

uma String

Uma String

Um objecto do tipo Data (que tem tres ints)

Um objecto do tipo Tempo (que temp dois ints)

Um objecto do tipo Tempo (que tem dois ints)

e no fim ele retorna: return new Empregado(PN, UN, dadatacontra, horaEntrada, horaSaida);

?

Share this post


Link to post
Share on other sites
Draakar

Um Objecto é uma variavel do tipo Objecto! não inteiro, string(a pesar de poder conte-los) podes dar bem a volta a isso fazendo dentro do objecto gets da variavel que pretendes

Share this post


Link to post
Share on other sites
socopo

um à parte, String também é um objecto  :)

certamente que já sabem, ou caso contrario, já se tinham questionado o porquê de String começar por letra maiúscula ao contrário de todos os tipos de variáveis em Java.

Share this post


Link to post
Share on other sites
brunoais

Estou confuso... Qual é o problema afinal?

Se não é afirmado qual é o erro como é que eu sei qual é o problema no "}"?

Já estive a contar os {} e está correcto. Qual é o erro?

Duas linhas antes do fim tens:

return new Empregado(PN, UN, dadatacontra);

Não tens uma construtor que receba:

(int, int, Data). Tens que arranjar um tb ou alterar essa criação de objecto.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
ole1990

Boa tarde a todos,

depois de vario tempo consegui corrigir, ta aqui a solução caso possa servir para outros. obriga pela ajuda :D

package empregado;

import utilitarios.*;
import javax.swing.JOptionPane;

public class Empregado {

    private String primNome;
    private String ultnome;
    private Data dataContrato;
    private Tempo horaEntrada;
    private Tempo horaSaida;


    public Empregado(String PN, String UN) {
        primNome = PN;
        ultnome = UN;
    }

    //podes apagar
//    public Empregado(){}
//
//    public void INSERIR(){
//     primNome = "teste";
//    ultnome = "teste2";
//    dataContrato = Data.lerData();
//   horaEntrada= Tempo.lerTempo();
//    horaSaida= Tempo.lerTempo();
//
//
//    }
    public Empregado(String PN, String UN, int a, int m, int d, int hentrada, int minentrada, int hsaida, int minsaida) {
        this(PN, UN);
        dataContrato = new Data(a, m, d);
        horaEntrada = new Tempo(hentrada, minentrada);
        horaSaida = new Tempo(hsaida, minsaida);
    }
//A e B
    public Empregado(String PN, String UN, Data dataContrato, Tempo horaEntrada, Tempo horaSaida) {
        primNome = PN;
        ultnome = UN;
        this.dataContrato = dataContrato;
        this.horaEntrada = horaEntrada;
        this.horaSaida = horaSaida;
    }


//C
    public static Empregado introduzirempregado() {
        

        String PN = JOptionPane.showInputDialog("Primeiro nome: ");
        String UN = JOptionPane.showInputDialog("Ultimo Nome: ");
        Data dadatacontra = Data.lerData();
        Tempo horaEntrada = Tempo.lerTempoo();
        Tempo horaSaida = Tempo.lerTempoo();

        return new Empregado(PN,UN,dadatacontra,horaEntrada,horaSaida);
    }
    //D
        public String toString() {
        String frase="";
        frase = "Primeiro Nome: " + primNome + " Ultimo Nome: " + ultnome + " Data do Contrato: "+"/n";
        frase += "Data Contrato" + dataContrato.toString()+ "Hora Entrada"+ horaEntrada.toString()+"/n";
        frase += "data de Saída"+ horaSaida.toString();
        return frase;
    }
  //E
        public Empregado(int hor, int minutos){
            horaEntrada.setTempo(hor, minutos, 0);
            horaSaida.setTempo(hor, minutos, 0);
        }
        public Tempo HorasTrabalho(){
            int diferenca=0;
                diferenca=horaSaida.differencasegundos(horaEntrada);
             return new Tempo(diferenca);
    }
        public int Datacontracto(){
            int diferencadias=0;
            diferencadias=dataContrato.contaDias();
            System.out.println(diferencadias);
            return diferencadias;
        }

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.