lunes, 18 de mayo de 2015

Unidad 7. Las clases

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