Está en la página 1de 8

Diseo

y programacin
orientada
a objetoS
Joan Arnedo Moreno
Daniel Riera i Terrn (coordinadores)

PID_00160191

Material docente de la UOC


FUOC PID_00160191 Diseo y programacin orientada a objetos

Joan Arnedo Moreno Daniel Riera i Terrn Jordi Brnquez Jimnez

Ingeniero Informtico por Ingeniero informtico, mster en Ingeniero Informtico por


la Universidad Politcnica de Informtica industrial: tcnicas la Universidad Politcnica de
Catalua. Profesor propio avanzadas de la produccin, y Catalua y colaborador de la UOC
de los Estudios de Informtica, doctor por la Universidad Autnoma desde octubre de 2003. Consultor
Multimedia y Telecomunicaciones de Barcelona. Profesor propio y de Programacin Orientada a
de la UOC. Profesor asociado de director del Programa de Ingeniera Objetos, Laboratorio de Java
las asignaturas de programacin Informtica en los Estudios de y asignaturas de posgrado.
en la Escuela Tcnica Superior de Informtica, Multimedia y
Ingenieros de Telecomunicaciones Telecomunicacin de la UOC.
de Barcelona.

Elena Garca Barriocanal Miquel ngel Piera i Eroles Juan Jos Ramos Gonzlez

Ingeniera en Informtica Licenciado en Informtica Licenciado en Informtica


por la Universidad Pontificia por la Universidad Autnoma por la Universidad Autnoma de
de Salamanca. Profesora del de Barcelona. Mster en Control Barcelona. Mster en Informtica
departamento de Ciencias de la Enginyeering en el UMIST (Reino Industrial: Tcnicas Avanzadas de la
Computacin de la Universidad Unido). Doctor en Informtica Produccin. Doctor en Informtica
de Alcal. por la UAB. Profesor titular de la por la UAB. Profesor titular de la
escuela universitaria de la UAB. escuela universitaria de la UAB.

Miguel ngel Sicilia Urbn

Ingeniero en Informtica por la


Universidad Pontificia de Salamanca.
Profesor del departamento de
Informtica de la Universidad
Carlos III.

Primera edicin: septiembre 2010


Jordi Brnquez Jimnez, Elena Garca Barriocanal, Miquel ngel Piera i Eroles, Juan Jos Ramos Gonzlez, Miguel ngel Sicilia Urbn
Todos los derechos reservados
de esta edicin, FUOC, 2010
Av. Tibidabo, 39-43, 08035 Barcelona
Diseo: Manel Andreu
Realizacin editorial: Eureca Media, SL
ISBN: 978-84-693-4209-1
Depsito legal: B-23.019-2010

Ninguna parte de esta publicacin, incluido el diseo general y la cubierta, puede ser copiada,
reproducida, almacenada o transmitida de ninguna forma, ni por ningn medio, sea ste elctrico,
qumico, mecnico, ptico, grabacin, fotocopia, o cualquier otro, sin la previa autorizacin escrita
de los titulares del copyright.
FUOC PID_00160191 3 Diseo y programacin orientada a objetos

Introduccin

En esta asignatura se introduce el paradigma de la programacin orientada a


objetos. ste se considera una evolucin del paradigma de programacin es-
tructurada, permitiendo la modelizacin de objetos del mundo real, con sus
caractersticas y propiedades internas.

La mxima de Niklaus Wirth algoritmos + estructuras de datos = programas


es clave para describir los componentes bsicos de los lenguajes de programa-
cin orientada a objetos: los objetos, concepto que contiene tanto los datos
(estructuras de datos) como los mtodos que los manipulan (algoritmos).
Adems, la organizacin del programa en objetos permite alcanzar ciertas ven-
tajas a la hora de desarrollar aplicaciones complejas.

En esta asignatura utilizaremos el lenguaje de programacin Java. ste ha ido evo-


lucionando al ritmo de los cambios propuestos por los desarrolladores, por los
que acaba siendo una herramienta muy potente y sobradamente utilizada. Este
lenguaje fue concebido para simplificar algunas de las propiedades ms difciles
de implementar del paradigma de la programacin orientada al objeto. Adems,
es independiente de la plataforma de ejecucin, aunque este hecho reste un cierto
control al programador.

El material docente de esta asignatura est estructurado en cuatro grandes blo-


ques: un primer bloque introduce el paradigma de la programacin orientada a
objetos siguiendo una aproximacin clsica. A partir de la presentacin de las de-
ficiencias del paradigma de la programacin estructurada, se definen los concep-
tos de clase y objeto, piezas bsicas de la programacin orientada a objetos.
Igualmente, se presentan la abstraccin y la clasificacin, que explican posibles
relaciones entre stos.

El segundo bloque empieza con un mdulo de introduccin de conceptos de pro-


