(Resolvido!) Usar objeto que está dentro do construtor, no método

13 respostas
igor972

Olá galera…

Gostaria de saber se tem como acessar um objeto que está no construtor para usálo dentro de um método.

O que quero fazer:

Na classe data, coloquei no Construtor, que irá pedir [color=red]dia, mes e ano[/color]. Na classe Professor, tenho que pedir a data de admissão, e depois exibir esta data no método Imprimir.

Se eu criar o objeto [color=red]fora do construtor Data[/color], ele primeiro irá pedir o dia, mes e ano, antes de pedir outras informações(nome etc)…
Por isso, fiz a instância da classe Data dentro do construtor Professor. Mas preciso usar o metodo Imprime do objeto Data, dentro do método Imprime do método Professor.

Putz, ficou confuso…

Talvez com o cógico alguem entenda…

Vejam no final da classe Professor.java o ultimo comentário. Acho que vão entender.

Data.java

import javax.swing.JOptionPane;

public class Data {

	
	int dia, mes, ano;
	
	
	Data(){
		
		String texto = JOptionPane.showInputDialog (null,"Entre com o DIA de admissão do professor: ");
		dia= Integer.parseInt(texto);		
		
		texto = JOptionPane.showInputDialog (null,"Entre com o MÊS de admissão do professor: ");
		mes= Integer.parseInt(texto);
		
		texto = JOptionPane.showInputDialog (null,"Entre com o ANO de admissão do professor: ");
		ano= Integer.parseInt(texto);
	}
	
	
	public void Imprime(){
		
		JOptionPane.showMessageDialog(null,"<html><body>Data de admissão: " + dia+"/"+ mes + "/"+ano);
		
	}

Professor.java

import javax.swing.JOptionPane;

public class Professor {

	
	//Atributos
	String nome, departamento;
	int admissao, registro;
	
	
	
	
	Professor(){
		nome = JOptionPane.showInputDialog (null,"Entre com o nome do professor: ");
		departamento = JOptionPane.showInputDialog (null,"Entre com o departamento do professor: ");
		
		/*
		String texto = JOptionPane.showInputDialog (null,"Entre com a data de admissão do professor: ");
		admissao= Integer.parseInt(texto);
		*/
		
		Data Data1 = new Data();
		
		String texto = JOptionPane.showInputDialog (null,"Entre com o registro do professor: ");
		registro= Integer.parseInt(texto);		
		
		
		
	}
	
	
	
	public void Imprime(){
		
		JOptionPane.showMessageDialog(null,"<html><body>Nome: " + nome + "<html><body><br>Departamento: "+ departamento + "<html><body><br>Registro: "+ registro);
		
      // queria usar o ***Data1.Imprime *** aqui! , mesmo aparecendo em uma janela diferente!


	}

Alguma luz?

Ah, isso é um exercício da faculdade:

Defina uma classe Professor com os dados: nome do professor, nome do departamento, data de admissão, número de registro. Inclua na classe um construtor para setar os dados e um método para imprimir o conteúdo.

Defina uma classe Data com os dados: dia, mês e ano.

Reescreva a classe Professor de forma que a data de admissão seja um objeto da classe Data.

Modifique a classe Data criada anteriormente para conter um construtor capaz de setar o dia, mês e ano e um método capaz de imprimir a data.

Acho que daria pra fazer legal usando o System.out.println, mas queria fazer usando o swing…

13 Respostas

rafaelviny

posta seu metodo main

porque lá provavelmente está o problema de chamar a data antes das infos dos professores

igor972

Ta na mão:

package Professor;

public class TesteProfessor {


