Informatica

Solo disponible en BuenasTareas
  • Páginas : 11 (2556 palabras )
  • Descarga(s) : 4
  • Publicado : 19 de abril de 2010
Leer documento completo
Vista previa del texto
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 constructores públicos. No esposible.

¿Cuál de las siguientes afirmaciones es falsa en Java? 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. a)

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

(1) (2)

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

En el programa anterior, ¿cuál es la salida de la línea (2)? a) b) c) d) 12 1422 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[]) { for (int i = 0; i < lista.length; i++) for (int j = lista.length-1; j > i; j--) if (lista[j] < lista[j-1]) intercambiar (lista, j, j-1); } 1 2 3 4

a)

Generalizar la funciónordenar 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 los métodos y variables necesarios para ello, siempre al nivel más alto posible de la jerarquía declases. 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 () { returnwidth * 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 argumento otro conjunto, y devuelva un nuevo conjunto con la intersección de los dos, es decir, los elementos de la primeralista 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 conj) { Vector inter = new Vector (); for (int i = 0; i < elementos.length; i++) for (int j = 0; j < conj.elementos.length; j++) if...
tracking img