gramacin avanzados, necesarios para la comprensin y programacin de objetos
y las relaciones entre stos. A ste le sigue un mdulo dedicado a los conceptos de
herencia y de polimorfismo. Estos conceptos son aportaciones fundamentales de
la programacin orientada a objetos. Finalmente, este bloque tambin describe
los diagramas UML como herramienta bsica para la representacin de forma
simblica del conjunto de clases de un problema dado y sus relaciones.

El tercer bloque presenta un ejemplo prctico hecho desde la especificacin


hasta la codificacin, aplicando los conceptos de diseo que se han aprendido
a lo largo del curso.
FUOC PID_00160191 4 Diseo y programacin orientada a objetos

Finalmente, el cuarto bloque introduce el lenguaje Java como herramienta b-


sica para los ejercicios prcticos de programacin. Este bloque describe tanto
las caractersticas que permiten utilizar Java como lenguaje de programacin
estructurada, como las que estn directamente ligadas a los conceptos bsicos
de la programacin orientada a objetos.
FUOC PID_00160191 5 Diseo y programacin orientada a objetos

Objetivos

Los materiales didcticos de esta asignatura aportarn a los estudiantes los co-
nocimientos necesarios para tener una visin clara del paradigma de la progra-
macin orientada a objetos y permitirn alcanzar los objetivos siguientes:

1. Conocer los conceptos bsicos de la programacin orientada a objetos si-


guiendo un hilo argumental: clases y objetos, abstraccin y clasificacin,
herencia, sobrecarga y polimorfismo.

2. Resolver problemas de diseo usando una descomposicin basada en la


abstraccin y la clasificacin: las asociaciones entre objetos y clases.

3. Identificar y describir las clases que nos permitan representar y modelar los
elementos de un problema y las relaciones entre s mediante diagramas
UML.

4. Aprender a programar en Java utilizando los recursos propios de la progra-


macin orientada a objetos.

5. Adquirir destreza en la utilizacin de las herramientas de desarrollo en Java.


FUOC PID_00160191 6 Diseo y programacin orientada a objetos

Contenidos

Mdulo didctico 1
Introduccin a la orientacin a objetos
Jordi Brnquez Jimnez, Elena Garca Barriocanal
1. Los inconvenientes de la programacin clsica
2. La orientacin a objetos
3. Lenguajes de programacin orientada a objetos

Mdulo didctico 2
Clases y objetos
Jordi Brnquez Jimnez, Miquel ngel Piera i Eroles, Juan Jos Ramos Gonzlez
1. Criterios de calidad
2. El principio de modularidad
3. Clases y objetos

Mdulo didctico 3
Abstraccin y clasificacin
Jordi Brnquez Jimnez, Miguel ngel Sicilia Urbn
1. Complejidad y abstraccin
2. Los principios de la clasificacin
3. Relaciones entre clases
4. Tcnica simple para identificar clases
5. Tipos de clases

Mdulo didctico 4
Estructuras de objetos
Jordi Brnquez Jimnez
1. Instanciacin
2. Punteros
3. Recorridos
4. Delegacin

Mdulo didctico 5
Herencia y polimorfismo
Jordi Brnquez Jimnez
1. Definicin de herencia
2. Consideraciones sobre la herencia
3. Errores de la herencia
4. Polimorfismo
5. Implementacin de la herencia y el polimorfismo con Java
FUOC PID_00160191 7 Diseo y programacin orientada a objetos

Mdulo didctico 6
Un ejemplo prctico
Jordi Brnquez Jimnez
1. Enunciado
2. Resolucin

Mdulo didctico 7
El lenguaje de programacin Java
Jordi Brnquez Jimnez
1. Java como lenguaje de programacin estructurada
2. Java como lenguaje de programacin orientada a objetos
FUOC PID_00160191 8 Diseo y programacin orientada a objetos

Bibliografa

Booch, G.; Rumbaugh, J.; Jacobson, I. (1999). El lenguaje de modelado


unificado UML. Madrid: Addison-Wesley Iberoamericana.

Eckel, B. (2000, 2003). Thinking in C++ (2. ed., vol. 1 y 2). Nueva Jersey:
Prentice Hall.

HorstMann, C. S. (1997). Practical object oriented development in C++ and Java.


Wiley.

Joyanes, L. (1998). Programacin orientada a objetos. Madrid: McGraw-Hill.

Kernighan, B. W.; Ritchie, D. M. (1988). The C programming language


(2. ed.). Prentice Hall.

Meyer, B. (1999). Construccin de software orientado a objetos. Madrid: Prentice


Hall.

Rumbaugh, J.; Blaha, M.; Premernali, W.; Eddy, F.; Lorensen, W.


(1996). Modelado y diseo orientado a objetos. Madrid: Prentice Hall.

Stroustrup, B. (1997). The C++ programming language (3. ed.). Massachusetts:


Addison Wesley.

Web

C++ Reference. http://www.cppreference.com/

C++ Standard Library. http://www.cplusplus.com/ref/

C++ FAQ Lite. http://www.parashift.com/c++-faq-lite/

Wikipedia: http://www.wikipedia.org