Hola, a ver si consigo transmitir la idea sin que lleva a malinterpretaciones. Vereis soy relativamente nuevo en esto de programar en java, voy siguiendo tutos y aprendiendo poco a poco y queria comentaros algo acerca de la forma de programar. Yo provengo de programar en php con bases de datos y demas, y ahi yo por lo menos no usaba ni una clase ni media, me enseñaron a programar asi. Ahora me he pasado a java y todos son clases, pero esto no se si es o no determinante para programar de la siguiente forma.
Este codigo por ejemplo
Código PHP:
import java.awt.event.ActionEvent;
import java.net.*;
import java.awt.*;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import org.omg.CORBA.PRIVATE_MEMBER;
//CLASE QUE CREA NUMEROS PRIMOS
//PARA USAR THREADS NECESITAMOS LA INTERFACE RUNNABLE
public class Threads extends JFrame implements Runnable, ActionListener
{
Thread ir;
JLabel etiquetaCuantos = new JLabel("Cantidad: ");
JTextField cuantos= new JTextField("250", 10);
JButton botonmostrar = new JButton("Mostrar Primos");
JTextArea primos = new JTextArea(8, 40);
public Threads() {
super("Mostrar Numeros Primos");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BorderLayout diseno = new BorderLayout();
setLayout(diseno);
botonmostrar.addActionListener(this);
//CREAMOS PANELES
//AÑADIMOS COMPONENTES AL PANEL
JPanel panelsuperior = new JPanel();
panelsuperior.add(etiquetaCuantos);
panelsuperior.add(cuantos);
panelsuperior.add(botonmostrar);
//AÑADIMOS PANEL
add(panelsuperior, BorderLayout.NORTH);
//PANEL INFERIOR
//MUESTRA LOS NUMEROS EN DIFERENTES LINEAS CUANDO LLEGUEN AL FINAL
primos.setLineWrap(true);
//JPanel panelinferior = new JPanel();
//BARRA DE SCROLL
JScrollPane panelscroll = new JScrollPane(primos);
// panelinferior.add(panelscroll);
// panelinferior.add(primos);
add(panelscroll, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e) {
botonmostrar.setEnabled(false);
if (ir==null)
{ir = new Thread(this);
ir.start();
}
}
public void run() {
int cantidad = Integer.parseInt(cuantos.getText());
int numPrimos = 0;
//candidato = numero que puede ser primo
int candidato = 2;
primos.append("Primeros "+ cantidad + " numeros primos\n ");
while (numPrimos < cantidad)
{ if (esPrimo(candidato))
{primos.append(candidato + ", ");
numPrimos++;
}
candidato++;
}
}
public static boolean esPrimo(int comprobarnumero)
{double raiz = Math.sqrt(comprobarnumero);
for (int i = 2; i <=raiz; i++) {
if (comprobarnumero % i ==0)
{return false;}
}
return true;
}
public static void main(String[] args) {
Threads marco = new Threads();
marco.setVisible(true);
}
}
Es relativamente pequeño pero viene mas o menos a ilustrar lo que quiero comentar, según el codigo, aparte de que por temas de interfaz tienes que crearlas, divide el contenido de codigo como en partes, para luego ir llamando a esas partes en otras partes, por ejemplo en la funcion run, hay una parte de codigo que llama a la funcion esPrimo, que es otra funcion, a mi por lo menos....aunque igual es la forma correcta, esa forma de programar me confunde, me cuesta mas verlo asi, yo programaria lo mismo pero dentro de la funcion run, no lo iria dividiendo como en pequeñas funciones y entonces pregunto
¿cual es la forma correcta de programar?¿Cual os parece mas facil por partes o el codigo entero?....y por cierto en cuanto al codigo que he puesto....¿Como lo veis para lo que realmente hace?¿se podria hacer de algún modo mas simple o creeis que lo ha complicado mucho?(el codigo no es mio, es de un tuto). Nada mas.
Gracias.