lunes, 14 de mayo de 2007

Java (3. Conceptos básicos de la programación)

Tenemos una idea de lo que es Java. Tenemos el entorno preparado para empezar a programar... y si pensabas que en este capítulo ya ibamos a tirar código estás muy equivocad@. :P

Intentaré no extenderme mucho, ya que éste capítulo tiene un montón de detalles en los que se podría profundizar más; pero no es el objetivo.

Todos tenemos una idea de lo que es un ordenador; pero pocas personas son conscientes de todo lo que ocurre en su interior cuando estamos abriendo un correo, escuchando música o ejecutando un juego.

Hablaremos, y muy poco, de la CPU. La CPU es el "cerebro" de nuestra máquina. Es la encargada de procesar toda la información que llega a nuestro ordenador, tratarla y dar un resultado. El ser humano utiliza el lenguaje para transmitir información. Para ello contamos con un léxico, reglas gramáticales, etc. Un ordenador es más sencillo que todo eso; nuestro ordenador sólo entiende de "1" y "0" (binario). Evidentemente esto es una forma cómoda para nosotros. Por nuestro ordenador lo que circula son impulsos eléctricos y su ausencia o no hará que se determine si ha llegado un "1" o un "0". Cada uno de estos valores se le denomina bit. Los bits se agrupan en grupos de 8 para formar un byte. 1024 bytes = 1 kilobyte; 1024 kilobytes = 1 Megabyte; ...

En los comienzos de la informática se programaba en código máquina. Más tarde se facilitaron un poco las cosas gracias al lenguaje ensamblador. Un lenguaje de bajo nivel y específico al diseño de la CPU (registros, instrucciones, etc). Lo cual quiere decir que un programa escrito para una máquina A probablemente no funcionaría para una máquina B.

Vamos a pegar un gran salto... por arte de mágia los lenguajes fueron evolucionando hasta llegar a los lenguajes de alto nivel.

La sintaxis se asemeja mucho a la forma de hablar del hombre y con la Programación Orientada a Objetos, además, copia su realidad, su forma de pensar y de entender las cosas.

La Programación Orientada a Objetos es una forma de entender la programación. Toda entidad del mundo real queda reflejada en forma de objeto en nuestro programa. Todo objeto existe independientemente de los demás, es autosuficiente. Sólo él es dueño de su estado.

Un objeto, además de existir, tiene unas propiedades o atributos que definen su estado. También cuenta con una serie de métodos que le permite realizar ciertas acciones.

Pongamos como ejemplo a una persona llamada Ramón.
 

Ramón tiene 34 años, pesa 71 Kg y mide 179 cms.
Además, como buen andaluz, Ramón sólo sabe comer, cantar y bailar.

Es muy fácil determinar cuáles son los atributos y los métodos de Ramón.
Atributos
Nombre: Ramón
Edad: 34
Peso: 71
Altura: 179

Al igual que sus métodos.
Métodos
comer();
cantar();
bailar();

Podríamos decidir que el método "comer()" modifique el "Peso" de Ramón. Que el método "cantar()" haga que Ramón le cante a la Virgen de la Esperanza es lo último que se pierde. Y que el método "bailar()" haga que Ramón levante los brazos y se ponga a girar sobre si mismo.

Si nos fijamos bien, hemos creado a Ramón a partir de un patrón. Ese patrón es lo que se conoce por Clase. Una clase no existe en el mundo real. Podemos encontrar millones de personas en el mundo, cada una de ellas será una instancia de la clase "Persona"; es decir, existen millones de objetos del tipo "Persona" en el mundo.

En nuestro mundo, las personas solo tienen nombre, edad, altura y peso. Y lo único que saben hacer es comer, cantar y bailar. Teniendo la Clase definida podremos crear cuantos objetos queramos. Es más, no podíamos crear a Ramón si no hemos definido antes la clase "Persona".

Un ejemplo más para que quede claro.

Clase "Coche":
Atributos
Nombre
Color
Cilindrada
Velocidad Actual

Métodos
Acelerar();
Frenar();

