domingo, 28 de junio de 2015

SERIALIZACIÓN

¿QUE ES LA SERIALIZACIÓN?

La serialización de un objeto consiste  transformar un objeto q una secuencia de bytes que represente el estado de dicho objeto. 
Cuando el objeto ya está serializado se puede guardar en un fichero o puede enviarse a través de la red para reconstruirlo en otro lugar. 

Para que un objeto sea serializable basta con que implemente la interfaz Serializable. Como la interfaz Serializable no tiene métodos, para implementarla, solo debemos escribir implements Serializable . 



Para la implementacion de nuestro ejemplo debemos conocer que:

"Un ObjectOutputStream escribe tipos de datos primitivos y gráficos de objetos Java a un OutputStream
Los objetos pueden ser leidos(reconstituida ) utlizando un ObjectInputStream ."

Para comprender de mejor manera la serialización , lo explicaremos en el siguiente ejemplo:

el cual consta de 3 clases: Paciente , Aplicacion y  la AplicacionLectura.

Clase Paciente:

Creamos una clase Paciente a la cual vamos a implementar  Serialización.
para eso escribimos:  implements Serializable.
Luego implementamos cada una de las variables :


Implementacion de constructores :



Implementacion del toString, en el cual vamos a proporcionar todos los valores de cada uno de los atributos.

Clase Aplicacion:


En esta aplicación vamos a crear e inicializar 4 objetos del tipo Paciente con sus respectivos datos(documento,nombre,género ) .

luego vamos a crear un archivo llamado INFORMACION_PACIENTES.txt con el método FileOutputStream .
 Creamos un objeto llamado salida  del tipo ObjectOutputStream, el cual va a enviar a la salida el archivo de texto.




Al ejecutar el programa se creará automáticamente nuestro archivo.

Al abrir el archivo de texto se mostrará unos caracteres especiales (diferentes) esto se debe  a que lo que estamos envíando  son bytes  .




Clase AplicacionLectura:

Cuando el archivo ya este creado vamos a leerlo a través de el ArrayList de Paciente  en el cual  almacenaremos los diferentes valores de cada uno de los atributos , mediante la creación de un objeto del tipo ObjectInputStream.



Al  ejecutar nuestra aplicación , si no existió ninguna excepción previa , vamos a obtener la siguiente salida :







domingo, 21 de junio de 2015

Ordenamiento en java

Unos de las diferentes formas de Ordenar diferentes atributos en java  es el de utilizar  la interfaz Comparable .
En el siguiente ejemplo veremos la funcionalidad de dicha interfaz.

Clase "Estudiante":

En esta clase hemos implementado la interfaz "Comparable" 


Hemos creado los  GETTERS Y SETTERS de cada uno de los atributos creados.


Sobre escribimos los métodos toString y compareTo .
En el método toString implementamos todos los atributos que hayamos creados y que deseemos que se impriman .
En el método compareTo , el argumento de entrada es un objeto de tipo Estudiante , en el cual se va a analizar el nombre de cada uno de los objetos Estudiante creados .


Clase "Curso":

Importamos la librería Collections.
Creamos un método llamado ordenarNombre( ), el cual nos va a permitir ordenar los nombres de cada uno de los estudiantes en orden alfabético.


y por ultimo la Clase "Aplicacion":
en esta clase vamos a crear el método main , desde el cual inicializamos nuestras variables con los respectivos constructores de cada Objeto.
Luego vamos a imprimir la  lista de estudiantes con cada uno de sus atributos.
y después  vamos llamar al método ordenarNombre( ) ,el cual va a preparar que  ordene los nombres , para luego llamar al método imprimir  , y obtener la lista de estudiantes ya ordenados.





La respectiva salida del programa es la siguiente :



Para ordenar mediante el "IRA"



En la clase Estudiante solo hemos modificado el método compareTo con la siguiente información (la la variable y el getter de "ira" ).

en la clase Curso , no hemos realizado ningún cambio 
en la clase Aplicacion , solo cambiamos el mensaje de impresión a "ESTUDIANTES ORDENADOS POR SU IRA".


La salida es la siguiente:


COMO CREAR TUS PROPIAS EXCEPCIONES EN JAVA

¿QUÉ SON LAS EXCEPCIONES?

Cuando se producen errores en tiempo de ejecución (mientras se esta ejecutando el programa) se denominan excepciones, esto ocurre cuando se produce un error en alguna de las instrucciones de dicho programa, unos de los ejemplos típicos son :cuando se hace una división entre cero,  cuando un objeto es "null", etc. Cuando se produce una excepción se muestra en la pantalla un mensaje de error y finaliza la ejecución del programa.

La jerarquía de excepciones en java es la siguiente:

Todas las excepciones lanzadas automáticamente  son objetos de la clase Throwable o de alguna de sus subclases 
La clase Throwable deriva directamente de Object y tiene dos clases derivadas directas: Error Exception.


 Throwable :es la clase base que representa a todas las excepciones que pueden ocurrir en un programa Java.En esta clase existen varios métodos útiles, que son heredados por las distintas subclases de Throwable.


 try:
En el bloque try se encuentran las instrucciones que pueden lanzar una excepción.
Solamente se pueden capturar las excepciones lanzadas dentro de un bloque try.
Una excepción se puede lanzar de forma automática o mediante la palabra reservada throw.

 catch:
Es el bloque de código donde se captura la excepción. El  catch es el manejador de la excepción. Aquí se decide qué hacer con la excepción capturada. Puede haber varios bloques catch relacionados con un bloque try.
Una vez finalizado un bloque catch la ejecución no vuelve al punto donde se lanzó la excepción. La ejecución continúa por la primera instrucción a continuación de los bloques catch.
finally:
Es opcional.
Se ingrese a continuación de los bloques catch;en ocasiones puede aparecer a continuación de un bloque try si no hay bloques catch.
La ejecución de sus instrucciones queda garantizada independientemente de que el bloque try acabe o no su ejecución incluso en estos casos:
  • Aunque el bloque try tenga una sentencia return, continue o break, se ejecutará el bloque finally
  • Cuando se haya lanzado una excepción que ha sido capturada por un bloque catch. El finally se ejecuta después del catch correspondiente.
Un bloque finally se usa para dejar un estado consistente después de ejecutar el bloque try.

Ejemplo Práctico:

Realizar un programa que me permita obtener la raiz cuadrada de un numero ingresado por el usuario.

Hemos creado una clase llamada ValorNoValido, en el cual se ha creado un constructor que recibe  un argumento de entrada de tipo String.


y otra clase llamada Aplicacion , en esta clase pediremos al usuario que ingrese un número por teclado , para obtener la raíz cuadrado de dicho numero.
se ha implementado nuestra propia excepcion llamada ValorNoValido.