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

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…

posta seu metodo main

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

Ta na mão:

package Professor;

public class TesteProfessor {


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

	}

}

crie um construtor da classe data vazio

public Data(){}

dai vc pode acessar o metodo imprime sem problemas

Mas aí vai dar duplicidade.

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

[code] 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);  
  }
} [/code]

é uma ideia hahahaha

dai com o objeto data vc poderia acessar o metodo imprime

agora vc pode criar um construtor vazio :smiley:

Estranho, está dizendo que o

if(boolean executa == true){

boolean está com a sintaxe errada =/

Sabe porque?

tira o boolean hahahah

esqueci

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…

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

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();
  
  
    }  

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!!!

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

Que nada, ajudou muito!!!

Objetivo é aprender sempre!!!

Valew’s