Tildes en Java

En ocasiones nos puede resultar útil eliminar de una cadena de texto caracteres especiales, acentos o diacríticos (tíldes, diéresis, eñes, cedillas, etc).
Por ejemplo, en algunos sistemas de reservas aéreas o GDSs, como es el caso de Amadeus, necesitamos limpiar todos los textos que hacen referencia a nombres de pasajeros, direcciones y demás, de aquellos caracteres especiales no soportados por el sistema.

-

La representación o descomposición canónica consiste simplemente (de forma muy resumida) en la descomposición del carácter en 2 partes:
- Parte 1: Letra base
- Parte 2: Acento
De esta forma, hemos podido representar el carácter i compuesto por la letra i (0×0061) y su acento (0×0301).
Una vez entendido el concepto de descomposición canónica, es hora de ponerlo en práctica para nuestro cometido: limpiar un texto de acentos y caracteres especiales obteniendo de esta manera un texto sólo de caracteres ASCII.



Caracteres especiales y de escape

Las secuencias de escape son pequeñas constantes que nos brindan una gran utilidad; para comprenderlo mejor este ejemplo (en consola):
 public class SecEsc01 {
     public static void main(String args[]) {
         System.out.println("Este es un ejemplo de Secuencias de Escape");
     }
 } 
 
-
 
Este ejemplo presenta una linea de texto, pero, ¿qué pasa si queremos este texto en tres lineas?, tendríamos que escribir :
 public class SecEsc02 {
     public static void main(String args[]) {
         System.out.println("Este es un ejemplo");
         System.out.println("de");
         System.out.println("Secuencias de Escape");
     }
 } 
 
-
 
Es algo más tedioso, menos mal que existen las secuencias de escape en Java, las cuales nos ahorrarán el trabajo de la siguiente manera:
 public class SecEsc03 {
     public static void main(String args[]) {
         System.out.println("Este es un ejemplo\nde \nSecuencias de Escape");
     }
 }
Pero este es solo un ejemplo. ¿Qué pasa si queremos una pequeña tabulacion? Tendríamos que teclear la barra espaciadora hasta la medida del espacio que queremos, java también soluciona esto de la siguiente manera:
 public class SecEsc04 {
     public static void main(String args[]) {
         System.out.println("\tTexto tabulado");
     }
 } 
 
-
 
A continuación hay una lista de secuencias de escape:
  • \n -----> Nueva Linea.
  • \t -----> Tabulador.
  • \r -----> Retroceso de Carro.
  • \f -----> Comienzo de Pagina.
  • \b -----> Borrado a la Izquierda.
  • \\ -----> El carácter barra inversa ( \ ).
  • \' -----> El carácter prima simple ( ' ).
  • \" -----> El carácter prima doble o bi-prima ( " ).

Interfaces Java

Una interfaz en Java es una colección de métodos abstractos y propiedades. En ellas se especifica qué se debe hacer pero no su implementación. Serán las clases que implementen estas interfaces las que describan la lógica del comportamiento de los métodos.
La principal diferencia entre interface y abstract es que un interface proporciona un mecanismo de encapsulación de los protocolos de los métodos sin forzar al usuario a utilizar la herencia.

-

El uso de interfaces proporciona las siguientes ventajas:

    Organizar la programación.
    Obligar a que ciertas clases utilicen los mismos métodos (nombres y parámetros).
    Establecer relaciones entre clases que no estén relacionadas.

-

interface Bicycle {

    //  wheel revolutions per minute
    void changeCadence(int newValue);

    void changeGear(int newValue);

    void speedUp(int increment);

    void applyBrakes(int decrement);
}

Serialización UID

uando pasamos objetos Serializable de un lado a otro tenemos un pequeño problema. Si la clase que queremos pasar es objeto_serializable, lo normal, salvo que usemos Carga dinámica de clases, es que en ambos lados (el que envía y el que recibe la clase), tengan su propia copia del fichero objeto_serializable.class. Es posible que en distintas versiones de nuestro programa la clase objeto_serializable cambie, de forma que es posible que un lado tenga una versión más antigua que en el otro lado. Si sucede esto, la reconstrucción de la clase en el lado que recibe es imposible. Para evitar este problema, se aconseja que la clase objeto_serializable tenga un atributo privado de esta forma


private static final long serialVersionUID = 8799656478674716638L;
 
de forma que el numerito que ponemos al final debe ser distinto para cada versión de compilado que tengamos.
De esta forma, java es capaz de detectar rápidamente que las versiones de objeto_serializable.class en ambos lados son distintas.