Netbeats

Páginas: 10 (2474 palabras) Publicado: 5 de marzo de 2014
Programación Orientada a Objetos, 3er curso
Ejercicios resueltos
1.

¿Cómo es posible crear objetos de una clase cuyos constructores son todos privados?
a)
b)
c)
d)

2.

Definiendo un método estático público en la clase que cree un objeto de la clase y lo devuelva.
Definiendo una subclase y declarando públicos los constructores heredados.
Definiendo una superclase con constructorespúblicos.
No es posible.

¿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]);
System.out.println (b.y[0] + " " + b.y[1]);
}
}

¿Cuál es la salida de la línea (1)?
a)
b)
c)
d)
4.

En el programa anterior, ¿cuál es la salida de la línea(2)?
a)
b)
c)
d)

5.

12
14
22
24

12
14
22
24

¿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--); }
}

(1)
(2)

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[]) {
for (int i = 0; i < lista.length; i++)
for (int j = lista.length-1; j > i; j--)
if (lista[j] }

a)

1
2
3
4

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.
static void ordenar (Ordenable lista[]) {
for (int i= 0; i < lista.length; i++)
for (int j = lista.length-1; j > i; j--)
if (lista[j].menor (lista[j-1])) intercambiar (lista, j, j-1);
}
interface Ordenable {
boolean menor (Ordenable obj);
}

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 losmé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.
abstract class Figura implements Ordenable {
public boolean menor (Ordenable obj) {
return obj instanceof Figura
&& area () < ((Figura) obj) .area ();
}
abstract double area();
}
class Rectangulo extends Figura {
double left, top, width, height;
public double area () { return width * height; }
}
class Circulo extends Figura {
double centerX, centerY, radius;
public double area () { return 2 * Math.PI * radius; }
}

7.

a) Definir una clase Conjunto que contenga:
− Un array de valores de cualquier tipo.
− Un método interseccion que tome como argumentootro 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.
class Conjunto {
Object elementos[];
Conjunto (Vector elems) {
elementos = new Object [elems.size ()];
for (int i = 0; i < elementos.length; i++)
elementos [i] = elems.elementAt (i);
}
Conjunto interseccion (Conjunto...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS