Modulos en Java

#1
una pregunta compañeros

en VB.NET existen unos archivos llamados Modulos, los cuales nos sirven para hacer metodos o funciones los cuales se pueden llamar desde cualquier otra ventana

Existe algo similar en Java?? solo hice una clase y ahí metí mis métodos pero cada que necesito alguna funcion que está en esa clase, debo declarar y crear el objeto en cada JForm que hago, de antemano muchas gracias
 
#3
gracias por tu comentario, bueno estaba buscando una forma de llamar a una función de un modulo, aquí hice una clase llamada "Conexion" y dentro de ella hay una función que se llama SoloNumeros...

Código:
package paqueteprincipal;
 
 public class Conexion {
 
  public void SoloNumeros(KeyEvent e){
    char caracter = e.getKeyChar();
 
      //Verifica si la teclaPulsada no es un digito
      if((caracter<'0') || (caracter>'9') && (caracter != KeyEvent.VK_BACK_SPACE)
         && (caracter != KeyEvent.VK_ENTER)){
 
          e.consume(); //Ignora el evento del teclado
      }
  }
 }
y si quiero llamarla desde un JFrame tengo que declararlo y crear un objeto de dicha clase (Conexion) antes de poder usarla...


Código:
package paqueteprincipal;

public class NuevoSocioForm extends javax.swing.JInternalFrame {

    [B]public Conexion cn = new Conexion();[/B] //Este es el texto que les digo

    private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {                                     
        // TODO add your handling code here:
        [B]cn.SoloNumeros(evt);[/B] //y acá tengo que usar mis funciones como métodos de esta clase



    }   
}
es posible llamar a mis funciones de algún otro archivo sin tener que crear objetos primero??? disculpen soy principiante aún
 
#4
prueba con ponerle static a todas tu funciones:

Código:
public static void SoloNumeros(KeyEvent e){
    ....
}
asi simplemente las puedes mandar a llamar sin declarar una instancia de esa función.

Saludos
 

yao04

Bovino maduro
#5
sin la intencion de sonar rudo, pero creo q no estas entendiendo Java....
precisamente asi es como se debe d hacer la programacion en Java, no estoy seguro pero me imagino q eso tiene algo q ver con q a java le llamen un lenguaje "orientado a objetos".

Un objeto es un conjunto de atributos y metodos y no me acuerdo q mas.

Ahora, respondiendo a tu pregunta, el compadre d arriba tiene razon, si los declaras estaticos no necesitaras crear objeto, pero no es muy recomendable hacer eso, xq? no c. mi maestro de POO me dijo pero ya c me olvido, pero si t digo q se me hace mas comodo trabajar asi con objetos..
me parece (tampoco me acuerdo bien, pero creo q era algo asi) que si estas usando herencia no requieres crear objetos o algo asi.....

d cualquier forma, trabajar con objetos es lo mejor, ya q es la forma en q se esta trabajando en esta era de la programacion
 
#8
sin la intencion de sonar rudo, pero creo q no estas entendiendo Java....
precisamente asi es como se debe d hacer la programacion en Java, no estoy seguro pero me imagino q eso tiene algo q ver con q a java le llamen un lenguaje "orientado a objetos".

Un objeto es un conjunto de atributos y metodos y no me acuerdo q mas.

Ahora, respondiendo a tu pregunta, el compadre d arriba tiene razon, si los declaras estaticos no necesitaras crear objeto, pero no es muy recomendable hacer eso, xq? no c. mi maestro de POO me dijo pero ya c me olvido, pero si t digo q se me hace mas comodo trabajar asi con objetos..
me parece (tampoco me acuerdo bien, pero creo q era algo asi) que si estas usando herencia no requieres crear objetos o algo asi.....

d cualquier forma, trabajar con objetos es lo mejor, ya q es la forma en q se esta trabajando en esta era de la programacion
Necesitaba saber esto porque por que estoy haciendo un programa MDI el cual tiene varias ventanas hijas con sus funciones, consultas, altas, bajas, y cree una clase para la conexion de la BD, y ejecutar sentencias SQL,

pero como lo estaba haciendo era que cada que ejecutaba un query SQL, al abrir cada ventana instanciaba y creaba un objeto nuevo llamado Conexion, y entonces hacia la consulta, me imagino que esto gasta mas recursos o no es muy practico

Mañana me traigo las clases para ver si me pueden orientar, por el momento la hice la funcion de tipo estatica, y las variables son protected static... No se si lo estoy haciendo correcto, apenas vi un poco de encapsulamiento
 
#9
lo q deberias saber es q hay dos Tipos de metodos. metodos de la Classe y metodos de las instancias u Objetos. Los metodos de una clase se generan junto con la Biblioteka y los metodos de las instancias con los objetos. independiente de cuantas instancias de la clase existan hay solo una instancia de los metodos de la clase. Esto se aplica tambien a propiedades, es decir una propiedad de la classe (static) va a ser instanciada una sola vez y sera compartida por todos los Objetos generados de esta clase. Naturalemnte no existen referencias "this" para propiedades de clases. Espero q esto te ayude un poco y si no puedes ver en el siguiente link:

http://www.leepoint.net/notes-java/flow/methods/50static-methods.html
 
#10
Bueno a ver si capte un poco la idea, les voy a poner esto, son 3 archivos, una es una clase encargada de la conexion, llamado Conexion.Java, el otro es el MDIPrincipal llamado ventanaprincipal, desde donde todas las ventanas se llaman, y el otro es una ventanaHija llamado DevolverForm

