Documentos de Académico
Documentos de Profesional
Documentos de Cultura
paradigma de la
programación
orientada a
objetos
PID_00249623
Ninguna parte de esta publicación, incluido el diseño general y la cubierta, puede ser copiada,
reproducida, almacenada o transmitida de ninguna forma, ni por ningún medio, sea éste eléctrico,
químico, mecánico, óptico, grabación, fotocopia, o cualquier otro, sin la previa autorización escrita
de los titulares del copyright.
© FUOC • PID_00249623 Introducción al paradigma de la programación orientada a objetos
Índice
Introducción............................................................................................... 5
Objetivos....................................................................................................... 6
Resumen....................................................................................................... 19
Bibliografía................................................................................................. 21
© FUOC • PID_00249623 5 Introducción al paradigma de la programación orientada a objetos
Introducción
Este módulo sitúa la asignatura dentro del grado. Para ello, explicaremos el
punto de partida a partir del cual empezamos esta asignatura, que no es otro
que el paradigma de la programación estructurada que aprendimos en la asig-
natura anterior de programación, Fundamentos de programación, en el caso
de telecomunicaciones, y Programación en el de multimedia. Una vez estemos
situados, veremos cómo se llega al paradigma de la programación orientada a
objetos (POO), elemento principal de estudio de esta asignatura.
Objetivos
Para garantizar que los programas complejos funcionan –es decir, hacen lo que
se espera de ellos–, son fiables y están bien escritos apareció, a finales de los
años cincuenta, una nueva disciplina llamada ingeniería�del�software. Esta
disciplina propone métodos y teorías tanto para analizar problemas complejos
como para diseñar programas que resuelvan dichos problemas. Cada conjunto
de métodos y teorías que determinan una manera específica de analizar y re-
solver un problema se le llama enfoque de programación o, más formalmente,
paradigma�de�programación.
2)�Bottom-up: este enfoque empieza por abajo, es decir, con problemas que ya
se sabe cómo resolverlos (y para los cuales se puede reusar código ya hecho).
A partir de aquí, se trabaja hacia arriba (uniendo trozos/bloques) en busca
de una solución para el problema complejo inicial. Informalmente se podría
decir que es un enfoque estilo LEGO®: tengo pequeñas piezas –por ejemplo,
ladrillos– que unidas crean un objeto mayor, por ejemplo, una casa. Dicho de
otra forma, este enfoque consistiría en empezar por los subproblemas de más
bajo nivel e ir subiendo hasta llegar al problema inicial.
Como se puede apreciar, poco a poco surgió la tendencia de ir ocultando in- Ved también
formación acerca de la implementación de los módulos. O dicho de otro mo-
El concepto de encapsulación
do, de hacer de un módulo una caja negra de la cual se supiera lo mínimo. se trata en el módulo «Encap-
Este hábito de ocultar información y controlar el acceso a ella –especialmente sulación y extensión» de esta
asignatura.
datos, es decir, variables– está íntimamente relacionado con el concepto de
encapsulación.
Dadas las ventajas, los programadores tenían cada vez más interés en poder
escribir módulos que facilitaran la encapsulación; así es como surgieron nue-
vos lenguajes (por ejemplo, C++) que daban soporte a esta técnica y a nuevos
paradigmas de programación más adecuados. De esta forma surgió el paradig-
ma de la programación orientada a objetos (POO).
© FUOC • PID_00249623 13 Introducción al paradigma de la programación orientada a objetos
3. De la programación estructurada a la
programación orientada a objetos
A nivel muy introductorio –ya veremos todo con más detalle a lo largo de
la asignatura–, cabe destacar que el elemento principal de la programación
orientada a objetos (POO) es el objeto. La POO modela la funcionalidad de un
sistema (es decir, del problema a resolver) intentando asemejarse lo máximo
posible a la realidad. El modo en que intenta imitar la realidad es definiendo
un conjunto de objetos que interactúan entre sí enviándose y respondiendo
a mensajes. Gracias a la colaboración entre objetos, el programa es capaz de
realizar la funcionalidad esperada (o de resolver el problema planteado).
De igual modo que en el lenguaje C hay el tipo integer (int, entero), character
(char, carácter), etc. para definir una variable, en los lenguajes que soportan la
POO el tipo de los objetos es una clase. Una clase se asemejaría a lo que en
programación estructurada llamamos módulo, puesto que una clase contiene
datos (en forma de variables) y funciones. A los datos (variables) de una clase
se les suele llamar atributos, mientras que a sus funciones se les suele llamar
métodos. De igual modo, tanto a los atributos como a los métodos se les suele
llamar miembros�de�una�clase.
Así pues, cuando definimos un objeto tenemos que indicar su tipo. Este no será
ni un int, ni un char, sino una clase. De hecho, muchas veces a los objetos se les
llama instancias de una clase o, simplemente, instancias (del inglés, instance),
aunque su correcta traducción al español debería ser ‘ejemplo/caso’. Por lo
tanto, un objeto sería un ejemplo/caso particular de una clase. Es importante
entender que podemos tener tantos objetos/instancias como queramos de una
misma clase.
Como hemos dicho, las clases –que definen el tipo de los objetos– tendrán
que modelar la realidad del problema que estamos tratando, lo cual nos obliga
a definir las clases siguiendo una estrategia totalmente diferente a la que se-
guimos cuando definimos módulos en la programación estructurada. Si en la
programación estructurada los módulos los definíamos siguiendo un criterio,
más o menos lógico, como agrupar funciones que traten una misma tarea (por
ejemplo, pintado, control de reglas, control de físicas, etc.), en la POO esta
estrategia no nos servirá (del todo).
© FUOC • PID_00249623 14 Introducción al paradigma de la programación orientada a objetos
Si Marina es un bebé de trece meses, es fácil imaginar que los valores para los atributos
altura y peso no pueden ser iguales a los de los adultos Elena y David y, que a su vez, los
valores de estos atributos serán distintos entre Elena y David. Del mismo modo, la forma
de hablar de Marina será muy distinta a la de Elena y David, puesto que aún no tiene
vocabulario suficiente para expresarse.
Por otro lado, si imaginamos que David es el padre de Marina, este podría pedirle a Marina
que comiera enviándole el mensaje «Marina come» (es decir, llamando al método comer de
Marina). A su vez, Marina podría responderle o bien comiendo (por ejemplo, devolviendo
su método comer un true o un 1) o bien negándose a ello (por ejemplo, devolviendo
un false o 0). De esta manera, vemos cómo interactúan (se comunican o colaboran) los
diferentes objetos.
En el ejemplo del subapartado 3.1, hemos identificado Elena, Marina y David como ob-
jetos.
En el ejemplo del subapartado 3.1, hemos identificado nombre y edad como atributos,
mientras que andar, hablar y comer eran los métodos.
En el ejemplo del subapartado 3.1, hemos identificado una única clase llamada Persona.
En el ejemplo del subapartado 3.1, hemos identificado que los objetos Elena, Marina y
David compartían atributos y métodos y que, por consiguiente, pertenecían a la misma
clase, en este caso, la clase Persona.
Finalmente, cabe tener presente que no todos los sustantivos y verbos del tex-
to/enunciado son objetos, atributos, métodos o clases. Pueden darse los si-
guientes casos:
• Roles: existen sustantivos y verbos que indican cuál es el papel de una cla-
se u objeto dentro del problema. A veces esta información es superflua y,
© FUOC • PID_00249623 16 Introducción al paradigma de la programación orientada a objetos
Si nos fijamos en el ejemplo del subapartado 3.1, podemos ver que hemos seguido el
proceso bottom-up que acabamos de explicar. Fijaros en que hemos ido de abajo (objetos:
Elena, Marina y David) hacia arriba (clase: Persona). Concretamente, primero hemos iden-
tificado tres objetos –Elena, Marina y David– y a partir de aquí hemos detectado que estos
tres objetos compartían una serie de atributos y métodos, lo cual nos estaba indicando
que Elena, Marina y David podrían tratarse del mismo tipo de objeto, es decir, que podrían
pertenecer a la misma clase. Esta clase la hemos llamado Persona.
Ved también
Esta identificación de los «elementos compartidos» requiere, por nues-
tra parte, ejercer un nivel de abstracción mayor del que solemos hacer Para terminar de entender el
concepto de abstracción y el
en el paradigma de programación estructurada. enfoque bottom-up, se reco-
mienda ver el vídeo «Abstrac-
ción y paradigma bottom-up»
que encontraréis en el aula de
Podíamos haber hecho una clase para Elena, otra para Marina y una tercera para David, la asignatura.
pero en vez de esto, hemos hecho un ejercicio de abstracción y hemos buscado elementos
comunes cuyo resultado ha sido una clase común llamada Persona.
Esta forma de pensar un programa nos ayuda a hacer un diseño mejor orga-
nizado, más reducido en cuanto a líneas de código y, por consiguiente, más
fácil de mantener y escalar.
En este apartado veremos los inconvenientes que la POO tiene para un pro-
gramador novel:
Todo esto se resume en que, desde este momento, debéis ser conscientes de que
esta asignatura os va a exigir muchas horas de dedicación delante del ordena-
dor, porque, como se suele decir: «A programar, se aprende programando».
© FUOC • PID_00249623 19 Introducción al paradigma de la programación orientada a objetos
Resumen
En este módulo hemos visto, en el apartado 1, el punto de partida una vez su-
perada la asignatura Fundamentos de programación o Programación, es decir,
el paradigma de programación estructurada. Hemos recordado en qué consiste
el enfoque descendiente (top-down) usado en la asignatura anterior y hemos
comentado brevemente el enfoque ascendiente (bottom-up), que será la base
de la programación orientada a objetos (POO).
Para hacer lo más natural y simple posible el paso del paradigma de programa-
ción estructurada top-down al paradigma de la programación orientada a obje-
tos (afín a un enfoque bottom-up), hemos visto, en el apartado 2, las necesida-
des que originaron la aparición de este segundo paradigma y, en el apartado
3, qué similitudes tienen o se pueden hacer de manera informal entre ambos
paradigmas. Esto nos ha permitido, por un lado, introducir conceptos y térmi-
nos utilizados en la POO –por ejemplo: objeto, clase, etc.–, y, por otro, conocer
el proceso de abstracción que debemos seguir a la hora de diseñar programas
basados en POO. A partir de aquí, en el apartado 4 hemos visto además, sin
entrar en demasiados detalles, los beneficios que presenta el paradigma de la
programación orientada a objetos.
Bibliografía
Booch, G.; Maksimchuk, R.; Engle, M.; Conallen, J.; Houston, K. (2007). Object-Orien-
ted Analysis and Design with Applications. Pearson Education.