Foros del Web » Programación para mayores de 30 ;) » Java »

Duda acerca de formas de programar

Estas en el tema de Duda acerca de formas de programar en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/08/2011, 23:04
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 9 meses
Puntos: 5
Duda acerca de formas de programar

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 RunnableActionListener
{
    
Thread ir;
    
JLabel etiquetaCuantos = new JLabel("Cantidad: ");
    
JTextField cuantos= new JTextField("250"10);
    
JButton botonmostrar = new JButton("Mostrar Primos");
    
JTextArea primos = new JTextArea(840);
    public 
Threads() {
        
super("Mostrar Numeros Primos");
        
setSize(400300);
        
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(panelsuperiorBorderLayout.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(panelscrollBorderLayout.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<=raizi++) {
            if (
comprobarnumero ==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.
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #2 (permalink)  
Antiguo 28/08/2011, 03:18
 
Fecha de Ingreso: julio-2011
Mensajes: 14
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: Duda acerca de formas de programar

Lo más correcto cómo dices es ir haciéndolo por "partes", ya que aunque ahora al principio hagas programas pequeños y no veas las ventajas, después es casi de uso obligatorio hacerlo de esa forma, ya sea para evitar código duplicado, facilitar la corrección de errores, etc...

Además al final siempre queda todo como mas "estructurado" y fácil de entender, aunque supongo que esto último será ya cuando tengas mas experiencia con Java.

Respecto al código que has puesto, parece todo mas o menos correcto y necesario, aunque el nombre del objeto "threads" puede llevar a confusión (quizás mejor un MyMarco o algo así).

Espero haberte ayudado.

Saludos!!
  #3 (permalink)  
Antiguo 28/08/2011, 03:18
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Duda acerca de formas de programar

Pues la verdad es que no tienes nada claro lo que implica programar, ni Java ni PHP, ni nada.

Cita:
provengo de programar en php con bases de datos y demas, y ahi yo por lo menos no usaba ni una clase ni media,
Hay dos grandes formas de programar, estructurada u orientada a objetos (POO). Java es totalmente POO, y PHP aunque no lo veas, hace tiempo que ha tomado esa dirección.

http://www.google.es/search?hl=gl&cl...oo&btnG=Buscar

Cita:
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
Estructurado o POO, en todos los lenguajes se usa la modularización, incluido PHP, otra cosa es que tú no te hayas dado cuenta aunque lo hayas estado utilizando.

Razones, muchas

reutilización, legibilidad, mantenibilidad...

http://programar-en-pascal.blogspot....mientos-y.html
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #4 (permalink)  
Antiguo 29/08/2011, 12:23
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Duda acerca de formas de programar

Busca sobre patrones de diseño, ahí encontraras nuevas formas de programar de manera ordenada, además si vas a trabajar con algunos frameworks es mejor que sepas, porque ellos están organizado de esa forma, uno de los patrones más populares por decirlo de alguna forma es MVC (Modelo Visa Controlador) busca sobre ese tema y verás.
  #5 (permalink)  
Antiguo 29/08/2011, 15:09
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 9 meses
Puntos: 5
Respuesta: Duda acerca de formas de programar

Cita:
Iniciado por AlleyUp Ver Mensaje
Lo más correcto cómo dices es ir haciéndolo por "partes", ya que aunque ahora al principio hagas programas pequeños y no veas las ventajas, después es casi de uso obligatorio hacerlo de esa forma, ya sea para evitar código duplicado, facilitar la corrección de errores, etc...

Además al final siempre queda todo como mas "estructurado" y fácil de entender, aunque supongo que esto último será ya cuando tengas mas experiencia con Java.

Respecto al código que has puesto, parece todo mas o menos correcto y necesario, aunque el nombre del objeto "threads" puede llevar a confusión (quizás mejor un MyMarco o algo así).

Espero haberte ayudado.

Saludos!!
Bueno, la verdad es que ahora veo mas claro que si que es cierto que es mejor hacerlo estructurado, tiene su logica, pero tambien hay que saber estructurarlo de forma correcta


Cita:
Iniciado por DonVidela Ver Mensaje
Busca sobre patrones de diseño, ahí encontraras nuevas formas de programar de manera ordenada, además si vas a trabajar con algunos frameworks es mejor que sepas, porque ellos están organizado de esa forma, uno de los patrones más populares por decirlo de alguna forma es MVC (Modelo Visa Controlador) busca sobre ese tema y verás.
Voy a buscar informacion al respecto, a ver como funcionan.
Gracias
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #6 (permalink)  
Antiguo 29/08/2011, 16:31
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Duda acerca de formas de programar

Mi opinión es, que el diseño de aplicaciones OO es difícil de aprender y toma tiempo. Yo tambien vengo de PHP donde nunca me había interesado por la POO.

Es obvio que al principio, proviniendo de programar estructuradamente, metas todo el código en una sola clase. Las ventajas no son evidentes hasta que tienes proyectos grandes.

Yo era así al principio, metía todo el código en una sola clase y al final cuando tenia que hacer un cambio se me revolvía todo y tenia que cambiar DEMASIADO código. Sin embargo, con el tiempo (y unos cuantos libros) he ido aprendiendo sobre el diseño de aplicaciones, patrones de diseño, etc ...

No te apresures, tomatelo con calma y ve leyendo sobre los principios de la POO y cuando te sientas mas confiado, lee un poco sobre patrones de diseño.

En cuanto a tu codigo, lo primero que puedo ver es que usaste el nombre Threads (con S). Ya Java tiene una clase llamada Thread y cualquiera se puede confundir bastante. Lo segundo que puedo ver es que tu codigo hace cosas que no debería, por ejemplo, verificar si un numero es primo. Esa parte debe estar encapsulada en una clase aparte (como los métodos de la clase Math) y llamarlo estaticamente. Un patrón de diseño que te puede ayudar es definitivamente MVC, para separar en capas la parte visual con el modelo de la aplicación. Eso si, no hay mucho que hacer en esa sencilla aplicación que creaste.

Etiquetas: formas, swing
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:18.