G.Bordel >Docencia >TAP | Técnicas Actuales de Programación | (curso 2010-2011) | |||||||
|
|||||||||
tema_anterior | Tema 2: Uso del entorno de desarrollo | tema_siguiente |
|
2.1- Ejemplo inicial: el programa "HolaMundo"
Comenzaremos, como ya es costumbre a la hora de estudiar un nuevo lenguaje de programación desde que lo hicieran Brian Kernigham y Dennis Ritchie para el lenguaje C, viendo el código de un programa que simplemente escribe en la pantalla el texto "Hola mundo". Para hacer algo tan simple como esto, hemos de utilizar un buen número de características de Java que iremos viendo poco a poco. Por el momento nuestro objetivo es más básico: tener un primer contacto con el código Java para ver su "aspecto" y aprender a utilizar el compilador y demás herramientas.
[nota.- en ocasiones, los detractores de Java -alguno hay, pero posiblemente ninguno que conozca realmente el lenguaje- dicen que un lenguaje que no permite hacer una función trivial como la que nos ocupa con un código trivial, no puede ser bueno. Esta "no trivialidad" de nuestro programa es fruto de la alta capacidad de java para la estructuración, lo que beneficia enormenente a la hora de afrontar tareas complejas].
|
|
Sin ánimo de explicar a fondo el programa, comentaremos algún aspecto del mismo. Las tres primeras
lineas son comentarios, que comienzan con el marcador "//"
. Este marcador afecta sólo
a una linea, de modo que no hay marcador de terminación. El programa propiamente dicho esta formado
por las lineas 5 a 9. Todo el código en Java se escribe definiendo "clases", concepto central en la
programación orientada a objetos, de modo que vemos que en nuestro ejemplo se hace esto: el código
de las líneas 6 a 8 está encerrado en un bloque (lineas 5 y 9) que indica que se trata de una "clase"
de nombre "HolaMundo" y que tiene la característica de ser pública (ya veremos esto). Las líneas 6 a 8
no son otra cosa que una función. Su nombre es conocido para los programadores de C: "main". Es el
punto inicial por donde comienza la ejecución de nuestro programa. Dejamos por el momento las características
de esta función que vienen determinadas por sus atributos y parámetros en la linea 6, para ver su
contenido. Como puede verse sólo hay una sentencia que consiste en una llamada a una función de nombre
un tanto complejo -System.out.println-
pero que sin duda lo que hace es imprimir lo que
le es dado como parámetro.
Antes de aplicar a este programa las utilidades de desarrollo vamos a ver una segunda versión del mismo en la que utilizaremos la orientación a objeto. Evidentemente para algo tan simple no es necesario plantearse tal solución, pero será un ejemplo básico para entender lo que son clases y objetos en una primera aproximación.
|
|
|
|
Tenemos ahora la declaración de dos clases que van a colaborar en la solución de nuestro problema.
La primera es muy similar a la vista anteriormente, y en ella sólo ha cambiado la linea que ejecutaba
la escritura del mensaje, que ha sido sustituida por dos lineas que hacen referencia a la otra
clase. Esta otra clase, de nombre Saludo
consta de una declaración de la variable
saludo
[línea 6] como String
(cadena de caracteres) y dos funciones [líneas 8-10 y 12-14].
En la línea 13 nos encontramos con la llamada a la rutina System.out.println
que ha "desaparecido"
de la otra clase, aunque con un parámetro diferente.
Haremos dos observaciones antes de continuar analizando el código:
Saludo
es el nombre de la clase y en ella tenemos una variable saludo
de modo que estamos haciendo uso del hecho de Java distingue entre mayúsculas y minúsculas en la formación de los identificadores
si se observa detenidamente la segunda clase, hay una excepción a este último punto: hay una función con nombre idéntico a la clase, y por tanto comienza con una mayúscula. Esto es correcto, puede haber una o varias funciones con idéntico nombre a la clase y tienen una función especial como veremos enseguida.
Seguimos con la interpretación del ejemplo. Ahora nuestro programa principal -main-
va a hacer uso de que existe una definición de una clase que "sabe" generar saludos. Esta clase
establece unas características y un comportamiento que será dado a cada objeto que se cree siguiendo
su definición. Estos objetos tendran una variable "saludo"
(cada uno la suya) y podrá
ejecutarse sobre ellos las dos funciones "Saludo()"
y "saludo()"
. Veamos esto
analizando el uso que la primera clase hace de esta segunda. En la linea 7, se declara una variable
"hola"
como de "tipo" "Saludo"
, lo que quiere decir que "hola"
es una variable preparada para "referirse" a un objeto que se genere de acuerdo con la declaración de la
clase "Saludo"
. Inmediatamente se inicializa esta variable dandole un valor, osea, un objeto.
Para ello se gerera el nuevo objeto (se "instancia") mediante el operador new
, que hace
la reserva de memoria necesaria, y llamando a la rutina del mismo nombre que la clase. Esa rutina
actúa como un inicializador (en nuestro caso toma como parámetro una String y almacena su valor en
la variable del objeto recien generado). Las rutinas de nombre igual a la clase se denominan, dado su uso, "constructores".
En nuestro ejemplo, al llegar a la linea 8 disponemos de un objeto de clase Saludador
que tiene en su variable interna
el valor "Hola". En esa linea 8 se le dice al objeto (hola
) que ejecute la rutina saludo
(hola.saludo(...)
)
dandole otra String como parámetro, de modo que analizando lo que esta hará -linea 13- vemos que
presentará en pantalla una cadena de caracteres formada por la que retiene el objeto en su variable
interna, más una coma y la cadena que le damos como parámetro.
Hemos visto unos ejemplos básicos que nos permitiran continuar con este capítulo, y además hemos ido avanzando algunos conceptos y terminología. Esto se ha hecho sin afán de precisar y en realidad se han cometido algunas inexactitudes (no errores) que se "fijarán" en los capítulos pertinentes. De todos modos antes de avanzar, y por no mantener una de estas inexactitudes diremos que el termino aquí usado de "función" no se utiliza en los lenguajes orientados a objeto, sino que se habla bien de "constructores" bien de "métodos", distinguiendo de este modo los dos casos.
En este punto puede resultar conveniente leer lo que se explica sobre "objetos y clases" en un apartado posterior de este curso [§4.1].
Siguiente punto: 2.2- Bibliotecas de clases: su estructura
Plataforma de soporte a curso y contenidos (c) German Bordel 2005. |