Sei sulla pagina 1di 6

Introduccin a la Programacin Orientada a Objetos

INTRODUCCIN
Es importante aclarar desde un principio la diferencia que existe entre programacin orientada a
objetos y un lenguaje orientado a objetos.
La programacin orientada a objetos es una filosofa, un modelo de programacin, con su teora y
su metodologa, que conviene conocer y estudiar antes de nada. Un lenguaje orientado a objetos es
un lenguaje de programacin que permite el diseo de aplicaciones orientadas a objetos. Dicho esto,
lo normal es que toda persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda
primero la filosofa (o adquiera la forma de pensar) y despus el lenguaje, porque filosofa slo
hay una y lenguajes muchos. En este documento veremos brevemente los conceptos bsicos de la
programacin orientada a objetos desde un punto de vista global, sin particularizar para ningn
lenguaje de programacin especfico.
UNA FORMA NUEVA DE PENSAR
Es muy importante destacar que cuando hacemos referencia a la programacin orientada a objetos
no estamos hablando de unas cuantas caractersticas nuevas aadidas a un lenguaje de
programacin. Estamos hablando de una nueva forma de pensar acerca del proceso de
descomposicin de problemas y de desarrollo de soluciones de programacin.
La programacin orientada a objetos surge en la historia como un intento para dominar la
complejidad que, de forma innata, posee el software. Tradicionalmente, la forma de enfrentarse a
esta complejidad ha sido empleando lo que llamamos programacin estructurada, que consiste en
descomponer el problema objeto de resolucin en subproblemas y ms subproblemas hasta llegar a
acciones muy simples y fciles de codificar. Se trata de descomponer el problema en acciones, en
verbos. En el ejemplo de un programa que resuelva ecuaciones de segundo grado,
descomponamos el problema en las siguientes acciones: primero, pedir el valor de los coeficientes
a, b y c; despus, calcular el valor del discriminante; y por ltimo, en funcin del signo del
discriminante, calcular ninguna, una o dos races.
Como podemos ver, descomponamos el problema en acciones, en verbos; por ejemplo el verbo
pedir, el verbo hallar, el verbo comprobar, el verbo calcular
La programacin orientada a objetos es otra forma de descomponer problemas.
Este nuevo mtodo de descomposicin es la descomposicin en objetos; vamos a fijarnos no en lo
que hay que hacer en el problema, sino en cul es el escenario real del mismo, y vamos a intentar
simular ese escenario en nuestro programa.
Los lenguajes de programacin tradicionales no orientados a objetos, como C, Pascal, BASIC, o
Modula-2, basan su funcionamiento en el concepto de procedimiento o funcin. Una funcin es
simplemente un conjunto de instrucciones que operan sobre unos argumentos y producen un
resultado. De este modo, un programa no es ms que una sucesin de llamadas a funciones, ya
sean stas del sistema operativo, proporcionadas por el propio lenguaje, o desarrolladas por el
mismo usuario.
En el caso de los lenguajes orientados a objetos, como es el caso de C++ y Java, el elemento bsico
no es la funcin, sino un ente denominado precisamente objeto. Un objeto es la representacin en un
programa de un concepto, y contiene toda la informacin necesaria para abstraerlo: datos que
describen sus atributos y operaciones que pueden realizarse sobre los mismos.

