comunicação entre objetos, como eu faço?(MVC)

Meu problema é o seguinte, não estou conseguindo passar por parametro objetos das classes, InterCadPrincipal e Modelo, para a classe Controle, tenho de passar esses objetos com todos os componentes para que eu possa usá-los em outras classes.

Tipo, a classe Controle somente recebe dados da classe Inter… e manda pra classe Modelo, só que as classes Modelo e Inter… não podem se comunicar.

Alguém pode me ajudar???

[code]public class InterCadPrincipal extends JFrame {

Modelo Omodelo = new Modelo();
Controle Ocontrole = new Controle();

FlowLayout Flayout;
public JTextField jtfnome, jtfid, jtfend, jtfpreco, jtfproduto,
jtfdata, jtfcpf, jtfemail, jtfcidade;

public JLabel jlnome, jlproduto, jlpreco, jlid, jlend, jldata, 
jltipocliente, jlcpf, jlemail, jlcidade;

public JButton jbcadastrar, jbfechar, jbcomprar, jbconsulta;
public JRadioButton rbCliente,rbFornec;
public ButtonGroup exclusivo;//mutuamente exclusivo, serve pra marcar uma só das opções.
public boolean tipocliente; //Atributo que distingue fornecedor de cliente.


public InterCadPrincipal() {
	
    setTitle("                              Cadastro Principal");
	
	Container gerenciador = getContentPane();
	gerenciador.setLayout(null);
	
    /*Instanciando botões*/		
	jbconsulta = new JButton("Consulta");
	jbcadastrar = new JButton("Cadastrar");
	jbcomprar = new JButton("Comprar");
	jbfechar = new JButton("Fechar");
	
	/*Instanciando caixas de texto*/ 
	jtfnome = new JTextField();
	jtfend = new JTextField();
	jtfdata = new JTextField();
	jtfcpf = new JTextField();
	jtfemail = new JTextField();
	jtfcidade = new JTextField();
	jtfid = new JTextField();
	jtfproduto = new JTextField();
	jtfpreco = new JTextField();
	
	/*Instanciando labels*/
	jlnome = new JLabel("Nome ");
	jlend = new JLabel("Endereço ");
	jldata = new JLabel("Data Nascimento ");
	jltipocliente = new JLabel("tipo");
	jlcpf = new JLabel("CPF / CNPJ");
	jlemail = new JLabel("Email");
	jlcidade = new JLabel("Cidade");
	jlid = new JLabel("ID");
	jlpreco = new JLabel("Preço");
	jlproduto = new JLabel("Produto");
	
	/*Instanciando radiobuttons*/
    rbCliente =new JRadioButton("Cliente");
    rbFornec =new JRadioButton("Fornecedor");
    exclusivo = new ButtonGroup();
    
    jlnome.setBounds(10, 10, 300, 23);
    jlend.setBounds(10, 40, 300, 23);
    jldata.setBounds(10, 70, 300, 23);
    jltipocliente.setBounds(10, 100, 300, 23);
    jlcidade.setBounds(10, 130, 300, 23);
    jlcpf.setBounds(10, 160, 300, 23);
    jlemail.setBounds(10, 190, 300, 23);
    jlid.setBounds(350, 70, 50, 23);
    jlproduto.setBounds(10, 220, 350, 23);
    jlpreco.setBounds(10, 250, 300, 23);
    
    /*Aqui os labels 
     * e as caixas de texto são colocados em modo invisivel*/	    
    jlpreco.setVisible(false);
    jlproduto.setVisible(false);
    jtfpreco.setVisible(false);
    jtfproduto.setVisible(false);
    
    jtfpreco.setBounds(150, 250, 150, 23);
    jtfproduto.setBounds(150, 220, 300, 23);
    jtfnome.setBounds(150, 10, 300,23);
    jtfend.setBounds(150, 40, 300, 23);
    jtfdata.setBounds(150, 70, 90,23);
    jtfcidade.setBounds(150, 130, 300, 23);
    jtfcpf.setBounds(150, 160, 300, 23);
    jtfemail.setBounds(150, 190, 300, 23);
    jtfid.setBounds(380, 70, 70, 23);
    
    rbCliente.setBounds(140, 100, 70, 23);
    rbFornec.setBounds(240, 100, 90, 23);
    
    jbcadastrar.setBounds(10, 420, 100, 30);
    jbcomprar.setBounds(120, 420, 100, 30);
    jbconsulta.setBounds(230, 420, 100, 30);
    jbfechar.setBounds(340, 420, 100, 30);
    
    gerenciador.add(jbcomprar);
    gerenciador.add(jbconsulta);
    gerenciador.add(jbcadastrar);
    gerenciador.add(jbfechar);
    
    gerenciador.add(jlid);
    gerenciador.add(jlnome);
    gerenciador.add(jlend);
    gerenciador.add(jldata);
    gerenciador.add(jltipocliente);
    gerenciador.add(jlcidade);
    gerenciador.add(jlcpf);
    gerenciador.add(jtfcpf);
    gerenciador.add(jlemail);
    gerenciador.add(jlpreco);
 	gerenciador.add(jlproduto); 
 	
    gerenciador.add(jtfproduto);
    gerenciador.add(jtfpreco);	    
    gerenciador.add(jtfid);
    gerenciador.add(jtfnome);
    gerenciador.add(jtfend);
    gerenciador.add(jtfdata);
    gerenciador.add(jtfcidade);
    gerenciador.add(jtfemail);
   
    gerenciador.add(rbCliente);
    gerenciador.add(rbFornec);

// final InterCadPrincipal cad = this;

    rbFornec.addActionListener(new ActionListener()
    {
    	public void actionPerformed(ActionEvent e)
    	{
    		if(rbFornec.isSelected() == true){
   	    	   jlpreco.setVisible(true);
   	    	   jlproduto.setVisible(true);
   	    	   jtfproduto.setVisible(true);
   	    	   jtfpreco.setVisible(true);
   	    }
   	    
    	}
    });
    
    rbCliente.addActionListener(new ActionListener()
    {
    	public void actionPerformed(ActionEvent e)
    	{
    		if(rbCliente.isSelected() == true){
   	    	   jlpreco.setVisible(false);
   	    	   jlproduto.setVisible(false);
   	    	   jtfproduto.setVisible(false);
   	    	   jtfpreco.setVisible(false);
   	    }
   	    
    	}
    });
    exclusivo.add(rbCliente);
    exclusivo.add(rbFornec);
    
    setSize(500,500);
    setVisible(true);
    
   
	
	jbcadastrar.addActionListener(new ActionListener()  //método pra sair.
	{
	  public void actionPerformed(ActionEvent e, Object objeto)
	  {
		 /*Quero fazer um procedimento aqui, e preciso passar como parametro
		  * um objeto dessa classe, como eu faço isso????*/
		  InterCadPrincipal Ocadastro = new InterCadPrincipal();
		  
		 Ocontrole.teste1(Ocadastro);/*Aqui chama um método da classe
		                             Controle*/
		  
		 
		 
	  }

	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}
	}//fim do metodo		
    
	);
	
	
	jbfechar.addActionListener(new ActionListener()
	{
		public void actionPerformed(ActionEvent e)
		{
			System.exit(0);
		}
	});
	
	jbcomprar.addActionListener(new ActionListener()
	{
		public void actionPerformed(ActionEvent e)
		{
	        //new InterContas(); //método que chama outro frame, nesse caso o de compras.
	       
		}
	}
	);
	
	jbconsulta.addActionListener(new ActionListener()
	{
		public void actionPerformed(ActionEvent e)
		{
			new InterConsulta();
		}
	}
	);
	}//fim do construtor.