	public static void main(String[] args) {
		
		Professor Professor1 = new Professor();
				
		Professor1.Imprime();
		

	}

}
rafaelviny

crie um construtor da classe data vazio

public Data(){}

dai vc pode acessar o metodo imprime sem problemas

igor972

Mas aí vai dar duplicidade.

rafaelviny

vc ta certo, iria dar duplicidade pq vc nao tem parametros de entrada

Data(boolean executa){  
           if(boolean executa == true){
         String texto = JOptionPane.showInputDialog (null,"Entre com o DIA de admissão do professor: ");  
         dia= Integer.parseInt(texto);         
           
         texto = JOptionPane.showInputDialog (null,"Entre com o MÊS de admissão do professor: ");  
         mes= Integer.parseInt(texto);  
           
         texto = JOptionPane.showInputDialog (null,"Entre com o ANO de admissão do professor: ");  
        ano= Integer.parseInt(texto);  
      }
    }

é uma ideia hahahaha

dai com o objeto data vc poderia acessar o metodo imprime

agora vc pode criar um construtor vazio :D

igor972

Estranho, está dizendo que o

if(boolean executa == true){

boolean está com a sintaxe errada =/

Sabe porque?

rafaelviny

tira o boolean hahahah

esqueci

igor972

Putz, verdade 2 booleans… kkkk

------------//-------------------

Então, criei o construtor vazio. Mas quando fui usar o método do objeto Data1, na classe professor, ainda pede o Objeto.

Professor.Java

Professor(){
		nome = JOptionPane.showInputDialog (null,"Entre com o nome do professor: ");
		departamento = JOptionPane.showInputDialog (null,"Entre com o departamento do professor: ");
		
		/*
		String texto = JOptionPane.showInputDialog (null,"Entre com a data de admissão do professor: ");
		admissao= Integer.parseInt(texto);
		*/
		
		Data Data1 = new Data();
		
		String texto = JOptionPane.showInputDialog (null,"Entre com o registro do professor: ");
		registro= Integer.parseInt(texto);		
		
		
		
	}
	


public void Imprime(){
		
		JOptionPane.showMessageDialog(null,"<html><body>Nome: " + nome + "<html><body><br>Departamento: "+ departamento + "<html><body><br>Registro: "+ registro);
		//***Data1.Imprime();**** Pede objeto que está dentro do construtor
	}

Tá froids…

rafaelviny

como assim ainda pede o objeto
vc instancio Data1 data = new Data1(); ???

W

Cara, a classe data representa uma característica do professor, portanto Data é um atributo deste.

Sendo assim, cada instância de professor terá um objeto de Data, que poderá ser usado no contexto da instância.

Exemplo, mantendo o primeiro código que você postou:

import javax.swing.JOptionPane;  
  
public class Professor {  
  
      
    //Atributos  
    String nome, departamento;  
    int admissao, registro;  
    Data Data1;
            
      
    Professor(){  
        nome = JOptionPane.showInputDialog (null,"Entre com o nome do professor: ");  
        departamento = JOptionPane.showInputDialog (null,"Entre com o departamento do professor: ");  
          
        /* 
        String texto = JOptionPane.showInputDialog (null,"Entre com a data de admissão do professor: "); 
        admissao= Integer.parseInt(texto); 
        */  
          
        Data1 = new Data();  
          
        String texto = JOptionPane.showInputDialog (null,"Entre com o registro do professor: ");  
        registro= Integer.parseInt(texto);        
          
          
          
    }  
      
      
      
    public void Imprime(){  
          
        JOptionPane.showMessageDialog(null,"<html><body>Nome: " + nome + "<html><body><br>Departamento: "+ departamento + "<html><body><br>Registro: "+ registro);  
          
      this.Data1.Imprime();
  
  
    }
igor972

Deu certo!!!

VOcês são muito fodas \o/

William Balan e rafaelviny , valew por gastarem o tempo de vocês com meus problemas!!!

Isso já vai me ajudar no outro exercício!!!

Valew mesmo!!!

rafaelviny

igor, foi mal por deixar vc sem a resposta…

tive reunião sobra a migração de um dos modulos aqui na empresa

mas qualquer coisa estamos aqui

igor972

Que nada, ajudou muito!!!

Objetivo é aprender sempre!!!

Valew’s

Criado 21 de março de 2011
Ultima resposta 21 de mar. de 2011
Respostas 13
Participantes 3