Ejercicios POO Java Avanzado.
Ejercicios POO Java Avanzado.
1. Dadas las excepciones Exc0 que hereda de Exception y Exc1 que hereda de Exc0. ¿Cuál
es el resultado de la ejecución del siguiente código? Justifica la respuesta.
static f () throws X {
try {
throw new Y ();
} catch (X ex) {
g ();
}
}
static g () throws X {
try {
throw new X ();
} catch (Y ex) {
}
}
}
class Y extends X {
public String toString () { return "Y"; }
}
class Z extends Y {
public String toString () { return "Z"; }
}
class Ejercicio {
public static void main (String [] args) {
Clase1 obj1= new Clase1(7);
Clase1 obj2= new Clase1(9);
obj2=obj1;
System.out.print(obj1.valorprop()+" ");
System.out.print(obj2.valorprop()+" ");
}//fin main
}
class Clase1{
static int prop=0;
public Clase1 (int valor){ prop=valor;}
public int valorprop(){ return prop; }
}
4. Implemente en lenguaje de diseño la clase genérica Cola, con todas las operaciones
necesarias
5. Desarrollar una clase vector que permita realizar operaciones básicas de vectores con
números enteros. Los métodos a añadir son los siguientes:
Suma(): suma dos vectores y retorna el vector resultante
Acumula(): suma un vector con el vector actual. El resultado queda almacenado en el
vector actual
Considerar todas las condiciones de error que se podrían dar tanto en los métodos ya
implementados como en los que ud implementará.
Notificar dichos errores utilizando excepciones propias (donde crea conveniente)
/**
* Constructor que crea un vector de la dimension indicada, inicialmente con todas sus
componentes a cero.
*
* @param dimension
* El numero de componentes del vector
*/
public Vector(int dimension) {
componentes = new int[dimension];
}
/**
* Este método cambia la componente i-ésima del vector por el valor pasado
* como argumento.
*
* @param pos
* El indice de la posición cuyo valor se va a cambiar.
* @param valor
* El nuevo valor que le damos a la componente i-ésima del
* vector.
*/
public void cambiaComponente(int pos, int valor) {
componentes[pos] = valor;
}
/**
* Prueba de la clase Vector
*
*/
public class PruVector {
/**
* Método principal de prueba de la clase Vector
*/
public static void main(String[] args) {
// crea vector (1, 2, 3)
Vector v3a = new Vector(3);
v3a.cambiaComponente(0, 1);
v3a.cambiaComponente(1, 2);
v3a.cambiaComponente(2, 3);
6. Todas las clases en Java heredan de la clase base Object, por lo que se puede
emplear Object para implementar algoritmos genéricos. Considerando lo anterior:
Diseñe e implemente una clase Caja que pueda guardar objetos de cualquier
tipo(object). Realizar Main de prueba respectivo.
7. Transformar la clase Caja anterior, en una clase Generica utilizando el parámetro
formal del tipo <T>. Realizar Main de prueba respectivo.
8. Utilizando la clase ArrayList, escribe un programa que realice los siguientes pasos:
a. Guarde en el array 4 objetos de la clase Caja que contengan: “medias”, 3.5, 7,
Otra caja.
b. Recorra el array y muestre por pantalla el contenido de todas las cajas.
c. Realizar Main de prueba respectivo.
9. Se pide implementar una clase genérica PAR que guarda el par llave-valor, donde los tipos
de la llave y el valor son especificados por los parámetros L y V respectivamente. Esta
clase debe permitir actualizar y obtener los datos de los atributos. En el main se pide crear
dos instancias de esta clase: una para un par String-Integer (por ejemplo, para guardar un
tipo de dimensión y su valor) y otro para un par Estudiante-double (por ejemplo, para
guardar la calificación de un estudiante).
10. Se tiene la implementación en JAVA el manejo de colas con arreglos como se indica a
continuación:
public class Cola{ public boolean encolar(int x) public int desencolar() {
private int [] cola; { int x=-1;
private int frente, fin; boolean exito; if (estaVacia()) {
private int MAX_ELEM=3; fin=(fin+1)%MAX_ELEM; System.out.println("Cola vacia");
}else{
public Cola() if (frente==fin) { frente=(frente+1)%MAX_ELEM;
{ exito=false; x=cola[frente];
cola=new int[MAX_ELEM]; if (fin==0) }
frente=0; fin=MAX_ELEM-1; return x;
fin=0; else }
} fin=fin-1;
}
public boolean estaVacia() { else{ public void imprimir (){
return (frente==fin); cola[fin]=x; while (!estaVacia()){
} exito=true; System.out.println("\t"+
public boolean estaLlena() { } desencolar());
return (frente==(fin+1)%MAX_ELEM); return exito; }
} }
}
Se pide:
Implementar el manejo de excepciones en los siguientes casos:
o Insertar elementos en cola llena
o Sacar elementos de cola vacia
Capturar y gestionar las excepciones en el main.