public static void main(String[] args)
{
	new InterCadPrincipal();
	
}

//Abaixo estão os métodos modificadores e acesso.
public void settipocliente(boolean tipocliente) {
this.tipocliente = tipocliente;
}
public JTextField getJtfcidade() {
return jtfcidade;
}
public void setJtfcidade(JTextField jtfcidade) {
this.jtfcidade = jtfcidade;
}
public JTextField getJtfcpf() {
return jtfcpf;
}
public void setJtfcpf(JTextField jtfcpf) {
this.jtfcpf = jtfcpf;
}
public JTextField getJtfdata() {
return jtfdata;
}
public void setJtfdata(JTextField jtfdata) {
this.jtfdata = jtfdata;
}
public JTextField getJtfemail() {
return jtfemail;
}
public void setJtfemail(JTextField jtfemail) {
this.jtfemail = jtfemail;
}
public JTextField getJtfend() {
return jtfend;
}
public void setJtfend(JTextField jtfend) {
this.jtfend = jtfend;
}
public JTextField getJtfnome() {
return jtfnome;
}
public void setJtfnome(JTextField jtfnome) {
this.jtfnome = jtfnome;
}
public JLabel getJlid() {
return jlid;
}
public void setJlid(JLabel jlid) {
this.jlid = jlid;
}
public boolean istipocliente(boolean a) {
if(rbCliente.isSelected() == true)
istipocliente(true);
else istipocliente(false);
// TODO Auto-generated method stub
return false;
}
}//fim.

[/code]public class Modelo {

public String nome;
private String endereco;
private int telefone;
private String data;
private int  cpf;
private String email;
private int codigo;
private String cidade;
private boolean tipo;


InterConsulta Oconsulta = new InterConsulta();

public void teste2(InterCadPrincipal Ocadastro){
	nome = Ocadastro.jtfnome.toString();
	
}
public Modelo() {
	// TODO Auto-generated constructor stub 
}


/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub

}

}

[quote]public class Controle extends InterCadPrincipal {

InterCadPrincipal Ocadastro = new InterCadPrincipal();

Modelo Omodelo = new Modelo();

public void teste1(InterCadPrincipal Ocadastro){/*Já aqui, chama um método da classe Modelo*/
	Omodelo.teste2(Ocadastro);
	
}

public Controle() {
// TODO Auto-generated constructor stub

}
public static void main(String[] args) {
	// TODO Auto-generated method stub
	new Controle();	
}

}
[/quote]

não vai fazer o que vc quer por que vc mudou a assinatura do metodo

public void actionPerformed(ActionEvent e, Object objeto) 

quando ocorrer o evento do botão ele vai chamar

public void actionPerformed(ActionEvent e) 

e não esse outro, é por isso que não executa seu código…