1.1 Objetivos del tema.
Hemos visto los componentes de un programa, hemos ido nombrándolos de dentro hacia fuera, es decir:
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.
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