martes, 28 de febrero de 2012

Curso gratuito de programación para principiantes en java. (6.Clases)

1.1 Objetivos del tema.
Hemos visto los componentes de un programa, hemos ido nombrándolos de dentro hacia fuera, es decir:
    Dato Variable Expresión Instrucción Estructuras Procedimientos y funciones.

Nos queda ver el o un elemento que contiene a todos estos, que es la clase. 

La clase es el elemento estructural que aglutina todos los anteriores y permite que expresemos nuestros programas. 

La clase está a su vez utilizada dentro del programa. 

1.2 Introducción. 
Si nuestro estilo de programación no contempla, comparte, o lo que cada uno desee, el uso de clases y objetos, el escalafón acaba con los procedimientos y funciones, y estos se utilizan directamente dentro del programa. 

Ni uno es malo, ni el otro es perfecto, son sistemas, estilos y filosofías distintas, pero no se puede negar que el uso de clases es positivo dentro de la programación. 

En la actualidad el tipo de programación que se realiza es lo que denominamos, P. O. O., programación orientada a objetos. 

Dicho de otra forma, la materia explicada en temas anteriores, se colocan en el interior de lo que denominamos clases, con las que crearemos los objetos. 

Un objeto es un elemento derivado de una clase. 

La clase es un elemento estructural en un programa que dispone de: 

    Propiedades: que al fin y al cabo son datos, vistos anteriormente. Métodos: que son procedimientos y funciones, en cuyo interior tenemos las estructuras básicas de programación vistos en el tema cinco y en el tema anterior. Eventos: que se construyen también mediante código.



1.3 Clase. 
En programación, un objeto es un ente que es capaz de realizar tareas y reaccionar ante aquello que tiene a su alrededor, ante los eventos que lo rodean, sea un partido de fútbol, una película, una sensación, y al que dotamos de una serie de características, alto, bajo, grande pequeño y que se definen cuando creamos el objeto y que podemos dejar que quien vaya a utilizarlo los pueda modificar, pero siempre bajo nuestro control, claro, para eso el objeto lo hemos creado nosotros. 

Como lo que no se hace en informática es crear varias veces lo mismo, las clases las escribimos una sola vez, y lo que se hace es crear algo así como un molde con el que luego vamos haciendo copias. 

Para profesionalizar la parrafada de antes, al molde se le llama clase, y a esa clase le dotamos de una fisonomía, característica, a los elementos que describen esa fisonomía, lo llamamos propiedades. 

Las tareas que queramos que sea capaz de realizar las denominamos métodos. 

Y a la capacidad de reaccionar a los estímulos exteriores lo llamamos eventos. 

1.4 Propiedades. 
Un ejemplo muy cercano, el ser humano, si deseamos crear una clase que imite al ser humano le podríamos crear una serie de características, propiedades, como: 

    Sexo Altura Color del pelo Color de los ojos

Por lo tanto las propiedades describen el objeto. 

Podemos crear características internas, que no se podrán utilizar fuera del objeto, y otras que serán externas y que sí que se verán en el objeto y podrán ser modificadas lo que permitirá crear objetos de distintos tipos. 

Estas características externas son las que de verdad denominamos propiedades, pues es posible que sean modificadas por quien utiliza la clase, quien de verdad genera después el objeto. 

Las características internas, por llamarlas así, son en realidad variables de la clase, las propiedades también lo son, pero se ven por parte del usuario. 

1.5 Método. 
Y como queremos que sea capaz de hacer cosas le enseñaremos métodos. 

    Caminar Hablar Leer Escribir Correr

De ésta forma, escribiendo los métodos, es decir el lugar donde se escribe el código de nuestro programa, se le dota de capacidades ejecutivas a la clase, las capacidades que dispondrá el objeto que de ella se derive. 

1.6 Eventos. 
Y para que sea capaz de reaccionar ante lo que tiene a su alrededor, le dotaremos de sentidos, que sería la forma de poder reaccionar a lo que hay a su alrededor. 

    Vista Oído Olfato Gusto Tacto

Con eso conseguimos que un objeto sea capaz de reaccionar a los actos que se producen a su alrededor, y nosotros generaremos los eventos en los cuales tengamos interés. 

Si no necesitamos saber si llueve o no, habrá evento EstaLloviendo, etc.. 
Y podríamos seguir enseñándole cosas, podríamos seguir escribiendo métodos y creando propiedades que definan a una persona, en la misma clase, o creando una nueva que herede las capacidades de la que ya existe. 

    Longitud del pelo. Ancho de la cintura Ancho del pecho Longitud de las piernas.


1.7 Polimorfismo. 
Pero las personas no son todas iguales, y cada una dispone de distintas habilidades, por lo que podremos dotar de más habilidades a ésta clase, a ésta persona. 

    Pintar Dibujar Sumar Bailar

De esa forma, si nos fijamos cambiando el color de los ojos o del pelo, o del sexo, a partir de un mismo punto de partida, podemos crear distintos tipos de personas. 

1.8 Herencia. 
Lo que no vamos a hacer nunca tampoco es escribir una parte de un programa de nuevo, cuando ya lo hemos escrito anteriormente, por lo que lo que se va haciendo es crear clases, moldes base que luego vamos enriqueciendo a partir de las ya existentes, a este concepto de aprovechamiento de lo ya existente lo denominamos herencia. 

De esa forma podemos crear una clase base denominada persona con las características estándar, o un bebe, si queremos llamarlo así, al que hemos de ir enseñando a hacer cosas. 

El bebe solo lo definiríamos por ejemplo con 

    Sexo Altura Color pelo Color ojos Color de la piel

Le enseñaremos solo a 

    Hablar Leer Escribir Andar Correr

Y le dotaremos de la posibilidad de reaccionar ante 

    Calor Frío Seco Mojado

Y después crearíamos una nueva clase que heredara esas capacidades y le añadiríamos otras nuevas. 

De esa forma podríamos entrenarlo para que fuera un gran cocinero. 
Le potenciaríamos la posibilidad de percibir los olores y los sabores. 
Mejoraríamos su habilidad en el manejo de las manos. 
Podríamos crear una clase que fuera un matemático, al cual le potenciaríamos sus capacidades mentales para el cálculo y la lógica. 

1.9 Ocultación. 
Pero en el manejo de estas posibilidades nunca permitiríamos que el diseñador de la clase cocinero o matemático pudiera cambiar el color del pelo, o de los ojos. 

Esta característica que permite proteger las características del bebe se denomina ocultación. 

1.10 Aplicación. 
Con lo que hemos comentado, si es capaz de asumir, madurar, y comprender lo que ha leído, el pasar de la fase de abstracción a la real le supondrá muy poco esfuerzo, ya que los conceptos base de la P. O. O., son los comentados, solo queda la aplicación. 

Veamos un ejemplo un tanto irreal. 
Desarrollamos una clase que denominamos Humano: 

Código:
Clase Humano
Propiedad Sexo
Propiedad Altura
Propiedad Raza
Propiedad ColorOjos
Propiedad ColorPelo
Metodo Caminar
Fin de metodo
Metodo Hablar
Fin de metodo
Metodo Leer
Fin de metodo
Metodo Escribir
Fin de metodo
Fin de Clase


Cada uno de esos métodos, contendrá el código adecuado para que se realice la acción que tiene como misión.
Por ejemplo el método Leer, podría ser:

Código:
Metodo Leer(NombreLibro)
Fin de metodo


Y recibiría como parámetro el nombre de un libro, el cual habría que leer.
En el interior del método podríamos tener escrito algo como:

Código:
Metodo Leer(NombreLibro)
AbrirLibro(NombreLibro)
Mientras haya Hojas
Mientras haya Lineas
Mientras haya palabras
Leer palabra
Fin de mientras
CambiarDeLinea
Fin de mientras
CambiardePagina
Fin de mientras
CerrarLibro
Fin de metodo


Pero podríamos añadir un parámetro que fuera leer en voz alta, o podríamos añadir una condición que fuera leer si no estas cansado.
Por lo tanto podría quedar:

Código:
Mientras haya Palabras
Leer Palabra
Si hay que leer en voz alta
Mujer.Hablar Palabra
Fin de condición
Fin de mientras


O podría ser también:

Código:
Mientras haya Palabras Y NoEstoyCansado
Leer Palabra
Fin de mientras


O evidentemente todo junto.

Código:
Mientras haya Palabras y NoEstoyCansado
Leer Palabra
Si hay que leer en voz alta
Mujer.Hablar Palabra
Fin de condición
Fin de mientras


NoEstoyCansado sería una función que podría analizar el estado anímico del objeto Mujer y devolver Cierto o Falso, de tal forma, que si es cierto se sigue leyendo y si no, se abandona la lectura.

Así que podríamos llegar a algo parecido a lo siguiente.

Código:
Metodo Leer(NombreLibro)
AbrirLibro(NombreLibro)
Mientras haya Hojas Y NoEstoyCansado
Mientras haya Lineas Y NoEstoyCansado
Mientras haya Palabras Y NoEstoyCansado
Leer Palabra
Si hay que leer en voz alta
Mujer.Hablar Palabra
Fin de condición
Fin de mientras
CambiarDeLinea
Fin de mientras
CambiardePagina
Fin de mientras
CerrarLibro
Fin de metodo


