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

OCAJP 7. Java Básico. Definir el alcance de las variables.

Definir el alcance de las variables.

Los parámetros de un método en una clase son conocidos como variables temporales. El valor y el nombre de estas variables expiran cuando el método llamado regresa el control al código que lo invocó. Cualquier variable definida en la lista de parámetros del método o dentro del cuerpo del método permanecen en memoria sólo lo que dura  en ejecutarse el método llamado.

En java existen cuatro tipos de variables:

  • Variables de Instancia (Campos No-Estáticos). Los objetos almacenan su estado individual en campos no-estáticos. Son declarados sin la palabra clave static. Sus valores son únicos para cada instancia u objeto.
  • Variables de Clase (Campos Estáticos). Son campos declarados con el modificador static. Hay sólo una copia de esta variable para todas la instancias de la clase.
  • Variables Locales. Es en donde los métodos de los objetos almacenan su estado temporal. Se declaran parecido a los campos. No existe una palabra clave para especificar que una variable es local sino que depende donde la variable es declarada: dentro de los corchetes que definen un método. Son accesibles sólo dentro del método que las declaró y no son accesibles del resto de la clase.
  • Parámetros. Son las variables que conforman la firma de un método. Son siempre clasificados como variables y no como campos. También se encuentran en otras construcciones que aceptan parámetros como los son los constructores y manipuladores de excepciones.

Llamaremos campos a  las variables de instancia y de clase. Llamaremos variables a las anteriores más las locales y parámetros. Un campo o field está disponible en memoria el tiempo que el objeto que la contiene permanezca en memoria. En java una variable local debe de ser declarada antes de ser  usada.

El scope  ó alcance de las variable se refiere en que lugar del programa una variable específica puede ser usada o referenciada. Por lo general las variables pueden ser usada dentro del bloque de instrucciones al que pertenecen y no fuera de estos. Un bloque  se crea cada vez que tú abres y cierras corchetes ya sea para definir una clase, método o cualquier otra construcción que se verán más adelante. Más específicamente, el scope o alcance de una variable local abarca desde donde se declaró, hasta el corchete de cierre del bloque al que pertenecen El tiempo de vida de las variables depende del scope o alcance donde fueron declaradas. Sólo se puede declarar una vez una variable dentro de un bloque.

El alcance de los parámetros en un método, es todo el método completo. Las variables declaradas en la parte inicial de un ciclo for es el ciclo entero. Se puede declarar varias veces una variable local con el mismo nombre dentro de bloques no anidados dentro de un mismo método, pero es inválido declarar la variable local en bloques anidados.

Scope de Variables
Scope de variables

 

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