Creémonos un coche (Objeto del tipo de la Clase Coche):
Atributos
Nombre: SEAT León :D
Color: Negro
Cilindrada: 2000
Velocidad actual: 0

Como podeis ver los atributos son datos que se almacenarán de una forma u otra. Y que no es lo mismo la forma que tiene de almacenarse el "Nombre" del coche a su "Velocidad actual". Por ello se introduce el concepto de tipo de dato. Cuando creemos nuestro objeto "Seat León" necesitaremos lo que se denominan variables para almacenar sus atributos. Una variable en programación se asemeja mucho al concepto de variable matemática. Una variable no es más que una referencia a cierta información que se encuentra en la memoria de nuestro ordenador.

Para poder acceder correctamente al contenido de esa variable debemos conocer el tipo de la misma. Por ejemplo:

Si queremos almacenar la cilindrada de nuestro coche necesitaremos una variable de tipo "entero". Si queremos almacenar el nombre del coche, necesitaremos una "cadena de carácteres".
La velocidad actual, al contar con decimales, podríamos usar un variable de tipo "entero con decimales".

Tampoco nos vamos a preocupar demasiado por el asunto de cómo almacenar los atributos y qué debemos hacer exactamente. Lo importante es saber la diferencia entre Objeto y Clase. Saber para qué sirven los atributos y para qué sirven los métodos.

En cuanto a éste último concepto. Ya hemos dicho que los métodos son "acciones" que pueden realizar los objetos. Nuestro coche tiene 2: "acelerar()" y "frenar()". Se adivina que cuando hagamos uso de ellos modificaremos la "Velocidad actual" del mismo.

<-- --="" descanso="">

Recopilando.

Hemos visto y entendido (espero) por qué Java es un lenguaje Orientado a Objetos. Hemos creado en nuestra mente nuestra 2 primeras Clases.

Vamos a suponer que conocemos la forma de pasar la Clase "Coche" a Java. Que ya sabemos escribir la sintaxis y además nos hemos creado un coche para acelerar y frenar con él.

Nuestra CPU no entenderá nada de lo que hemos escrito. La CPU no entiende el Código Fuente. Dijimos al principio que la CPU sólo entiende el código máquina. ¿Qué hacemos con nuestras flamantes 30 líneas de código escritas en Java?

Tenemos que convertirlas en el lenguaje que entiende nuestro microprocesador (CPU). Este proceso se llama compilación. Es realizado por el compilador de Java. Una vez compilado tendremos un fichero entendible por nuestra CPU....

¡FALSO!

Esto es lo que ocurre en la mayoría de lenguajes como C, C++, Pascal,... Dijimos en el primer capítulo que los programas de Java eran portables. Una misma aplicación funcionaría en una PDA, un sistema Unix, un PC con Windows, ... Esto es porque el compilador de Java no genera archivos compilados en código máquina. Si no en bytecodes. Los bytecodes son interpretados por la Máquina Virtual de Java (JVM) o cómpilados a código máquina nativo en tiempo de ejecución. No es la CPU quien ejecuta las aplicaciones Java directamente. Es la JVM quien se encarga de hacer de CPU y traducirle a su lenguaje los bytecodes. Cómo existen JVM en muchos sistemas nuestra aplicación funcionará en todos ellos.

Y se acabó este tema. Es importante entender los conceptos aquí introducidos. Se irán haciendo referencias a ellos constantemente y en el próximo capítulo (como en las series xD) pondremos a prueba lo que se ha explicado con un par de ejemplos prácticos.

Próximo cápitulo: 4. Nuestro primer programa.

Tutorial propiedad de www.pollodegomaconpolea.net de libre distribución siempre que se haga referencia a éste sitio.


4 comentarios:

cinthia dijo...

yo queria ejemplos de las poleas no de esto ok x fa

loixartx dijo...

Aún no sé cómo usar mi pollo de goma con polea; espero hacer pronto un tutorial.

¡Un saludo!

nati dijo...

ola

loixartx dijo...

Hola xD