0% encontró este documento útil (0 votos)
202 vistas4 páginas

Ejercicios 5 Java 1

1. El resumen resume el documento sobre programación orientada a objetos y ejercicios. Explica cómo crear objetos de una clase con constructores privados, define arrays bidimensionales, y describe la salida de dos líneas de código de un programa de ejemplo. 2. Luego, resume las preguntas sobre ordenar listas genéricas usando burbuja, definir clases de figuras geométricas para ordenar por área, crear una clase Conjunto para operaciones como intersección, y explica la diferencia entre métodos synchronized y no synchronized.

Cargado por

MARGOTH MORALES
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
202 vistas4 páginas

Ejercicios 5 Java 1

1. El resumen resume el documento sobre programación orientada a objetos y ejercicios. Explica cómo crear objetos de una clase con constructores privados, define arrays bidimensionales, y describe la salida de dos líneas de código de un programa de ejemplo. 2. Luego, resume las preguntas sobre ordenar listas genéricas usando burbuja, definir clases de figuras geométricas para ordenar por área, crear una clase Conjunto para operaciones como intersección, y explica la diferencia entre métodos synchronized y no synchronized.

Cargado por

MARGOTH MORALES
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

Programación Orientada a Objetos Ejercicios

1. ¿Cómo es posible crear objetos de una clase cuyos constructores son todos privados?
a) Definiendo un método estático público en la clase que cree un objeto de la clase y lo devuelva.
b) Definiendo una subclase y declarando públicos los constructores heredados.
c) Definiendo una superclase con constructores públicos.
d) No es posible.

2. ¿Cuál de las siguientes afirmaciones es falsa en Java?


a) Es posible definir arrays bidimensionales de la forma a[i][j], donde cada fila a[i] puede tener distinta
longitud.
b) No es posible declarar arrays con memoria estática.
c) “Hola” es un array.
d) Un array es un objeto.

3. Dado el siguiente programa:


class A {
static int x[ ] = {1, 2};
int y[ ];
void f (int z[ ]) { z[1]+=2; }
void g ( ) {
A a = new A ( );
a.x[0]++;
}
}
class B {
public static void main (String args[ ]) {
A b = new A ( );
b.y = b.x;
b.f (b.y);
b.g ( );
System.out.println (b.x[0] + " " + b.x[1]); (1)
System.out.println (b.y[0] + " " + b.y[1]); (2)
}
}

¿Cuál es la salida de la línea (1)?


a) 12
b) 14
c) 22
d) 24

4. En el programa anterior, ¿cuál es la salida de la línea (2)?


a) 12
b) 14
c) 22
d) 24

5. ¿Cuál es la salida en pantalla del siguiente programa?

class A {
static int n = 0;
String f (A x) { return "AA" + (x.n++); }
String f (B x) { return "AB" + (x.n--); }
}
class B extends A {
String f (B x) { return "BB" + (x.n--); }
public static void main (String args[]) {
A a = new A ();
A b = new B ();
System.out.println (a.f (b));
System.out.println (b.f (b));
System.out.println (a.f ((B) b));
System.out.println (b.f ((B) b));
}
}

Salida:

AA0
AA1
AB2
BB1

6. El siguiente método ordena una lista de números decimales por el método de la burbuja:
static void ordenar (double lista[]) { 1
for (int i = 0; i < lista.length; i++) 2
for (int j = lista.length-1; j > i; j--) 3
if (lista[j] < lista[j-1]) intercambiar (lista, j, j-1); 4
}
a) Generalizar la función ordenar para que ordene listas de cualquier tipo de datos sobre los que tenga
sentido definir una relación de orden. Para ello, introducir una mínima modificación en las líneas 1 y 4,
y definir las clases y/o interfaces adicionales que sean necesarias.

b) Basándose en el diseño del apartado anterior, definir las clases Rectangulo, Circulo y Figura, de tal
manera que sea posible ordenar listas de figuras por su área. Definir en estas clases todos los métodos y
variables necesarios para ello, siempre al nivel más alto posible de la jerarquía de clases.
Nota: para simplificar, se permite suponer que los lados de un Rectangulo son paralelos a los ejes de
coordenadas.
7. a) Definir una clase Conjunto que contenga:
− Un array de valores de cualquier tipo.
− Un método interseccion que tome como argumento otro conjunto, y devuelva un nuevo
conjunto con la intersección de los dos, es decir, los elementos de la primera lista que son equal a
algún elemento de la segunda.

b) Definir una clase Persona con una variable RUT y los métodos necesarios para que se pueda hacer la
intersección de listas de personas con la clase anterior, considerando que dos personas son la misma
cuando tienen el mismo RUT.

c) Definir un método elements en la clase Conjunto que devuelva una Enumeration para iterar sobre un
conjunto. Indicación: Enumeration es una interface con dos métodos: nextElement y hasMoreElements.

8. Indicar cuál es la salida del siguiente programa y explicar por qué.

class A {
public static void main (String args[]) throws X {
try { f (); throw new Z (); }
catch (Y ex) { System.out.println (“Y” + ex); }
catch (X ex) { System.out.println (“X” + ex); }
}
static f () throws X {
try { throw new Y (); } catch (X ex) { g (); }
}
static g () throws X {
try { throw new X (); } catch (Y ex) {}
}
}

class X extends Exception {


public String toString () { return "X"; }
}

class Y extends X {
public String toString () { return "Y"; }
}

class Z extends Y {
public String toString () { return "Z"; }
}

9. Explica brevemente la diferencia entre un método synchronized y otro que no lo es.

10. Dada la siguiente clase:


class Contador extends Thread {
private int n = 0;
private boolean running = true;
private boolean active = true;
public void run () {
while (running) {
if (active) System.out.println (n++);
}
}
}

Añadir a la clase Contador los métodos detener, reanudar, reiniciar y terminar que hagan
respectivamente que la cuenta hacia delante se detenga, se reanude donde se detuvo, vuelva a 0 (esté o no
detenida), y termine definitivamente. Indicación: no utilizar métodos como interrupt, suspend, resume,
stop, etc., heredados de la clase Thread.

También podría gustarte