Una vez que disponemos de la clase ya escrita, el siguiente paso es poderla utilizar.

Eso se realiza ya dentro de nuestro programa.

El primer paso sería declarar un objeto del tipo de la Clase, recordemos que cuando declaramos una variable, es porque va a almacenar un dato, ese dato tendrá un tipo, y la variable ha de concordar con ese tipo de dato.Con los objetos ocurre lo mismo, si declaramos un objeto, es porque deseamos que ese objeto realice una serie de acciones, el objeto es capaz de realizar esas acciones porque la clase de la que se deriva, posee esas capacidades.
Por lo tanto hay que crear el objeto de la clase que nosotros sabemos que posee esas características.

Un ejemplo, desde un programa se pueden utilizar las librerías de Office, y se puede declarar un objeto que llamemos Hoja y que se crea con las mismas características y habilidades que puede tener Excel, o se podría hacer también con Word, declaramos un objeto que llamamos Documento del tipo Word, y podríamos escribir un documento de Word a partir del contenido de una base de datos, sin pulsar una sola tecla, y lo más divertido, podríamos ver como el documento se escribe solo en pantalla.

Anécdotas a parte, un objeto es eso, un elemento en nuestro programa con las capacidades de realizar las cosas de la clase de la cual deriva.

En el programa el primer paso sería asignar al objeto los valores de las propiedades que definirán al objeto.

Código:
Mujer.Sexo = "M"
Mujer.Altura = 180
Mujer.Raza = "Blanca"
Mujer.ColorOjos = "Verde"
Mujer.ColorPelo = "Negro"


La siguiente fase ya sería su utilización.

Código:
Mujer.Leer


O

Código:
Mujer.Escribir


Por lo que el programa podría quedar:

Código:
Inicio Programa
Declarar Mujer del tipo Humano
Mujer.Sexo = "M"
Mujer.Altura = 180
Mujer.Raza = "B"
Mujer.ColorOjos = "Verde"
Mujer.ColorPelo = "Negro"
Mujer.Leer
Fin de programa


Claro está que esto es la mínima expresión de lo que podría ser, pero solo pretende ser eso, un ejemplo.

1.11 Conclusiones.
Evidentemente la aplicación es más compleja, pero lo es, por los tecnicismos necesarios en la escritura de los programas, no porque cambie lo expuesto anteriormente.

Si los conceptos están claros, la comprensión de la tarea de programar se facilita en gran medida.

Programar es dominar una técnica, la técnica no cambia, lo que cambian son los lenguajes.

Para llegar a la técnica y tener agilidad en el planteamiento y comprensión de los planteamientos de un programa, es necesaria la experiencia, y la experiencia solo se logra con la práctica y el trabajo del día a día.

1.6 Vídeo de refuerzo.
Por último dejamos un vídeo de refuerzo por si algún concepto no ha quedado claro.



1.12 Ejercicios propuestos.
Plantéese el crear una clase Casa, que sea capaz de crear una casa de cualquier tipo, en cuanto a número de habitaciones, baños, etc..

Añádale la posibilidad de tener varias casas en un mismo edificio, el número de plantas, el número de casas por planta. Posteriormente, añádale la capacidad de que la casa pueda tener piscina, barbacoa, jardín, garaje.

1.13 Solución a los ejercicios propuestos. 

Código:
Clase Casa
Propiedad M2Cocina
Propiedad M2Baños
Propiedad M2Salon
Propiedad Habitaciones
Propiedad M2Habitacion
Propiedad Baños
Metodo CrearHabitacion
Declarar X
X = 0
Mientras X < Habitaciones
DibujarHabitacion M2Habitacion
X = X + 1
Fin de mientras
Fin de metodo
Metodo CrearBaño
DibujarBaño M2Baños
Fin de metodo
Metodo CrearSalon
DibujarSalon M2Salon
Fin de metodo
Metodo CrearCocina
DibujarCocina M2Cocina
Fin de metodo
Fin de Clase
Inicio Programa
Declarar Piso del Tipo Casa
Piso.M2Salon = 20
Piso.M2Baño = 8
Piso.M2Habitacion = 12
Piso.CrearSalon
Piso.CrearBaño
.. / ..
Fin de programa


Esta solución es eso, solo una versión, y que cada cual puede mejorar y reinterpretar.


Autor del curso: Casiopea

No hay comentarios:

Publicar un comentario