You are on page 1of 13

AB

C D

E F F
BFCF F
F F

A BC
A
D E F
C A D A
FA A
A EA
CA
A
F

C F A ! " A# E
A BC
A
D E F
C A D A
FA A
A EA
CA
A
F
'
( ( F) *+,-,.-/,/-0,1*-2
'E( A
(
! !A (A C%A3 "C%F 4 # 56

$%

&

Agradecimientos

Nos gustara darle las gracias a todos aquellos compa


neros/as que han compartido su tiempo y conocimiento con nosotros a lo largo de estos a
nos, aportando
su granito de arena para hacer posible hoy la publicacion de este libro.

Indice general
1

1. Introducci
on
2. Clases y Objetos
2.1. Cuestiones . . . . . . . . . . . . . . .
2.1.1. Definicion de clases y objetos
2.1.2. Relaciones entre clases . . . .
2.1.3. Referencias . . . . . . . . . .
2.1.4. Modificadores . . . . . . . . .
2.2. Problemas . . . . . . . . . . . . . . .
2.2.1. Definicion de clases y objetos
2.2.2. Relaciones entre clases . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

3. Herencia y Polimorfismo
3.1. Cuestiones . . . . . . . . . . . . . . . . . . . .
3.1.1. Herencia. Generalidades . . . . . . . .
3.1.2. Referencias polimorficas y sobrescritura
3.1.3. Clases abstractas e interfaces . . . . .
3.2. Problemas . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

. . . . . . .
. . . . . . .
de metodos
. . . . . . .
. . . . . . .

4. Excepciones
4.1. Cuestiones . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1. Manejo de excepciones. Excepciones predefinidas en
4.1.2. Excepciones definidas por el usuario . . . . . . . . .
4.1.3. Jerarqua de excepciones . . . . . . . . . . . . . . .
4.2. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1. Manejo de excepciones. Excepciones predefinidas en
4.2.2. Excepciones definidas por el usuario . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.

. . .
Java
. . .
. . .
. . .
Java
. . .

.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

Bibliografa

.
.
.
.
.
.
.
.

5
6
6
14
20
34
38
38
54

.
.
.
.
.

.
.
.
.
.

93
94
94
102
121
128

.
.
.
.
.
.
.

197
. 198
. 198
. 215
. 226
. 230
. 230
. 246

.
.
.
.
.
.
.
.

265

iii

Captulo 1
Introducci
on
La publicacion del presente libro surge como continuacion de los libro Mu
noz Caro C.,
Ni
no A. & Vizcano Barcel
o, A. Introduccion a la programacion con orientaci
on a objetos. Prentice-Hall, 2002. Reimpresi
on 2007 y Serrano Guerrero, J., Vizcano Barcel
o, A.,
Mu
noz Caro, C., & Ni
no Ramos, A. (2012). Ejercicios resueltos de programaci
on imperativa en Java. Bubok Publishing S.L. En el primero se detallan claramente los principios
basicos de la programacion, tanto estructurada como orientada a objetos, principalmente
a nivel teorico; mientras que el segundo libro tiene un claro enfoque practico, presentando
una gran cantidad de ejercicios siguiendo la filosofa de la programacion estructurada y
modular.
As pues, cualquier estudiante cuenta con dos publicaciones que presentan los principales conceptos basicos de la programacion a nivel teorico y trabajan las habilidades
propias de la programacion estructurada mediante una amplia variedad de ejercicios. Sin
embargo, a
un queda un hueco por cubrir por ambas publicaciones, la compenente practica
relacionada con la programacion orientada a objetos. Por lo tanto, se ha considerado conveniente satisfacer dicha carencia a traves del presente texto, el cual presenta una amplia
gama de ejercicios resueltos que trabajan los principales conceptos relacionados con la
programacion orientada a objetos.
Como se comento en los anteriores libros, existen muchos lenguajes de programacion
que siguen la filosofa de la orientacion a objetos (C++, C#, Java, Python, etc.) con
los que poder trabajar actualmente. Decidir cual es el idoneo para el neofito es bastante
complicado y puede ser objeto de interesantes debates. Sin embargo, todos estos lenguajes
comparten una serie de elementos fundamentales que son trabajados a lo largo de este
libro. As pues, el objetivo principal de este texto no es el aprendizaje de un lenguaje de
programacion concreto sino la adquisicion de destreza en el uso de los elementos basicos
de la programacion orientada a objetos. Entre los conceptos basicos considerados en este
libro destacan:


1. INTRODUCCION

Abstraccion de datos
Objetos y clases
Relaciones entre clases
Polimofirsmo
Definicion y control de excepciones
Dichos conceptos son fundamentales dentro del mundo de la programacion orientada
a objetos lo que hace de este libro un referente para cualquier asignatura relacionada con
la misma.
El contenido del libro se organiza como una batera de ejercicios junto con una serie de
posibles soluciones. Dicho contenido se divide a su vez en dos grandes bloques: cuestiones
y problemas. Las cuestiones hacen referencia a ejercicios cortos que suelen presentar al
lector una serie de opciones m
ultiples como solucion, o cuya solucion es una respuesta
simple. Su objetivo es que el lector aprenda a seguir el flujo de control de cada programa
y pueda adquirir las habilidades necesarias para entender y seguir un programa escrito
por otra persona. Entre las competencias que este tipo de ejercicios trata de potenciar
estaran:
el razonamiento crtico,
el aprendizaje autonomo,
la capacidad de analisis, sntesis y evaluacion.
Por otro lado, los problemas representan ejercicios de mayor entidad que conllevan

una mayor dificultad para el lector. Este


debera programar un n
umero variable de lneas
de codigo para resolver cada uno de ellos en funcion de la dificultad de los mismos.
As, el lector tendra que enfrentarse a tareas de analisis, dise
no e implementacion. Estos
ejercicios le serviran para poner en practica distintos conceptos que se habran introducido
brevemente con anterioridad. Con este tipo de programas se trata de trabajar, entre otras,
las siguientes competencias:
la capacidad de resolucion de problemas aplicando tecnicas de ingeniera,
la capacidad para analizar, dise
nar, construir y mantener aplicaciones de forma
robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programacion
mas adecuados.

el conocimiento, dise
no y utilizacion de forma eficiente de los tipos y estructuras de
datos mas adecuados para la resolucion de un problema,
el conocimiento y aplicacion de los procedimientos algortmicos basicos de las tecnologas informaticas para dise
nar soluciones a problemas, analizando la idoneidad
y complejidad de los algoritmos propuestos,
la capacidad para comprender y dominar los conceptos basicos de matematica discreta, logica, algortmica y complejidad computacional, y su aplicacion para la resolucion de problemas propios de la ingeniera.
Todas las soluciones propuestas para cada ejercicio han sido dise
nadas con fines didacticos y su funcionamiento ha sido probado, pero este hecho no implica que pueda haber otras
soluciones perfectamente validas y no comentadas en cada captulo. Como se indico anteriormente, el objetivo del libro no es aprender un lenguaje de programacion concreto
sino adquirir soltura en el manejo de los conceptos clave de la programacion orientada a
objetos. Sin embargo, para poder dise
nar los ejercicios aqu expuestos e implementar las
soluciones de los mismos ha sido necesario seleccionar un lenguaje de programacion con
el que trabajar. As pues, se ha decidido trabajar con el lenguaje de programacion Java
continuando con la lnea de actuacion ya empezada en los libros anteriormente publicados.
El contenido del libro ha sido estructurado en 3 captulos, excluyendo este, que versan
sobre los siguiente temas:
2. Clases y Objetos
3. Herencia y Polimorfismo
4. Excepciones
Dado el eminente caracter practico del presente libro, es inevitable recomendar al estudiante la lectura de otras publicaciones con una mayor componente teorica. As pues, para
comprender y desarrollar todos los conceptos utilizados en la resolucion de los problemas
aqu planteados se recomienda la lectura de otras referencias bibliograficas, incluyendo
ademas otros libros de problemas que tambien pueden resultar de especial interes. Dichas
referencias se encuentran en la u
ltima seccion de libro.

Captulo 2
Clases y Objetos
El presente captulo versa sobre los conceptos basicos de la programacion orientada
a objetos: clases, objetos y referencias. Su objetivo principal es conseguir que el lector
pueda llegar a reconocer y modelar las clases necesarias para implementar la solucion a
un problema dado, as como las relaciones existentes entre dichas clases, los atributos y
operaciones que caracterizan cada clase, y los objetos necesarios derivados de las mismas.
Por ello, todos los ejercicios que se detallan a continuacion han sido clasificados en los
siguientes apartados dependiendo de los contenidos que abordan:
Definicion de clases y objetos
Relaciones entre clases
Referencias
Modificadores

2. CLASES Y OBJETOS

2.1
SECCION

Cuestiones
2.1.1.

Definici
on de clases y objetos

1. Distinguir en los casos siguientes una clase de un objeto:


a) Una taza de cafe.
b) Una taza de cafe con un Don Quijote pintado en ella.
c) La taza de cafe de Joaqun.
d ) Un discurso.
e) El discurso de apertura del curso academico.
f ) El discurso de apertura del curso academico de este curso.
g) Espa
na.
h) La provincia de Ciudad Real.
i ) Ciudad Real capital.
Solucion:
a) Clase, puede haber muchas tazas.
b) Clase, se fabrican muchas tazas como esa en serie.
c) Objeto, solo hay una taza que pertenezca a Joaqun.
d ) Clase, hay muchos discursos de mucha gente.
e) Clase, hay tantos discursos de apertura como cursos academicos.
f ) Objeto, solo hay uno en un a
no determinado.
g) Objeto, es u
nica (la clase podra ser pas).
h) Objeto, es u
nica (la clase podra ser provincia).
i ) Objeto, es u
nica (la clase podra ser ciudad ).

2.1 Cuestiones

2. Cual es la salida del siguiente programa?


class Principal {
public static void main ( String [] args ) {
Clase1 obj = new Clase1 ();
obj . imprimir ( " main " );
}
}
class Clase1 {
private String cad = " Clase1 " ;
public void imprimir ( String cad ) {
System . out . println ( cad );
}
}

a) main
b) Clase1
c) Error: No se puede usar el mismo nombre, cad, para una variable de ejemplar
que para una variable local
d ) main Clase1
Solucion: a
3. Cual es la salida del siguiente programa?
class Principal {
public static void main ( String [] args ){
Clase1 obj1 = new Clase1 ();
obj1 . imprimir (24.3 ,5);
}
}
class Clase1 {
private double valor = 9.8;
private int x = 7;
public void imprimir ( double valor , int x ) {
System . out . print ( valor + " " + this . x );
}
}

Solucion: 24.3 7

You might also like