Páginas

14/8/15

Diferencia entre override vs overload

Diferencia entre override vs overload

Diferencia entre override vs overload, como implementarlos.




Cuando estamos comenzando a programar en Java tendemos a confundirnos con muchos conceptos ya que algunos son muy parecidos, en este caso vamos hacer una breve explicación para ver cuáles son las diferencias entre override y overload, estos conceptos son súper importantes en la programación orientada a objetos, se utilizan mucho y son una buena práctica de programación.
Para comenzar vamos hablar acerca de sus conceptos, cuando nos referimos a override en Java, estamos hablando de la sobrescritura de un método, para sobrescribir un método en Java tenemos que tener una ClaseHija que herede mínimo un método de una ClasePadre, la necesidad de sobrescribir un método se presenta ya que el hecho de que una ClaseHija herede de una ClasePadre no quiere decir que tienen que hacer lo mismo, para entender mejor, el hecho de que un padre tenga la responsabilidad de trabajar en una empresa no quiere decir que el hijo tenga que trabajar en la misma empresa.
Para aplicar esto en Java necesitamos hacerlo así:
ClasePadre
public class ClasePadre {

 public String quienSoy() {
  return "Soy la clase padre";
 }

}
   
ClaseHija
public class ClaseHija extends ClasePadre {
 
 @Override
 public String quienSoy() {
  return "Soy la clase hija";
 }
   
Como vemos la ClaseHija tiene el mismo método que la ClasePadre con la anotación @Override, lo que nos indica que es un método que no puede cambiar al de la ClasePadre, ni más ni menos parámetros, ya que solo lo estamos sobrescribiendo.

Ahora bien, cuando hablamos de overload en Java, nos referimos a sobrecargar un método, esto lo aplicamos en los constructores de las clases ya que hay veces que necesitamos más de un constructor, y al momento de implementarlo lo que hacemos es ponerle el mismo nombre que los demás pero con distintos parámetros, también es una buena práctica de programación utilizarlo para métodos que en realidad hacen lo mismo, por ejemplo:
Tenemos un método que busca clientes en nuestra base de datos, ese método solo busca clientes por sexo pero necesitamos otro método que aparte de buscar clientes por sexo también sea por edad, y en si los métodos lo que hacen es buscar clientes, así que le ponemos el mismo nombre pero con distintos parámetros, para implementarlo solo necesitamos este bloque de código:
Constructores:
public class Persona {
 public String quienSoy() {
  return "Soy una persona";
 }

 public String quienSoy(String nombre) {
  return "Soy " + nombre;
 }

 public String quienSoy(String nombre, String apellido) {
  return "Soy " + nombre + " " + apellido;
 }
}
  
Metodos:
 public void buscarCliente(String Sexo) {
  // Implementacion
 }

 public void buscarCliente(String Sexo, int edad) {
  // Implementacion
 }

