Publicado el 1 comentario

OCAJP 7. Definir la estructura de una clase java.

Definir la estructura de una clase java.

Las clases java tienen dos principales elementos: métodos y campos (fields). Los métodos en otros lenguajes son equivalentes a las funciones y los campos son lo equivalentes a las variables. En java ambos elementos son conocidos como miembros de la clase. Un método es una operación que puede ser llamado por otros métodos. Un método puede recibir datos por medio de Parámetros. Un método puede regresa un valor y declara de que tipo será este valor. Los Parámetros recibidos y los valores regresados por un método son representados por variables.

Las clases java hacen o crean objetos. Un objeto es una instancia creada en tiempo de ejecución  de una clase  ubicada en la memoria utilizada por un programa java. El estado de un programa es representado por todos los objetos de las diferentes clases que lo conforman.

La declaración completa de un método es conocida como la firma (signature) del método.

Ejemplo de una clase simple de java.

Simple Clase Java
Simple Clase Java

Para hacer comentarios de varias líneas en el código, java utiliza el estilo de C.  Pra iniciar un comentario se utilizan los caracteres /* y para terminar el comentario */  Java ignora todo lo contenido entre ese par de caracteres. Si se utiliza el formato de comentario que se muestra en el código anterior se logra a través de la herramienta javadoc generar automáticamente documentación de la clase en formato html. Otra forma de hacer comentarios, en una linea es usando los caracteres //. Todo lo que escriba después de esos caracteres será ignorado por java.

La primera línea de código después del comentario sirve para definir la clase. Se especifica primeramente un modificador de acceso (public) que indica que cualquier clase de cualquier paquete de clases puede acceder a nuestra clase y utilizarla. Se puede omitir este modificador de acceso (public) lo que le indicaría a java que a la clase definida sólo pueden acceder a ella clases del mismo paquete. Un paquete (package) en java, es la forma en que java organiza las clases y demás elemento, es una colección de clases que realizan una función similar. Paquete (package) es otro elemento de la estructura del código de la clase. Sin embargo el el ejemplo antes visto, no se especifica. Si se especificara debería ser la primera línea ejecutable en una clase, antes de definir la clase.

Como en el ejemplo no se especifica ningún paquete, el directorio pertenece a un paquete por default que lo representa el directorio donde fue creado el archivo que contiene el código de la clase. Todas las clases que se codificaran en el mismo directorio y sin especificar el paquete, pertenecerían al mismo paquete default.

Enseguida del modificador de acceso public se encuentra la palabra reservada class que le indica a java que se va a definir una clase. Enseguida se debe proporcionar el nombre que se le va a asignar a la clase, en este caso EstructuraClaseJava. El nombre de la clase puede ser cualquiera que le quiera dar el programador. Por regla de java se utiliza una palabra o palabras que indiquen un sustantivo ya que representarán un objeto en sí. Por regla el nombre de la clase empieza con Mayúscula y se utiliza el formato UpperCamelCase, es decir, si el nombre de la clase está compuesta de varias palabras, cada palabra debe empezar con mayúscula y el resto de la palabra con mayúsculas. Esto es sólo por convención, ya que el compilador java no marcará error si solo se emplean minúscula o sólo mayúsculas o una mezcla de estas, el nombre será válido para java.

Después del nombre de la clase se inicia un bloque que contendrá tanto los campos como los métodos de la clase. Recuerde que un bloque se forma con los corchetes de apertura y cierre. Por conveniencia por lo general se especifican primeramente todos los campos (fields) de la clase y enseguida los métodos, pero no es necesario, métodos y campos se pueden distribuir de otras formas, pueden ir primero los métodos y después los campos, o en forma intercalada, el compilador no marcará error.

En la siguiente linea del código de ejemplo, se declara una variable de instancia o campo x. En éste caso primero se establece el modificador de acceso del campo como privado (private). Ésto indica que a ese campo, otras clases, no lo pueden acceder directamente. Enseguida del modificador de acceso se declara el tipo del campo. Un tipo puede ser el nombre de una clase o un tipo primitivo de java, en este caso es int (número entero).  Enseguida se especifica el nombre de la variable o campo.  Por último punto y coma (;) que define el fin de una instrucción java. Java recomienda que el nombre de los campos, si es una sola palabra, se escriban con minúsculas. Si esta compuesta por varias palabras, la primera palabra inicie con minúsculas y el resto, la primer letra de la palabra inicie con mayúscula y el resto de la palabra con minúsculas al estilo lowerCamelCase.

El siguiente elemento en el ejemplo es un constructor. Esta estructura comienza especificando un modificador de acceso (public) y un nombre que es exactamente igual al nombre de la clase y un conjunto de paréntesis de apertura y cierre. Dentro de esos paréntesis pueden ir una serie de parámetros, pero en el ejemplo están vacíos. Enseguida le sigue un bloque de código que inicia por un corchete de apertura y termina con un corchete de cierre como ya hemos visto. Más adelante en otro tema se tratará específicamente de esta estructura llamada constructor. Los constructores no regresan ningún tipo de valor.

El último elemento en el ejemplo es un método. Se especifica el modificador de acceso (public), el tipo de dato a regresar por el método (int) en este caso un tipo primitivo entero, el nombre del método que por convención de java se declara de la forma lowerCamelCase visto anteriormente, un paréntesis de apertura, una lista de parámetros separados por comas y el paréntesis de cierre. A esta declaración le sigue un bloque de código como los que ya hemos visto. El nombre del método es metodoDeEjemplo. Lo convencional es que inicie con el nombre de un verbo ya que por lo generar los método representan acciones.

