Ejercicios en Java
Ejercicios en Java
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
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
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
2.1 Cuestiones
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