 public void buscarCliente(String Sexo, int edad, String empresa) {
  // Implementacion
 }
  
Como vemos estamos sobrecargando el constructor de la clase Persona, todo esto es muy fácil, poco a poco ve integrándolo en tus aplicaciones, no hay lugar para confusiones ya que los dos conceptos overload y override se aplican de distintas formas y no olvides la mayor diferencia entre los dos conceptos es que no hacen lo mismo, uno sobrescribe un metodo y el otro sobrecarga un metodo, este tema está muy ligado al Polimorfismo en Java, otro de los grandes pilares de la programación orientada a objetos.
Si te ayudo la entrada no olvides compartir el conocimiento aprendido y si tienes alguna sugerencia puedes comentar, suerte!!

11/8/15

Polimorfismo Java

Polimorfismo Java.

Polimorfismo Java, que es el polimorfismo y sus tipos.




El Polimorfismo es uno de los conceptos generales que van de la mano con la programación orientada a objetos OOP, en si el polimorfismo en Java se refiere a las distintas formas que puede tener una variable, objeto o método creado.
Hay dos tipos establecidos de polimorfismo:
  • El polimorfismo en tiempo de ejecución (runtime) o dinámico, que lo podemos implementar con la sobre escritura (overriding) de métodos.
  • El polimorfismo en tiempo de compilación (compile time) o estático, que lo podemos implementar en la sobrecarga (overloading) de métodos
Te puede interesar: Diferencias entre override y overload.

Hay una confusión entre algunas programadores a la hora de aceptar que la sobrecarga de métodos también es un Polimorfismo, básicamente si nos fijamos en el concepto se podría afirmar que si, ya que el mismo método puede tomar distintas formas dependiendo de los parámetros recibidos, como ya aclaramos un poco lo que es la teoría vamos aplicar los dos tipos de Polimorfismo en la práctica.

Polimorfismo en tiempo de ejecución (runtime), es el más usado y se podría implementar con dos clases hijas que hereden de una clase padre. Este es el diagrama de clases del ejemplo:
Polimorfismo Java
Polimorfismo Java

7/8/15

Ejemplo de un reporte pdf con iText desde Java.

Ejemplo de un reporte pdf con iText desde Java.

Como hacer un reporte pdf desde Java con iText 5.5.6. Ejemplo iText.




iText Dato Java icon iText pdf es una librería muy potente y fácil de usar para generar reportes desde Java , si lo que necesitas es hacer un reporte rápido, sencillo y sin muchas complicaciones esta es la librería para ti, solo la descargamos y la agregamos al proyecto, hay que recordar que la construcción del reporte pdf va ser enteramente en el código fuente Java a diferencia de Jasper Reports que utiliza archivos externos y después los invocamos desde el código. En este tutorial de iText vamos a generar un reporte pdf que tendrá algunas párrafos, listas, tablas y celdas para mostrar un poco las funcionalidades que podemos conseguir con la misma.

Vamos hacer una breve reseña de una cámara y sus características, este es el resultado que queremos conseguir:
Reporte pdf con iText
Reporte pdf con iText
Se ve chévere el ejemplo así que manos al teclado

18/6/15

ZapfDingbatsList symbol list images.

ZapfDingbatsList symbol list imágenes.

ZapfDingbatsList symbol list, todos los símbolos que puedes crear con esta lista.




Si estas utilizando lowagie iText para crear un PDF y necesitas crear una lista con un símbolo en especial pero no sabes cómo hacerlo, o no tienes idea de cuáles son los símbolos que puedes usar, en este Dato Java te traigo la lista de símbolos disponibles en ZapfDingbatsList, recuerda que para crear una lista en lowagie iText necesitas este bloque de codigo:
  com.lowagie.text.List list = (com.lowagie.text.List) new ZapfDingbatsList(51);
  list.add(new ListItem("Item 1"));
  list.add(new ListItem("Item 2"));
  list.add(new ListItem("Item 3"));
  list.add(new ListItem("Item 4"));

