Programación Orientada a Objetos – Características de la POO

Este post es parte de una serie de artículos sobre POO y viene a continuación de ¿Qué es P.O.O.?

Características de la P.O.O.:

No hay un acuerdo aceptado por todo el mundo respecto a cuáles son las características que definen la POO, pero al menos todos concuerdan en estas tres:

  1. Abstracción.
  2. Encapsulación.
  3. Herencia.

Abstracción:

Cada vez que pronunciamos una palabra, realmente lo que hacemos es asociar ese sonido (o ese conjunto de garabatos al escribir) con una serie de cosas. Decimos que una ave es tal cosa, que una silla es tal otra, etc.

Cuando vamos a aplicar la POO, lo primero que debemos hacer es cumplir con una vieja máxima de guerra: Divide y Vencerás. Es decir, lo que hacemos es seccionar nuestro código en grupos de código más pequeño que, al unirlos, hacen el trabajo. Un buen ejemplo de abstracción es el cuerpo humano, aunque el cuerpo es una unidad, está dividido en lo que conocemos por sistemas (el sistema respiratorio, el sistema linfático, cardiovascular, etc., etc.). Estos sistemas, a su vez están compuestos por otros más pequeños: los órganos, y así sucesivamente. La abstracción nos permite dividir nuestro programa en distintos objetos que se agrupan para formar cosas más complejas.

Pero ¿qué demonios es realmente la abstracción? Básicamente es la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma singular. Como cuando describimos el cuerpo humano y decimos cabeza, brazo(s), pierna(s), etc.

Encapsulación:

También conocida como ocultamiento. Cuando me acuesto a ver televisión no me preocupo del modo como éste funciona, o lo que hace para cambiar de canal o aumentar el volumen. A menos que seas experto en electrónica o técnico en televisores, te pasará lo mismo: no lo sabes y no te importa; sólo sabes que al presionar un botón ocurre la magia.

La encapsulación se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dándole al programador acceso sólo a lo que necesita. Esto da dos ventajas iniciales: Lo que hace el usuario puede ser controlado internamente (incluso sus errores), evitando que todo colapse por una intervención indeseada (tú no quieres que tu mamá, que no tiene ni idea de electrónica, abra tu televisor y empiece a jugar con los circuitos para cambiar los canales manualmente ¿verdad?). La segunda ventaja es que, al hacer que la mayor parte del código esté oculto, puedes hacer cambios y/o mejoras sin que eso afecte el modo como los usuarios van a utilizar tu código. Sólo tienes que mantener igual la forma de acceder a él (en el caso del control de la tele, que los botones sigan siendo los mismos y que el botón de “apagado” no cambie el volumen). Por cierto, estas puertas de acceso que das a los usuarios son lo que se conoce como interfaz.

Herencia:

Uno de los elementos (a mi modo de ver) más interesantes de la P.O.O. La herencia es la capacidad que tiene una clase de derivar las propiedades y métodos de otra (suena a chino ¿no? Calma, lo veremos luego con paciencia ;) ). Tratemos de explicarlo con un ejemplo:

Decimos que una gallina es un ave; esto quiere decir que las gallinas tienen características comunes con otras aves (pico, plumas, etc.), es decir que la gallina hereda las características comunes de todas las aves. Pero además, resulta que un ave es un animal, lo que significa que también comparte características comunes al caballo, el perro, el hombre (seeee, somos animales) y cualquier otra cosa que pueda ser clasificada como animal.

La herencia nos permite, entre otras cosas, evitar tener que escribir el mismo código una y otra vez, puesto que al definir que una categoría (que en programación llamaremos clase) pertenece a otra, automáticamente estamos atribuyéndoles las características generales de la primera, sin tener que definirlas de nuevo.

Una vez establecidas las características de la P.O.O., veamos sus elementos básicos: Clase e Instancia

Technorati Tags: , ,

Programación Orientada a Objetos – ¿Qué es POO?

Hace tiempo había prometido a mis alumnos de ActionScript que les daría algunos apuntes acerca de la Programación Orientada a Objetos y cómo aplicarla en AS2. Pues bien, el momento de cumplir esa promesa ha llegado; para ello voy a darme a la tarea de estructurar una serie de posts al respecto, tratando de comprender lo que significa la Programación Orientada a Objetos y como aplicarla en AS2 dirigida a no-programadores (que son la mayoría de mis alumnos). La idea que tengo en mente es estructurar un material que permita entrar en el fascinante mundo de la Programación, principalmente pero no limitándonos a AS2, para luego hacer un paso seguro y firme a AS3 y ver también como podemos aplicar esto en otros lenguajes sumamente útiles en el desarrollo web, como PHP y Javascript. Ya veremos como nos va. :-|

¿Qué es la Programación Orientada a Objetos?

La P.O.O. (también conocida como O.O.P., por sus siglas en inglés) es lo que se conoce como un paradigma o modelo de programación. Esto significa que no es un lenguaje específico, o una tecnología, sino una forma de programar, una manera de plantearse la programación. No es la única (o necesariamente mejor o peor que otras), pero se ha constituido en una de las formas de programar más populares e incluso muchos de los lenguajes que usamos hoy día lo soportan o están diseñados bajo ese modelo (PHP, AS2, AS3,…).

Lo que caracteriza a la POO es que intenta llevar al mundo del código lo mismo que encontramos en El Mundo Real™. Cuando miramos a nuestro alrededor ¿qué vemos? pues, cosas, objetos, pero podemos reconocer estos objetos porque cada objeto pertenece a una clase, eso nos permite distinguir, por ejemplo, un perro de un auto (porque son de clases diferentes) y también un TV de otro (porque, aunque sean iguales, cada uno es un objeto distinto). Éste es el modelo que la POO intenta seguir para estructurar un sistema.

Es importante recalcar nuevamente que la POO no es un lenguaje de programación, es una forma de enfrentarse a ella. Esto significa que la POO le servirá para desarrollar en muchos de los lenguajes comunes de hoy en día (incluso en ASPuaj!) manteniendo un mismo esquema mental. Incluso le permitirá enfrentar otros proyectos que no necesariamente estén relacionados con escribir código… (Advertencia: La P.O.O. no cura el cáncer ;) )

Bien, ahora que hemos visto (someramente) de qué se trata , vamos a darnos un paseo por las Características de la POO

Technorati Tags: , ,

Seguir

Get every new post delivered to your Inbox.