Introducción a la Programación Orientada a Objetos (POO)

Programación Orientada a ObjetosLos lenguajes de programación han pasado por diferentes paradigmas a lo largo de su historia. En 60 años se ha pasado de escribir programas como una secuencia de órdenes codificadas en ceros y unos, que se ejecutan una detrás de otra hasta que no quedan más, a utilizar lenguajes que permiten construir módulos independientes que prácticamente piensan por si mismos (toman decisiones) y se comunican entre sí; pasando por el camino por una larga lista de diferentes técnicas y metodologías que se han ido quedando obsoletas en la mayoría de los campos.

En el primero de estos dos extremos se encuentran los lenguajes denominados de bajo nivel. Estos lenguajes se parecen mucho al lenguaje interno del procesador y están muy alejados del lenguaje humano. Aunque no vamos a hablar prácticamente nada de ellos, debéis saber que todavía se utilizan cuando se necesita que el procesador o la tarjeta gráfica realicen operaciones con la mayor rapidez posible.

En el otro extremo se encuentran los lenguajes a los que se califica como de alto nivel. Son lenguajes mucho más parecidos al lenguaje humano, y en general, utilizan órdenes y comandos que tienen significado para nosotros y no hace falta saber mucho sobre como funciona internamente el hardware para entenderlos.

Desde hace más de 30 años la mayoría de los lenguajes de alto nivel que se utilizan para construir aplicaciones son lenguajes orientados a objetos.

Volver al Índice

¿Por qué Orientada a objetos?

El mundo de la programación de juegos e interfaces gráficas ara aplicaciones multimedia está repartido entre dos paradigmas (o modelos de programación): Los lenguajes clásicos (no por que sean antiguos, sino porque utilizan clases) y los lenguajes basados en prototipos.

Los primeros son mucho más formales y estrictos en cuanto a la manera de definir y trabajar con objetos y son muchos (C++, C#, Objective C, Java, actionscript,… ).

Los segundos son más flexibles y en el mundo front-end están representados casi exclusivamente por javascript. Son menos exigentes con el programador en cuanto a que no es necesario preparar minuciosamente cada uno de los objetos que se van a utilizar, no le obligan a escribir tanto y le permiten saltarse muchas normas.
Suena bien ¿verdad? Sí, pero requieren especial cuidado porque esa facilidad y flexibilidad se pueden convertir en tu mayor enemigo cuando no entiendes bien lo que estás haciendo.

Uno de los mitos sobre programación más extendidos en internet es que javascript es muy fácil de aprender, y esto es un grave error. Probablemente es uno lenguaje más peligrosos para los programadores principiantes, precisamente porque te deja crear objetos sin entenderlos ni prepararlos.

Objetos

Los objetos en el mundo real

La orientación a objetos pretende hacer la programación de aplicaciones algo parecido al diseño y construcción de los objetos del mundo real.

manzanas01Los objetos del mundo real tienen cada uno su propia identidad. A veces no tienen nombre propio, pero decimos “esa manzana” cuando queremos esa y no otra, aunque sean muy parecidas.

A menudo podemos distinguir la identidad por de un objeto por sus atributos: el color, el tamaño, el peso, la textura, el sabor, el olor, …

Una manzana puede ser roja, pequeña pero densa, ser muy lisa, ser un poco ácida, tener un olor fresco,…. Otra manzana puede ser amarilla, grande y ligera, tener arrugas, tener un sabor dulzón y oler un poco a tierra,… Son dos manzanas distintas, que tienen cosas en común pero sabemos que son distintas porque algunos de sus atributos son diferentes.

manzanas02Los atributos de un objeto definen también su estado actual, el color de una fruta nos dice si está madura o no, el brillo de una bombilla define si está encendida o apagada, la cantidad de líquido en un vaso nos dice si está lleno o vacío, o el algún estado intermedio. Un mismo objeto puede encontrarse en varios estados diferentes.

Los objetos del mundo real también se comportan de diferentes maneras que nos permiten distinguirlos, una serpiente repta, un avión vuela, una copa puede contener líquidos, un despertador suena, una lámpara da luz,…

Los objetos en una aplicación informática

Estas tres cosas, identidad, atributos y comportamientos que definen los objetos del mundo real son las mismas que definen los objetos los lenguajes de programación.

Cada objeto de un programa tienen su propia identidad, normalmente poseen un nombre por el que se les puede llamar, para distinguirlos en nuestro programa.

Cada objeto tienen sus propiedades, sus atributos, que definen su estado actual o general.

Cada objeto tiene sus propios métodos, que describen, en forma de pequeño programa, los diferentes comportamientos que pueden mostrar, o las tareas que pueden realizar.

Cómo distinguir objetos

En la vida real os objetos son cosas que se pueden tocar, ver, oir, oler, saborear,… En un programa informático, no tienen porqué. Una cuenta bancaria puede ser un objeto, una fecha puede ser un objeto, un mensaje de twitter puede ser un objeto.

Por ejemplo, no se puede tocar una cuenta bancaria en la vida real, pero aun así, es una idea bien definida:

  1. Tiene identidad, mi cuenta en un banco es diferente de la de otra persona, incluso yo mismo puedo tener dos cuentas diferentes
  2. Tiene propiedades o atributos que describen su estado: saldo, interés, a quién pertenece, pagos domiciliados, …
  3. Y tiene métodos, para sacar o ingresar dinero, para realizar transferencias, para ser cancelada, para retrasar pagos por “módico” interés…

Seguro, una cuenta bancaria puede tener y tiene una representación visual en una aplicación informática. Pero la cuenta bancaria existe independientemente de esa representación.

Es fácil distinguir los objetos en la realidad. Está claro que un coche, una mesa, una pelota,… son objetos.
Cuando se está describiendo un objeto que no se puede percibir con los sentidos ésto no es tan sencillo. No está tan claro cuando algo puede ser un objeto en un programa. Pero si acudimos a la combinación del mundo real con nuestro lenguaje humano, nos puede dar pistas.

La gramática puede ayudar…

Los objetos siempre se describen con sustantivos (nombres), y los sustantivos pueden llevar artículos: el coche, la mesa, la pelota. Sin embargo, no podemos decir: el comiendo, la andando, el escribiendo,…

En programación utilizaremos el mismo razonamiento, si estamos hablando de algo que es un sustantivo y se le puede poner un artículo delante, puede ser un objeto: la cuenta bancaria, la fecha, las direcciones de correo, el archivo, el enlace,…

Si utilizamos sustantivos que hablan de una cualidad del objeto: color, peso, tamaño, … y que pueden tener distintos valores que pueden ser adjetivos o números, estaremos hablando de propiedades.

Si de lo que estamos hablando es de un verbo: enviar, leer, cargar, … estaremos hablando de comportamientos o métodos de un objeto.

Como digo, puede ayudar, pero el español es una lengua demasiado compleja y con demasiadas excepciones como para que este truco sea infalible, así que ten cuidado y no olvides las definiciones de objeto, propiedad y método.

Un Objeto es una entidad con identidad propia, es decir que es distinguible de otros objetos del mismo o de distinto tipo. Tiene propiedades que describen su estado, es decir sus características, y métodos que le permiten modificar su estado o el de otros objetos.

Volver al Índice

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *