Friday, July 25, 2008

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

He encontrado varias definiciones de programación orientada a objetos, la que más me agrado es la siguiente:

“Paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo, y encapsulamiento.”

La programación orientada a objetos es un “modo de ver las cosas”, por supuesto que se puede desarrollar alguna aplicación para resolver un problema sin utilizar POO, sin embargo se ha demostrado que la POO aporta grandes beneficios al proceso de desarrollo y mantenimiento de software.

Si utilizamos POO en realidad lo que hacemos es representar objetos de mundo real mediante código, para no complicarlo más mencionare un ejemplo:
Supongamos que tenemos un cliente que es distribuidor de teléfonos celulares (me vino a la mente porque quiero comprar un celular nuevo :)), nuestro cliente desea tener control de los celulares que tiene en existencia. Identificando los objetos del mundo real seguramente tendremos entre ellos el objeto “Teléfono Celular”, y debemos representarlo en la aplicación (mediante código) con las características que vayamos a utilizar en la aplicación por ejemplo:

Marca
Modelo
Color

Los objetos representados en la aplicación pueden tener propiedades (también llamadas atributos) y/o métodos (también llamados funciones u operaciones), de modo sencillo las propiedades son las características del objeto y los métodos son las acciones que este puede realizar, en nuestro ejemplo del objeto “Teléfono Celular” los datos marca, modelo, color y precio son propiedades y cada teléfono tiene un valor determinado para ellas, hasta aquí se preguntaran ¿y cuáles las acciones?... pues bien, algunas de las acciones que puede realizar un teléfono celular son:

Agregar un contacto a la agenda
Enviar mensaje SMS
Activar bluetooth
Desactivar bluetooth

Sin embargo aquí hay un detalle, dichas acciones que el objeto real tiene no son necesarias para nuestra aplicación de control de inventarios, por lo cual no es necesario representarlas, si a alguien le parece que escogí un ejemplo incompleto les comento que después de pensarlo un rato decidí hacerlo intencionalmente para mostrar que no todas las propiedades o métodos del objeto real deben ser forzosamente incluidos en la aplicación, por otra parte así como quitamos también podemos agregar algunas cosas, seguramente a nuestro cliente le interesara saber la fecha de entrada del objeto al inventario, el precio en que lo adquirió y por sobre todas las cosas ¡poder establecer el precio de venta!, podemos agregar alguna acción como “Eliminar el teléfono celular del inventario” (para aquellos que les parezca que el objeto estaba incompleto por no tener acciones), personalmente no agregaría dicha acción por el modo en que organizo las clases de los proyectos en que participo, sin embargo funciona para fines ilustrativos.

¡Hey! ¿Y dónde están las características o fundamentos de la programación orientada a objetos?

Tranquilos, las definiciones de Herencia, polimorfismo, modularidad y encapsulacion vendrán en el siguiente post.

No comments: