05 diciembre 2012

¡Hello World! en Java (Estricto al paradigma OO)

Esta será una entrada super corta. Cuando uno aprende un lenguaje de programación uno de los primeros ejemplos que le dan es el famosísimo "Hello World!", Java en este aspecto no es la excepción.

Sin embargo me encuentro con que el ejemplo mas sencillo realmente no es OO.

public class SayHello {
  public static void main(String args[]) {
    System.out.println("Hello World!");
  }
}  

¿Muy lindo no? El problema es que no considera la orientación a objetos y es un simple ejemplo de programación estructurada al estilo de C.

Comencemos por la función "main", esta es una simple convención. Todo programa tiene que tener un punto de entrada al iniciar su ejecución, se decidió para mantener la sintaxis similar a otros lenguajes que el punto de entrada de una clase Java fuera la función main junto con los parámetros de la linea de comandos que se guardan en el arreglo args[].

¿Que tal si hacemos un SayHello? Realmente orientado a objetos.

public class SayHello {
  private String message;

  public SayHello() {
    this.message = "Hello World!";
  }

  public String toString() {
    return this.message;
  }

  public static void main(String args[]) {
    System.out.println(new SayHello());
  }
}

¿Cual es la diferencia? Primero estamos haciendo uso de la encapsulación, para el ejemplo la clase SayHello contiene un atributo interno que guarda el estado del mensaje. Este mensaje es establecido al inicio por el constructor de la clase y solo podemos acceder a el mediante un método toString(). Por convención cuando java quiere hacer una conversión de un objeto al tipo String utiliza la funcion toString, es por eso que podemos instanciar un nuevo objeto del tipo SayHello en nuestra llamada al método println y este lo trata como si fuera una cadena de texto. 

¡Y ya! Eso es todo, espero no me odien por haberlos hecho perder dos minutos de su vida ;)