Conexion
Código:
[FONT=Courier New][COLOR=#000000]package paqueteprincipal;[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]import java.awt.event.KeyEvent;[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]import java.sql.Connection;[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]import java.sql.DriverManager;[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]import java.sql.ResultSet;[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]import java.sql.Statement;[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]import javax.swing.JOptionPane;[/COLOR][/FONT]
 
 
[FONT=Courier New][COLOR=#000000]public class Conexion {[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]  protected static Connection conexion;[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]  protected static Statement  sentencia;[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]  protected static final String Driver = "com.mysql.jdbc.Driver";[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]  protected static final String Server = "localhost";[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]  protected static final String DataBase = "MSDN";[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]  protected static final String DSN = "jdbc:mysql://" + Server + ":3306/" + DataBase;[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]  protected static final String User = "usuarioMSDN";[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]  protected static final String Pass = "usuario_007#";[/COLOR][/FONT]
 
 
[FONT=Courier New][COLOR=#000000]      public static void Abrir_Conexion(){[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]//Driver para conectarse (mysql)[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       try{[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]Class.forName(Driver).newInstance();[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       }[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       catch(Exception e){[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]           JOptionPane.showMessageDialog(null, e);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       }[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]       //Abrimos conexion[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       try{[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]           conexion = DriverManager.getConnection(DSN, User, Pass);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       }[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       catch(Exception e){[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]           JOptionPane.showMessageDialog(null, e);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       }[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]       //Creamos Sentencia[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       try{[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]           sentencia = conexion.createStatement(ResultSet.CONCUR_READ_ONLY,[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]                                                 ResultSet.TYPE_SCROLL_INSENSITIVE);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       }[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       catch(Exception e){[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]           JOptionPane.showMessageDialog(null, e);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]}[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]   }[/COLOR][/FONT]

Esta es ventanaprincipal
Código:
[FONT=Courier New][COLOR=#000000]package paqueteprincipal;[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]import javax.swing.JFrame;[/COLOR][/FONT]
 
 
[FONT=Courier New][COLOR=#000000]public class ventanaprincipal extends javax.swing.JFrame {[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]/** Creates new form ventanaprincipal */[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]   //Esta es mi Ventana MDI[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]   public ventanaprincipal() {[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       initComponents();[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       ConfiguracionVentana();[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       [B]Conexion.Abrir_Conexion();[/B][/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]}[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]   private void menuDevolverMousePressed(java.awt.event.MouseEvent evt) {                                          [/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       // TODO add your handling code here:[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]//Aqui mando llamar a la ventana interna desde aqui[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]DevolverForm VentanaInternaDevolver = new DevolverForm();[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       VentanaInternaDevolver.setResizable(false);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]VentanaInternaDevolver.setMaximizable(false);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       VentanaInternaDevolver.setIconifiable(false);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       VentanaInternaDevolver.setClosable(false);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       VentanaInternaDevolver.setSize(640, 300);[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]       panelInterno.add(VentanaInternaDevolver);[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]       VentanaInternaDevolver.setVisible(true);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]   }                                         [/COLOR][/FONT]

y esta es la ventanahija
Código:
[FONT=Courier New][COLOR=#000000]package paqueteprincipal;[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]import java.sql.ResultSet;[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]import javax.swing.JOptionPane;[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]import javax.swing.table.DefaultTableModel;[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]public class DevolverForm extends javax.swing.JInternalFrame {[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]   DefaultTableModel m;[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]   /** Creates new form PlantillaForm */[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]public DevolverForm() {[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       initComponents();[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       MostrarAlquileres();[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]   }[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]   private void MostrarAlquileres(){[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       String SQL = "SELECT AlquilerID, SocioDNI, CodBarras, FechaAlquiler, Devuelta FROM Alquiler WHERE Devuelta = 0";[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       String Titulos[] = {"AlquilerID", "SocioDNI", "CodBarras","FechaAlquiler","Devuelta"};[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]String DatosTabla[] = new String[5];[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]       m = new DefaultTableModel(null, Titulos);[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]       try{[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]           ResultSet r = [B]Conexion.sentencia.executeQuery(SQL);[/B][/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]           r.beforeFirst();[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]           while (r.next()){[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]DatosTabla[0] = r.getString("AlquilerID");[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]               DatosTabla[1] = r.getString("SocioDNI");[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]               DatosTabla[2] = r.getString("CodBarras");[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]               DatosTabla[3] = r.getString("FechaAlquiler");[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]               DatosTabla[4] = r.getString("Devuelta");[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]               m.addRow(DatosTabla);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]           }[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]           tablaAlquileres.setModel(m);[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       }[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]       catch(Exception e){[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]           JOptionPane.showMessageDialog(rootPane, e);[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#000000]       }[/COLOR][/FONT]
[FONT=Courier New][COLOR=#000000]   }[/COLOR][/FONT]
les puse en negrita lo que considero importante, ya que con lo que hice, no necesite crear ningun objeto de la clase Conexion para poder usar el metodo Abrir_Conexion como se ve en el constructor de la MDI ventanaprincipal

las variables de la clase Conexion las hice de tipo Protected que son las que solo se heredan, pero no se pueden accesar desde otros lados fuera de la clase, Static para poder ser accesadas desde cualquier parte y Final para que no sean modificadas desde ningun lado, es lo que se me ocurrio segun lo que vi en el video que les muestro. Espero que sea lo mas correcto, si me pudieran orientar,

Es mi primer sistema en Java, de hecho estoy basandome en uno que esta hecho para que los chicos aprendan a programar en .NET pero lo estoy haciendo con la programacion de Java



aca les pongo una captura de como va el pequeño sistema hecho con Linux y Netbeans ya compilado con su ejecutable en escritorio

 
Arriba