  document.add(list);
  
En el constructor de la lista ZapfDingbatsList pasamos el numero del símbolo que queremos utilizar, ese código anterior muestra este resultado en un PDF:
ZapfDingbatsList ejemplo
ZapfDingbatsList ejemplo
Y aquí te dejo los códigos de los símbolos que puedes utilizar en lowagie iText con una lista de tipo ZapfDingbatsList.
ZapfDingbatsList lista de simbolos
ZapfDingbatsList lista de símbolos
Si te sirvió de algo recuerda compartir y si tienes una duda coméntala. Suerte!!

17/6/15

Múltiples partialTriggers en adf. Varios partialTriggers en inputText/outputText

Múltiples partialTriggers en adf. Varios partialTriggers en inputText/outputText.

Múltiples o varios partialTriggers en un solo tag inputText/outputText de adf.




A veces queremos que dependiendo de un evento en particular, ya sea presionar un botón, ingresar un valor en un input o seleccionar un radio button en la interfaz de usuario se refresque un determinado componente o con el atributo partialTriggers, en este Dato Java explico cómo hacer para que un componente se refresque con varios eventos, por ejemplo, 2 input refrescan el mismo componente sin actualizar toda la pagina.
      
       
       
       
       
       
       
      
  
Como se ve en el código anterior es algo fácil, pero si no sabes, esta duda te puede quitar tiempo valioso, solo tenemos que poner en el atributo partialTriggers la cantidad de id's que refrescan ese componente y así podemos refrescar nuestro componente adf con varios partialTriggers.

16/6/15

CallableStatement con parámetros IN/OUT desde java.

CallableStatement con parámetros IN/OUT desde java.

Como ejecutar una consulta a Oracle PL/SQL con un parámetro IN/OUT desde CallableStatement Java.




Cuando trabajamos en Java con una base de datos Oracle PL/SQL sabemos que siempre en el DAO hacemos la llamada a un Strored Procedure y dependiendo de sus parámetros pasamos el valor correcto. Suponiendo que el Stored Procedure sea declarado en Oracle de esta manera:
  PROCEDURE SP_BUSCAR_USUARIO(NUMERO_DOCUMENTO IN NUMBER,
                              CODIGO_MENSAJE   OUT NUMBER,
                              MENSAJE          OUT VARCHAR2);
  
Ya sabemos que este SP tiene parámetros de entrada (IN) y de salida (OUT), para ejecutar este SP desde Java tenemos que hacer esto:
  CallableStatement callableStatement = null;
  Connection connection = null;
  ResultSet resultSet = null;

  String mensajeDevuelto = "";
  int codigoMensaje = 0;
  String sql = "{ CALL  PAQUETE_DATO_JAVA.SP_BUSCAR_USUARIO(?,?,?) }";
  try {
   connection = Control.getConnection();

   callableStatement = connection.prepareCall(sql.toString());
   callableStatement.setInt(1, numeroDocumento);
   callableStatement.registerOutParameter(2, OracleTypes.INTEGER);
   callableStatement.registerOutParameter(3, OracleTypes.VARCHAR);
   
   callableStatement.execute();
   
   codigoMensaje = callableStatement.getInt(2);
   mensaje = callableStatement.getString(3);

   //......
  
Como vemos anteriormente cuando un SP recibe parámetros de entrada (IN) en Java nosotros seteamos el parámetro en el CallableStatement, y si el SP recibe parámetros de salida (OUT) nosotros en Java registramos el tipo de parámetro de salida en el CallableStatement y después procedemos a insertarlo en una variable. Ahora lo que puede enredarnos es como hacer cuando un SP recibe un parámetro de entrada y salida (IN OUT), es sencillo eso lo hacemos así, suponiendo que esta sea la declaración del SP:
  PROCEDURE SP_BUSCAR_USUARIO(NUMERO_DOCUMENTO IN NUMBER,
                              CODIGO_MENSAJE   IN OUT NUMBER,
                              MENSAJE          OUT VARCHAR2);
  
Así lo ejecutamos desde Java:
  CallableStatement callableStatement = null;
  Connection connection = null;
  ResultSet resultSet = null;

  String mensajeDevuelto = "";
  int codigoMensaje = 0;
  String sql = "{ CALL  PAQUETE_DATO_JAVA.SP_BUSCAR_USUARIO(?,?,?) }";
  try {
   connection = Control.getConnection();

   callableStatement = connection.prepareCall(sql.toString());
   callableStatement.setInt(1, numeroDocumento);
   callableStatement.setInt(2, codigoMensaje);
   callableStatement.registerOutParameter(2, OracleTypes.INTEGER);
   callableStatement.registerOutParameter(3, OracleTypes.VARCHAR);
   
   callableStatement.execute();
   
   codigoMensaje = callableStatement.getInt(2);
   mensaje = callableStatement.getString(3);

   //......
  
Para que eso funcione primero tenemos que setear en el parámetro de entrada en el CallableStatement y después registrar el tipo de parámetro de salida en el mismo índice. Suerte, espero te sirva este Dato Java.