La programacin orientada a objetos es una nueva forma de pensar, una manera distinta de enfocar
los problemas. Ah radica la dificultad de aprender un lenguaje totalmente orientado a objetos, como
es Java, sin conocer previamente los pilares de la programacin orientada a objetos. Hecha esta
importante aclaracin, conviene destacar que Java, ms que un lenguaje orientado a objetos, es un
lenguaje de objetos. Java incorpora el uso de la orientacin a objetos como uno de los pilares
bsicos y fundamentales del lenguaje. Esto constituye una importante diferencia con respecto a C++.
C++ est pensado para su utilizacin como lenguaje orientado a objetos, pero tambin es cierto que
con C++ se puede escribir cdigo sin haber odo nada de la programacin orientada a objetos. Esta
situacin no se da en Java, dotado desde las primeras etapas de su diseo de esta filosofa, y donde
no cabe obviar la orientacin a objetos para el desarrollo de programas, por sencillos que stos
sean. Al contrario que en C++, en Java nada se puede hacer sin usar al menos un objeto.
UN PRIMER EJEMPLO
Si nos detenemos a pensar sobre cmo se nos plantea un problema cualquiera en la realidad
podremos ver que lo que hay en la realidad son entidades (otros nombres que podramos usar para
describir lo que aqu llamo entidades son agentes u objetos).
Estas entidades poseen un conjunto de propiedades o atributos, y un conjunto de
mtodos mediante los cuales muestran su comportamiento. Y no slo eso, tambin podremos
descubrir, a poco que nos fijemos, todo un conjunto de interrelaciones entre las entidades, guiadas
por el intercambio de mensajes; las entidades del problema responden a estos mensajes mediante la
ejecucin de ciertas acciones. El siguiente ejemplo, aunque pueda parecer un poco extrao, creo
que aclarar algunos conceptos y nos servir como introduccin para desarrollarlos con profundidad.
Imaginemos la siguiente situacin: un domingo por la tarde estoy en casa viendo la televisin, y de
repente mi madre siente un fuerte dolor de cabeza; como es natural, lo primero que hago es tratar de
encontrar una caja de aspirinas.
Lo que acabo de describir es una situacin que probablemente no resulte muy extraa a muchos de
nosotros. Vamos a verla en clave de objetos: el objeto hijo ha recibido un mensaje procedente del
objeto madre. El objeto hijo responde al mensaje o evento ocurrido mediante una accin: buscar
aspirinas. La madre no tiene que decirle al hijo dnde debe buscar, es responsabilidad del hijo
resolver el problema como considere ms oportuno. Al objeto madre le basta con haber emitido un
mensaje. Continuemos con la historia.
El hijo no encuentra aspirinas en el botiqun y decide acudir a la farmacia de guardia ms cercana
para comprar aspirinas. En la farmacia es atendido por una seorita que le pregunta qu desea, a lo
que el hijo responde: "una caja de aspirinas, por favor". La farmacutica desaparece para regresar al
poco tiempo con una caja de aspirinas en la mano. El hijo paga el importe, se despide y vuelve a su
casa. All le da un comprimido a su madre, la cual al cabo de un rato comienza a experimentar una
notable mejora hasta la completa desaparicin del dolor de cabeza.
El hijo, como objeto responsable de un cometido, sabe lo que debe hacer hasta conseguir una
aspirina. Para ello entra en relacin con un nuevo objeto, la farmacutica, quien responde al mensaje
o evento de peticin del objeto hijo con la bsqueda de la aspirina. El objeto farmacutica es ahora el
responsable de la bsqueda de la aspirina. El objeto farmacutica lanza un mensaje al objeto hijo
solicitando el pago del importe, y el objeto hijo responde a tal evento con la accin de pagar.
Como hemos podido ver, en esta situacin nos hemos encontrado con objetos que se diferenciaban
de los dems por un conjunto de caractersticas o propiedades, y por un conjunto de acciones que
realizaban en respuesta a unos eventos que se originaban en otros objetos o en el entorno.

Tambin podemos darnos cuenta de que, aunque todos los objetos tienen propiedades distintas,
como el color del cabello, el grado de simpata o el peso, todos tienen un conjunto de atributos en
comn por ser ejemplos de una entidad superior llamada ser humano. A este patrn de objetos (en
nuestro caso ser humano) lo llamaremos clase.
Con este ejemplo espero que se entienda que los objetos son instancias o casos concretos de las
clases, que no son ms que plantillas que definen las variables y los mtodos comunes a todos los
objetos de un cierto tipo. La clase ser humano tendr, entre sus muchas variables miembro o
variables que la componen: color del cabello, color de los ojos, estatura, peso, fecha de nacimiento,
etc. A partir de una clase se podrn generar todos los objetos que se deseen especificando valores
particulares para cada una de las variables definida por la clase. As, encontraremos el objeto
farmacutica, cuyo color de cabello es rubio, color de ojos azul, estatura 175 cm., peso 50 Kg., y as
sucesivamente.
Tecnologa orientada a objetos
Hoy en da la tecnologa orientada a objetos ya no se aplica solamente a los lenguajes de
programacin, adems se viene aplicando en el anlisis y diseo con mucho xito, al igual que en
las bases de datos. Es que para hacer una buena programacin orientada a objetos hay que
desarrollar todo el sistema aplicando esta tecnologa, de ah la importancia del anlisis y el diseo
orientado a objetos.
La programacin orientada a objetos es una de las formas ms populares de programar y viene
teniendo gran acogida en el desarrollo de proyectos de software desde los ltimos aos. Esta
acogida se debe a sus grandes capacidades y ventajas frente a las antiguas formas de programar.
Una Perspectiva Histrica
Tradicionalmente, la programacin fue hecha en una manera secuencial o lineal, es decir una serie
de pasos consecutivos con estructuras consecutivas y bifurcaciones.

Los lenguajes basados en esta forma de programacin ofrecan ventajas al principio, pero el
problema ocurre cuando los sistemas se vuelven complejos. Estos programas escritos al estilo
espaguetti no ofrecen flexibilidad y el mantener una gran cantidad de lneas de cdigo en slo
bloque se vuelve una tarea complicada.
Frente a esta dificultad aparecieron los lenguajes basados en la programacin estructurada. La idea
principal de esta forma de programacin es separar las partes complejas del programa en mdulos o
segmentos que sean ejecutados conforme se requieran. De esta manera tenemos un diseo
modular, compuesto por mdulos independientes que puedan comunicarse entre s. Poco a poco
este estilo de programacin fue reemplazando al estilo espaguetti impuesto por la programacin
lineal.
Entonces, vemos que la evolucin que se fue dando en la programacin se orientaba siempre a ir
descomponiendo ms el programa. Este tipo de descomposicin conduce directamente a la
programacin orientada a objetos.
Pues la creciente tendencia de crear programas cada vez ms grandes y complejos llev a los
desarrolladores a crear una nueva forma de programar que les permita crear sistemas de niveles
empresariales y con reglas de negocios muy complejas. Para estas necesidades ya no bastaba la
programacin estructurada ni mucho menos la programacin lineal. Es as como aparece la
programacin orientada a objetos (POO). La POO viene de la evolucin de la programacin
estructurada; bsicamente la POO simplifica la programacin con la nueva filosofa y nuevos
conceptos que tiene. La POO se basa en la dividir el programa en pequeas unidades lgicas de
cdigo. A estas pequeas unidades lgicas de cdigo se les llama objetos. Los objetos son unidades
independientes que se comunican entre ellos mediante mensajes.
Cules son las ventajas de un lenguaje orientado a objetos?
Fomenta la reutilizacin y extensin del cdigo.
Permite crear sistemas ms complejos.
Relacionar el sistema al mundo real.
Facilita la creacin de programas visuales.
Construccin de prototipos
Agiliza el desarrollo de software
Facilita el trabajo en equipo
Facilita el mantenimiento del software
Lo interesante de la POO es que proporciona conceptos y herramientas con las cuales se modela y
representa el mundo real tan fielmente como sea posible.

Lenguajes de Programacin Orientado a Objetos


En 1985, E. Stroustrup extendi el lenguaje de programacin C a C++, es decir C con conceptos de
clases y objetos, tambin por esas fechas se creo desde sus bases el lenguaje EIFFEL.
En 1995 apareci el ms reciente lenguaje OO, Java desarrollado por SUN, que hereda conceptos
de C++.
El lenguaje de desarrollo ms extendido para aplicaciones Web, el PHP 5, trae todas las
caractersticas necesarias para desarrollar software orientado a objetos.
Adems de otros lenguajes que fueron evolucionando, como el Pascal a Delphi.
Finalmente tambin otros lenguajes script como el ActionScript que si bien no es totalmente
orientado a objetos pero s posee las caractersticas.
Anlisis y diseo Orientado a Objetos
Para el desarrollo de software orientado a objetos no basta usar un lenguaje orientado a objetos.
Tambin se necesitar realizar un anlisis y diseo orientado a objetos.
El modelamiento visual es la clave para realizar el anlisis OO. Desde los inicios del desarrollo de
software OO han existido diferentes metodologas para hacer esto del modelamiento, pero sin lugar
a duda, el Lenguaje de Modelamiento Unificado (UML) puso fin a la guerra de metodologas.
Segn los mismos diseadores del lenguaje UML, ste tiene como fin modelar cualquier tipo de
sistemas (no solamente de software) usando los conceptos de la orientacin a objetos. Y adems,
este lenguaje debe ser entendible para los humanos y mquinas.
Actualmente en la industria del desarrollo de software tenemos al UML como un estndar para el
modelamiento de sistemas OO. Fue la empresa Racional que cre estas definiciones y
especificaciones del estndar UML, y lo abri al mercado. La misma empresa cre uno de los
programas ms conocidos hoy en da para este fin; el Racional Rose, pero tambin existen otros
programas como el Poseidon que trae licencias del tipo community edition que permiten su uso
libremente.
El UML consta de todos los elementos y diagramas que permiten modelar los sistemas en base al
paradigma orientado a objetos. Los modelos orientados a objetos cuando se construyen en forma
correcta, son fciles de comunicar, cambiar, expandir, validar y verificar. Este modelamiento en UML
es flexible al cambio y permite crear componentes plenamente reutilizables.

El modelo Orientado a Objetos


Para entender este modelo es necesario comprender conceptos bsicos:
Clases

Objetos
Abstraccin
Modularidad
Encapsulamiento
Herencia
Polimorfismo
Envo de mensajes

Ocultamiento

Potrebbero piacerti anche