7.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.
7.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.
7.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.
7.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.
7.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.
7.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.
7.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.
7.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.
7.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.
7.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
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
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
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
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
Mientras haya Palabras Y NoEstoyCansado
Leer Palabra
Fin
de mientras
O evidentemente todo junto.
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.
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.
Mujer.Sexo = “M”
Mujer.Altura = 180
Mujer.Raza = “Blanca”
Mujer.ColorOjos = “Verde”
Mujer.ColorPelo = “Negro”
La siguiente fase ya sería su
utilización.
Mujer.Leer
O
Mujer.Escribir
Por lo que el programa podría quedar
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.
7.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.
No hay comentarios:
Publicar un comentario