Programacion en java

Solo disponible en BuenasTareas
  • Páginas : 5 (1009 palabras )
  • Descarga(s) : 0
  • Publicado : 2 de mayo de 2011
Leer documento completo
Vista previa del texto
TEMA 1 Conceptos de Java para Estructuras de Datos Herencia y polimorfismo

EJERCICIOS RESUELTOS

Ejercicio 1.- Indica el contenido de los vectores a y b tras las siguientes instrucciones:
int a[]; int b[] = new int[3]; a = new int[3]; a[0] = 1; b[1] = a[0]; a = b; b[0] = a[1];

Solución:
int a[];

a

null

int b[] = new int[3];

b

0

0

0

a = new int[3];

a b

0 00 0

0 0

a
a[0] = 1;

1 0

0 0

0 0

b

a
b[1] = a[0];

1 0

0 1

0 0

b

a
a = b;

b

0

1

0

a
b[0] = a[1];

b

1

1

0

Ejercicio 2.- Implementar los métodos area y perímetro en la clase Circulo, haciendo uso del siguiente atributo de la clase Math:
public static final double PI

Solución:
public double area() { return Math.PI * radio* radio; } public double perimetro() { return Math.PI * 2 * radio; }

Ejercicio 3.- Implementar una clase que permita gestionar un conjunto de círculos (como máximo 10 círculos) • Los círculos se guardarán en un vector (con tamaño máximo 10) • El constructor debe crear el vector vacío • Consultores: leer el número de círculos insertados y poder recuperar un círculo del vector • Modificadores:insertar un círculo en el vector (si hay menos de 10) • Métodos toString() y equals() Solución:
public class ColeccionCirculos { /* Atributos */ private int numCirculos; private Circulo elArray[]; private static final int TAM_MAXIMO = 10; /* Constructor */ public ColeccionCirculos() { elArray = new Circulo[TAM_MAXIMO]; numCirculos = 0; } /* Consultores */ public int leerNumeroCirculos() {return numCirculos; } public Circulo recuperarCirculo(int posicion) { if (posicion >= 0 && posicion < numCirculos) return elArray[posicion]; else return null; } /* Modificadores */ public void insertar(Circulo nuevoCirculo) { if (numCirculos < TAM_MAXIMO) elArray[numCirculos++] = nuevoCirculo; }

/* toString */ public String toString() { String res = “Colección de ” + numCirculos + “ círculos ”;for (int i = 0; i < numCirculos; i++) res += “(” + elArray[i].toString() + “)”; return res; } /* equals */ public boolean equals(Object x) { ColeccionCirculos cX = (ColeccionCirculos) x; boolean eq = (numCirculos == cX.numCirculos); for (int i = 0; i < numCirculos && eq; i++) eq = cX.recuperarCirculo(i).equals(elArray[i]); return eq; } }

Ejercicio 4.- Sean las siguientes clases:
public classAnimal { public void sonido() { System.out.println(“Grunt”); } } public class Muflon extends Animal { public void sonido() { System.out.println(“MOOOO!”); } } public class Armadillo extends Animal {}

¿Qué instrucciones del siguiente programa no son correctas?
public class Test1Animal { public static void main(String[] args) { adoptaAnimal(new Armadillo()); Object o = new Armadillo();Armadillo a1 = new Animal(); Armadillo a2 = new Muflon(); } private static void adoptaAnimal(Animal a) { } }

Solución:
Armadillo a1 = new Animal();

No es correcta porque Armadillo es una subclase de Animal.
Armadillo a2 = new Muflon();

No es correcta porque Armadillo y Muflon son clases hermanas

Ejercicio 5.- Dada la siguiente jerarquía de clases:
Vehiculo
public Vehiculo(intpotencia); public int potencia();

Coche public Coche(int potencia, int numPlazas); public int numPlazas();

Moto public Moto(int potencia);

Diseñar una clase Garaje que: • En el constructor se indique el número total de plazas de garaje • En cada plaza se pueda guardar tanto un coche como una moto • Tenga una función que devuelva la cuota mensual de una plaza: Si en dicha plaza hay un coche, lacuota se calcula como la potencia multiplicada por el número de plazas Si en dicha plaza hay una moto, la cuota se calcula como la potencia multiplicada por 2 Si no hay ningún vehículo en la plaza, la cuota es 0

Solución:
public class Garaje { /* Atributos */ private Vehiculo plazas[]; /* Constructor */ public Garaje(int numPlazas) { this.plazas = new Vehiculo[numPlazas]; } public void...
tracking img