En el ejemplo el método solo recibe un parámetro del tipo entero y de nombre m. Si el método recibiera más parámetros, cada par tipo y nombre de variable, irían separados por comas. Como éste método  debe regresar un valor dentro del bloque del método debe haber una instrucción return que debe regresar un dato del tipo especificado en la definición del método, en nuestro caso de tipo entero.

No pueden existir dos métodos con la misma firma (signature) en una misma clase. La firma de un método esta compuesto por el nombre del método, el número de parámetros, el tipo de parámetros y el orden de los parámetros en la lista de parámetros. Los constructores también tienen una firma. Una firma no incluye el tipo de dato que retorna un método.

 

 

 

 

Publicado el Dejar un comentario

Kettle, una herramienta gratuita para extraer, transformar y cargar datos.

Todo trabajador en informática nos hemos topado con la necesidad de pasar datos de una base de datos a otra o de cargar datos a una base de datos desde archivos de texto , hojas de cálculo o archivos dbf, etc.

Y en ocasiones hay que subirlos o pasarlos en un formato diferente al del origen o tener que hacer correcciones u operaciones con los datos antes de que lleguen a su destino. El hacer los programas para llevar a cabo esas tareas llevaba tiempo, dinero y esfuerzo.

Afortunadamente ya existen herramientas tanto comerciales como gratuitas para llevar a cabo estas operaciones de forma casi automática y de forma gráfica. Una de esas herramientas que he utilizado mucho es Kettle de Pantaho. Una excelente herramienta ETL (extracción, transformación y carga) y además gratuita.

Esta desarrollada en java y permite hacer trabajos y transformaciones en forma gráfica. Para operaciones más complicadas de transformación de datos, permite crear tus propios scripts en javascript o java. Permite además guardar todos tus trabajos y transformaciones en un repositorio en una base de datos para poder ser compartidas y ejecutadas por otros miembros de la organización u equipo.

Puedes emplear las librerías java en las que se basa este software para integrar kettle en una aplicación java, ya sea desktop o web, y desde ahí ejecutar los trabajos y transformaciones.

Posiblemente de lo que adolece algo esta aplicación es de que no tiene una buena documentación, pero junto con la aplicación se descargan unos trabajos y transformaciones de ejemplos. Además existen unos unos libros que hablan de esta herramienta.

Se las recomiendo ampliamente. Pueden descargar la última versión desde el sitio de Kettle en Sourceforge, selecciones la versión que dice estable y la más reciente. Para ejecutar la aplicación necesitan tener instalado en su máquina Java 6 o mayor.

Les dejo una pantalla de este excelente software.. ¡saludos!

Kettle en acción
Kettle de Pentaho

 

Publicado el Dejar un comentario

Informix: -23103 – code-set conversion function failed due to illegal sequence or invalid value

Resulta que necesitaba duplicar una base de datos informix en mi trabajo para probar unas nuevas implementaciones al sistema en producción.  La versión de informix en producción era 9.x. Me baje la versión de desarrollo de Informix que es gratuita pero versión 11.x. El sistema operativo de producción es Solaris 10. Mi ambiente de desarrollo Windows 7. Instalé la versión de desarrollo de Informix con algunos pequeños detalles pero al final la instaló y funcionó. Me pude conectar a ella sin problema.

Los operadores de la base de datos en producción me pasó el respaldo completo de la base de datos generada con el comando dbexport, una carpeta formada con el nombre de la base de datos más la extensión exp, Adentro trae los datos y los c comandos para crear la base de datos completa. Después de crear el Dbspace donde iba a estar la Base de Datos de Desarrollo me dispuse a crear la Base de Datos con el respaldo proporcionado.

Ejecuté el comando dbimport nombre_base_de_datos nombre_-d dbspace, el comando inició sin problemas, me aparecía en pantalla los comandos que iba ejecutando, la creación de las tablas y la carga de datos, de pronto se detuvo en la carga de los datos de una tabla, el mensaje que me arrojó fue:

“-23103 – code-set conversion function failed due to illegal sequence or invalid value”

Pues a investigar de que se trataba. El problema era el Locale de la base de datos que estaba importando y el locale del ambiente DOS desde donde estaba ejecutando el comando dbimport. Cada base de datos guarda el locale en el que fue creado. Echando un vistazo a las variables de la ventana DOS donde estaba ejecutando el comando, me aparecieron con el valor por omisión de la instalación de Informix, éstas eran CLIENT_LOCALE=en_US.8859-1 y DB_LOCALE=en_US.8859-1. La primera variable de ambiente le indica a Informix el locale del cliente, la segunda variable el locale de la base de datos.

Para obtener en que locale se creó la base de datos hay que ejecutar en la base de datos sysmatser de informix el siguiente comando:

select * from sysdbslocale where dbs_dbsname = 'nombre_base_de_datos';

La columna dbs_collate es la que andamos buscando, esta columna indica el que locale está la base de datos que queremos importar. En mi caso me arrejó en_US.819. Me fui a ventana de DOS donde estaba ejecutando el comando de importación, borre la Base de Datos creada parcialemente por medio de comando dbaccess.

Establecí las variables de ambiente de la siguiente forma: SET CLIENT_LOCALE=en_US.8859-1 y SET DB_LOCALE=en_US.819

Y nuevamente ejecuté el comando dbimport y asunto arreglado.

Espero y les sea de utilidad.