Estruturação O.O -0 help

Faz 1 mes que estou aprendendo java, e to tentando fazer um pequeno programa, e to com problema na estruturação OO dele… Gostaria de algumas dicas de como estruturar ele “pra ficar OO”. To com maior problema na seleção das opções no RadioButton pra mandar ele fazer o q tem q conforme a opção…

[code]
import javax.swing.;
import java.awt.
;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.text.*;

public class Principal {

public static void main(String args[])
{
	ClassJFrame frame = new ClassJFrame();
}

}[/code]

public class ClassJFrame extends JFrame {

	JTextField jtJuros;
	JTextField jtParcelas;
	JTextField jtValor;
	JTextField jtValorParcela;
	JTextField jtJuroPago;
	JRadioButton jrbComposto;
	JRadioButton jrbSimples;
	JRadioButton jrbSaldoDevedor;
	ClassJurosSaldoDevedor juros;

	JButton jbCalcular;


	public ClassJFrame()
	{

		super("Janela!!!");
		
		setSize(600,450);
		
		Container ct = this.getContentPane();
		ct.setLayout(null);
		
		JLabel jlValor = new JLabel("Valor");
		jlValor.setBounds(65,30, 70, 20);
		ct.add(jlValor);
		
		jtValor = new JTextField();
		jtValor.setBounds(50, 50,75, 28);
		ct.add(jtValor);		
	

		JLabel jlJuros = new JLabel("Juros");
		jlJuros.setBounds(165,30, 75, 20);
		ct.add(jlJuros);

		jtJuros = new JTextField();
		jtJuros.setBounds(150, 50, 75, 28);
		ct.add(jtJuros);

		
		JLabel jlParcelas = new JLabel("Parcelas");
		jlParcelas.setBounds(265, 30, 70, 20);
		ct.add(jlParcelas);

		jtParcelas = new JTextField();
		jtParcelas.setBounds(250, 50, 75, 28);
		ct.add(jtParcelas);

		
		JLabel jlValorParcela = new JLabel("Valor Parcela");
		jlValorParcela.setBounds(75, 140, 90, 20);
		ct.add(jlValorParcela);

		jtValorParcela = new JTextField();
		jtValorParcela.setBounds(75, 170, 70, 28);
		//jtValorParcela.setEnabled(false);
		ct.add(jtValorParcela);


		jrbComposto = new JRadioButton("Composto");
		jrbComposto.setBounds(370, 50, 100, 20);
		ct.add(jrbComposto);


		jrbSimples = new JRadioButton("Simples");
		jrbSimples.setBounds(370, 90, 100, 20);
		ct.add(jrbSimples);

		
		jrbSaldoDevedor = new JRadioButton("Saldo Devedor");
		jrbSaldoDevedor.setBounds(370, 130, 150, 20);
		ct.add(jrbSaldoDevedor);


		ButtonGroup grupo = new ButtonGroup();

		grupo.add(jrbComposto);
		
		grupo.add(jrbSimples);
		grupo.add(jrbSaldoDevedor); 
		

		jbCalcular = new JButton("Calcular");
		jbCalcular.setBounds(135, 90, 100, 40);
		jbCalcular.addActionListener(new BotaoCalcularListener ());
		ct.add(jbCalcular); 
		
		
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		setVisible(true);
	}


	private class BotaoCalcularListener implements ActionListener {

		public void actionPerformed(ActionEvent e){
			/*if (jrbComposto.isSelected())
				juros = new ClassJurosCompostos();
			if(jrbSaldoDevedor.isSelected())
				juros = new ClassJurosSaldoDevedor(); */
			juros.setValor(getValor());
			juros.setJuros(getJuros());
			juros.setParcelas(getParcelas());
			juros.calcular();
			atualizaFrame();


		}
	}


	public double getValor()
	{
		return Double.parseDouble(jtValor.getText());
	}

	public double getJuros()
	{
		return Double.parseDouble(jtJuros.getText());
	}

	public int getParcelas()
	{
		return Integer.parseInt(jtParcelas.getText());
	}

	public void atualizaFrame()
	{
		DecimalFormat df = new DecimalFormat("0.00");
		jtValorParcela.setText((""+df.format(juros.getValorParcelas())+""));
	}
		

}

[code]
public class ClassJuros {

double valor;
double juros;
int parcelas;

double valorParcela;
double jurosPago;


public ClassJuros () {

}

public void setValor(double d)
{
	this.valor = d;
}

public void setJuros(double d)
{
	this.juros = d;
}

public void setParcelas(int i)
{
	this.parcelas = i;
}

public double getValorParcelas()
{
	return valorParcela;
}

public double getjurosPago()
{
	return jurosPago;
}

}[/code]

[code]
import java.math.*;

public class ClassJurosSaldoDevedor extends ClassJuros {

public void calcular()
{
	double k = Math.pow(1+juros/100, parcelas);
	k = (juros/100)*k / (k-1);
	super.valorParcela = valor * k;
}

}[/code]

[code]
import java.math.*;

public class ClassJurosCompostos extends ClassJuros {

public void calcular()
{
	
	super.valorParcela = Math.pow(1+super.juros/100, parcelas)*super.valor/super.parcelas;
	
	super.jurosPago = parcelas*valorParcela - valor;
}

}[/code]

Qual seria o problema com o RadioButton?
Vc não está sabendo como implementar um evento para ele?

[quote=KassiPretti]Qual seria o problema com o RadioButton?
Vc não está sabendo como implementar um evento para ele?[/quote]

Queria alguma idiea de como ser comportar as chamadas a objetos a cada opção do RadioButton (algo utilizando OO)

algo pra simplificar os diferentes tipos de juros que tenho…

Se são somente esses dois tipos de juros vc pode criar um metodo dentro da classe juros ClassJuros facilitando não precisando de herança. Mas se vc quiser usar herança faz desse jeito msm, na minha humilde opinião acho que criar uma classe com apenas um metodo não é muito prático.
E só uma observação na classe ClassJuros vc usou encapsulamento para as variaveis, uma boa pratica agora seria declaralas como private.
Segue abaixo o seu código modificado:

import java.math.*; 

public class ClassJuros {   
  
    private double valor;   
    private double juros;   
    private int parcelas;   
   
    private double valorParcela;   
    private double jurosPago;   
  
  
    public ClassJuros () { }   
  
    public void setValor(double d) {  this.valor = d; }   
  
    public void setJuros(double d)  {   this.juros = d;  }   
  
    public void setParcelas(int i)      {  this.parcelas = i;  }   
       
    public double getValorParcelas() {  return valorParcela;  }   
  
    public double getjurosPago()      {  return jurosPago; }   
  
//ClassJurosSaldoDevedor 

    public void JurosSaldoDevedor ()   // Ai vc decide se recebe ou não    parametros ou retorna alguma coisa

    {   
        double k = Math.pow(1+juros/100, parcelas);   
        k = (juros/100)*k / (k-1);   
        valorParcela = valor * k;   
    }   

// ClassJurosCompostos 
  
    public void ClassJurosCompostos()   // Ai vc decide se recebe ou não    parametros ou retorna alguma coisa

    {   
           
        super.valorParcela = Math.pow(1+juros/100, parcelas)  *valor/parcelas;   
           
        jurosPago = parcelas*valorParcela - valor;   
    }   
}  

Outra coisa pelo que sei de herança quando vc extende uma classe a outra dentro do construtor vc deve fazer um super() para chamar a superClasse, exemplo:


public ClassJurosSaldoDevedor() { super(); }

Espero ter ajudado :wink: