Publicado el 16 de Julio del 2019
1.075 visualizaciones desde el 16 de Julio del 2019
146,3 KB
13 paginas
Creado hace 18a (17/02/2007)
Introducción a la Programación
Orientada a Objetos
Luis R. Izquierdo
1 IMPORTANTE NOTA PRELIMINAR
Este documento es un apéndice de mi proyecto fin de carrera. Lo escribí después de leer
tres o cuatro libros sobre el tema y consultar algunas páginas de Internet. Lo cierto es
que, sinceramente, no recuerdo las fuentes que utilicé, así que me temo que, por mucho
que me gustaría, me es imposible citarlas. No obstante, los conceptos que se presentan
en este documento pueden encontrarse en cualquier libro de programación orientada a
objetos, con definiciones probablemente mucho más rigurosas que las que yo aquí
presento. Dejo este documento de forma libre en la red con la esperanza de que pueda
ser útil, y sin ningún ánimo de atribuirme méritos que no me corresponden. Mi única
intención es que, leyendo este breve documento, el lector pueda aprender los conceptos
básicos de la programación orientada a objetos y disfrutar al mismo tiempo.
2 INTRODUCCIÓN
Es importante aclarar desde un principio la diferencia que existe entre programación
orientada a objetos y un lenguaje orientado a objetos.
La programación orientada a objetos es una “filosofía”, un modelo de programación,
con su teoría y su metodología, que conviene conocer y estudiar antes de nada. Un
lenguaje orientado a objetos es un lenguaje de programación que permite el diseño de
aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a
desarrollar aplicaciones orientadas a objetos aprenda primero la “filosofía” (o adquiera
la forma de pensar) y después el lenguaje, porque “filosofía” sólo hay una y lenguajes
muchos. En este documento veremos brevemente los conceptos básicos de la
programación orientada a objetos desde un punto de vista global, sin particularizar para
ningún lenguaje de programación específico.
1
3 UNA FORMA NUEVA DE PENSAR
Es muy importante destacar que cuando hacemos referencia a la programación orientada
a objetos no estamos hablando de unas cuantas características nuevas añadidas a un
lenguaje de programación. Estamos hablando de una nueva forma de pensar acerca del
proceso de descomposición de problemas y de desarrollo de soluciones de
programación.
La programación 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 programación
estructurada, que consiste en descomponer el problema objeto de resolución en
subproblemas y más subproblemas hasta llegar a acciones muy simples y fáciles de
codificar. Se trata de descomponer el problema en acciones, en verbos. En el ejemplo de
un programa que resuelva ecuaciones de segundo grado, descomponíamos el problema
en las siguientes acciones: primero, pedir el valor de los coeficientes a, b y c; después,
calcular el valor del discriminante; y por último, en función del signo del discriminante,
calcular ninguna, una o dos raíces.
Como podemos ver, descomponíamos el problema en acciones, en verbos; por ejemplo
el verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular…
La programación orientada a objetos es otra forma de descomponer problemas. Este
nuevo método de descomposición es la descomposición en objetos; vamos a fijarnos no
en lo que hay que hacer en el problema, sino en cuál es el escenario real del mismo, y
vamos a intentar simular ese escenario en nuestro programa.
Los lenguajes de programación tradicionales no orientados a objetos, como C, Pascal,
BASIC, o Modula-2, basan su funcionamiento en el concepto de procedimiento o
función. Una función es simplemente un conjunto de instrucciones que operan sobre
unos argumentos y producen un resultado. De este modo, un programa no es más que
una sucesión de llamadas a funciones, ya sean éstas del sistema operativo,
proporcionadas por el propio lenguaje, o desarrolladas por el mismo usuario.
2
En el caso de los lenguajes orientados a objetos, como es el caso de C++ y Java, el
elemento básico no es la función, sino un ente denominado precisamente objeto. Un
objeto es la representación en un programa de un concepto, y contiene toda la
información necesaria para abstraerlo: datos que describen sus atributos y operaciones
que pueden realizarse sobre los mismos.
La programación 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
programación orientada a objetos. Hecha esta importante aclaración, conviene destacar
que Java, más que un lenguaje orientado a objetos, es un lenguaje de objetos. Java
incorpora el uso de la orientación a objetos como uno de los pilares básicos y
fundamentales del lenguaje. Esto constituye una importante diferencia con respecto a
C++. C++ está pensado para su utilización como lenguaje orientado a objetos, pero
también es cierto que con C++ se puede escribir código sin haber oído nada de la
programación orientada a objetos. Esta situación no se da en Java, dotado desde las
primeras etapas de su diseño de esta filosofía, y donde no cabe obviar la orientación 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.
4 UN PRIMER EJEMPLO
Si nos detenemos a pensar sobre cómo se nos plantea un problema cualquiera en la
realidad podremos ver que lo que hay en la realidad son entidades (otros nombres que
podríamos 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
métodos mediante los cuales muestran su comportamiento. Y no sólo eso, también
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 ejecución de ciertas acciones. El siguiente
ejemplo, aunque pueda parecer un poco extraño, creo que aclarará algunos conceptos y
nos servirá como introducción para desarrollarlos con profundidad.
3
Imaginemos la siguiente situación: un domingo por la tarde estoy en casa viendo la
televisión, 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 situación que probablemente no resulte muy extraña 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 acción: buscar aspirinas. La madre no tiene que decirle al hijo
dónde debe buscar, es responsabilidad del hijo resolver el problema como considere
más oportuno. Al objeto madre le basta con haber emitido un mensaje. Continuemos
con la historia.
El hijo no encuentra aspirinas en el botiquín y decide acudir a la farmacia de guardia
más cercana para comprar aspirinas. En la farmacia es atendido por una señorita que le
pregunta qué desea, a lo que el hijo responde: "una caja de aspirinas, por favor". La
farmacéutica 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 mejoría hasta
la completa desaparición 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 relación con un nuevo objeto, la farmacéutica,
quien responde al mensaje o evento de petición del objeto hijo con la búsqueda de la
aspirina. El objeto farmacéutica es ahora el responsable de la búsqueda de la aspirina. El
objeto farmacéutica lanza un mensaje al objeto hijo solicitando el pago del importe, y el
objeto hijo responde a tal evento con la acción de pagar.
Como hemos podido ver, en esta situación nos hemos encontrado con objetos que se
diferenciaban de los demás por un conjunto de características 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.
También podemos darnos cuenta de que, aunque todos los objetos tienen propiedades
distintas, como el color del cabello, el grado de simpatía o el peso, todos tienen un
4
conjunto de atributos en común por ser ejemplos de una entidad superior llamada “ser
humano”. A este patrón 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 más que plantillas que definen las variables y los
métodos 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
Comentarios de: Introducción a la Programación Orientada a Objetos (0)
No hay comentarios