Skip to content

RA4 - CEh

< volver a actividades

Empaquetar actividades

Empaqueta las actividades, dentro de la carpeta ut08, en la carpeta actividades/ce4h.

Actividad 18

paquete: A18_obra

Dada la siguiente jerarquía de clases:

public interface Montador{
    void montar(String x);
    void desmontar(String x);
}

public class Obrero{
    public Obrero(){System.out.println("Se crea Obrero");}
    public void saludar(){System.out.println("Hola, soy Obrero");}
    ...
}

public class Carpintero extends Obrero implements Montador {
    public Carpintero(){System.out.println("Se crea Carpintero");}
    public void montar(String x) {System.out.println("Montando " + x);}
    public void desmontar(String x) {System.out.println("Desmontando " + x);}
    public void clavar() {...}
}

public class Albañil extends Obrero {
    public Albañil() {
        super();
        System.out.println("Se crea Albañil");
    }
    public void levantarMuro(){ 
        System.out.println("Levantando muro …");
    }
}

a) Indicar qué líneas del siguiente fragmento de programa producirán errores de compilación,

public static void main(String[] args){
    Montador m1 = new Carpintero();
    Montador m2 = new Albañil();
    Obrero o1 = new Carpintero();
    Obrero o2 = new Albañil();
    o1.montar("Mesa");
    o2.levantarMuro();
    m1.saludar();
    m1.montar("Silla");
    ((Albañil)o2).levantarMuro();
    ((Albañil)o1).levantarMuro();
}

b) Una vez eliminadas las líneas con error, indicar cuál sería la salida por pantalla del programa.

c) ¿Sería correcta la instrucción siguiente?"

Albañil a = new Albañil();
System.out.println(a.toString());

Actividad 19

paquete: A19_preguntas3

Las clases siguientes implementan una jerarquía de herencia:

class Base {
    String metodo1() {return "Base.metodo1()";}
    String metodo2(String s) {return "Base.metodo1(" + s + ")";}
}

public interface TipoI{
    String metodoIn2(String s);
    String metodoIn3();
}

class Derivada extends Base implements TipoI{
    public String metodoIn2(String s) {return "Derivada.metodoIn2()";}
    public String metodoIn3() {return "Derivada.metodoIn3()";}
    String metodo1() {return "Derivada.metodo1()";}
}

class Derivada2 extends Derivada{
    String metodo2 (String s) {return "Derivada2.metodo2(" + s + ")";}
    String metodo4() {return "Derivada2.metodo4()";}
}

Sea la clase CuestionHerencia que usa las anteriores:

public class CuestionHerencia{
    public static void main (String a[]){
        String tmp;
        Derivada derivada;
        Derivada2 derivada2;
        Base base;

        derivada2 = new Derivada2(); 
        base = derivada2;
        tmp = derivada2.metodo1(); 
        System.out.println("1) "+tmp);
        tmp = derivada2.metodoIn2("EDA!!"); 
        System.out.println("2) "+tmp);
        tmp = base.metodo1();
        System.out.println("3) "+tmp);
        tmp = base.metodo2("EDA!!"); 
        System.out.println("4) "+tmp);
        tmp = derivada2.metodoIn3();
        System.out.println("5) "+tmp);
        tmp = derivada2.metodo4();
        System.out.println("6) "+tmp);
        tmp = base.metodo3();
        System.out.println("7) "+tmp);
        derivada = new Derivada();
        derivada2 = new Derivada2();
        base = new Base();
        Distinta ref = new Distinta();
        tmp = ref.prueba(derivada2); 
        System.out.println("8) "+tmp);
        tmp = ref.prueba(derivada); 
        System.out.println("9) "+tmp);
        tmp = ref.prueba(base); 
        System.out.println("10) "+tmp); 
    }
}

​ a) Señalar los errores existentes.

​ b) Una vez corregido el programa, escribir la salida por pantalla resultado de su ejecución.


Actividad 20

paquete: A20_supermercado

Supermercado. Creación de Interfaces (actividad con interfaces y polimorfismo)

Supón que debe crear distintas clases Java para describir los productos que vende un supermercado.

Para unificar el código de los distintos programadores del equipo debes crear las siguientes Interfaces Java para describir algunas características de los productos:

  • Interfaz EsLiquido : Esta interfaz indica que los objetos creados a partir de la clase serán líquidos, y tendrá los siguientes métodos:
1
2
3
4
public void setVolumen(double v); 
public double getVolumen(); 
public void setTipoEnvase(String env); 
public String getTipoEnvase();
  • Interfaz EsAlimento : Esta interfaz indica que los objetos creados a partir de la clase serán alimentos, y tendrá los siguientes métodos:
1
2
3
public void setCaducidad(LocalDate fc); 
public LocalDate getCaducidad(); 
public int getCalorias();
  • Interfaz ConDescuento : Esta interfaz indicará que el producto tiene descuento e incluirá los siguientes métodos:
1
2
3
public void setDescuento(double des); 
public double getDescuento(); 
public double getPrecioDescuento();

Creación de clases de productos. Se pide que programes las siguientes clases de productos, implementando las interfaces que sean necesarias.

a) Clase Detergente : Define una botella de detergente (debes tener en cuenta que este producto puede tener descuento).

Sus propiedades principales serán: marca (String) y precio (double).

Incluye otras propiedades según sea necesario a la hora de implementar las interfaces.

  • Constructor: programa un constructor que reciba como parámetros una marca y un precio.
  • Métodos set y get: programa métodos set y get para la marca y el precio.
  • Métodos de las interfaces: implementa los métodos de las interfaces.
  • Método toString: programa el método toString con todas las características del producto.

b) Clase Cereales : Define el producto caja de cereales (este producto no tiene descuentos).

Las propiedades del producto serán marca, precio y tipo de cereal (String).

  • Programa un constructor que reciba como parámetros las tres propiedades anteriores.
  • Programa los métodos set y get para dichas propiedades.
  • Implementa los métodos de las interfaces implementadas (si es necesario añade más propiedades a la clase).

A tener en cuenta: para el cálculo del método getCalorias() las calorías serán las siguientes:

  • 5 si el cereal es espelta,
  • 8 si es maíz,
  • 12 si es trigo, y
  • 15 en los demás casos.
  • Programa el método toString para devolver una cadena con todas las características del producto.

c) Clase Vino : Esta clase describirá el producto botella de vino (este producto es susceptible de tener descuento).

El producto tendrá como propiedades la marca, el tipo de vino, los grados de alcohol y el precio.

  • Programa al igual que los productos anteriores un constructor con estas cuatro propiedades como parámetros.
  • Programa también los métodos set, get, toString y los métodos de las interfaces. Añada nuevas propiedades si es necesario.

A tener en cuenta: para el cálculo del método getCalorias() las calorías se calcularán multiplicando por 10 la graduación alcohólica.

d ) Programa de TestSupermercado: Realiza un programa de prueba donde crees varios productos de cada clase. Haz un ejemplo de polimorfismo creando un ArrayList de productos alimenticios y calculando la suma total de sus calorías.


Actividad 21

paquete: A21_figuras

Implementa una interface llamada iFigura2D que declare los métodos:

  • double perimetro(): Para devolver el perímetro de la figura.
  • double area(): Para devolver el área de la figura.
  • void escalar(double escala): Para escalar la figura (aumentar o disminuir su tamaño). Solo hay que multiplicar los atributos de la figura por la escala (> 0).
  • void imprimir(): Para mostrar la información de la figura (atributos, perímetro y área) en una sola línea.

Existen 4 tipos de figuras.

  • Cuadrado: Sus cuatro lados son iguales.
  • Rectángulo: Tiene ancho y alto.
  • Triángulo: Tiene ancho y alto.
  • Círculo: Tiene radio.

Crea las 4 clases de figuras de modo que implementen la interface iFigura2D. Define sus métodos.

Crea una clase ProgramaFiguras con un main en el que realizar las siguientes pruebas:

​ a) Crea un ArrayList figuras.

​ b) Añade figuras de varios tipos.

​ c) Muestra la información de todas las figuras.

​ d) Escala todas las figuras con escala = 2.

​ e) Muestra de nuevo la información de todas las figuras.

​ f) Escala todas las figuras con escala = 0.1.

​ g) Muestra de nuevo la información de todas las figuras.


Actividad 22

paquete: A22_mascotas

Implementa una clase llamada Inventario que utilizaremos para almacenar referencias a todos los animales existentes en una tienda de mascotas.

Esta clase debe cumplir con los siguientes requisitos:

  • En la tienda existirán 4 tipos de animales: perros, gatos, loros y canarios.
  • Los animales deben almacenarse en un ArrayList privado dentro de la clase Inventario.
  • La clase debe permitir realizar las siguientes acciones:
    • Mostrar la lista de animales (solo tipo y nombre, 1 línea por animal).
    • Mostrar todos los datos de un animal concreto.
    • Mostrar todos los datos de todos los animales.
    • Insertar animales en el inventario.
    • Eliminar animales del inventario.
    • Vaciar el inventario.

Implementa las demás clases necesarias para usar la clase Inventario.

El diagrama UML sería:

ut08_act22

Actividad 23

Sistema de Pago

  1. Diseñar un sistema de pago para un comercio donde se utilizan diferentes métodos de pago (efectivo, tarjeta, transferencia). Crear una interfaz MetodoPago que contenga los siguientes métodos:
  2. procesarPago(double cantidad): simula el procesamiento del pago.
  3. getDetallePago(): devuelve un resumen del método de pago.
  4. Crear las clases PagoEfectivo, PagoTarjeta y PagoTransferencia, que implementen la interfaz MetodoPago. Cada clase deberá implementar los métodos de la interfaz de manera adecuada:
  5. PagoEfectivo: simplemente procesa el pago y devuelve el detalle.
  6. PagoTarjeta: solicita y guarda los detalles de la tarjeta (nombre, número) y procesa el pago.
  7. PagoTransferencia: solicita y guarda el número de cuenta y procesa el pago.
  8. Crear una clase Comercio que permita recibir una lista de pagos utilizando la interfaz MetodoPago y muestre un resumen de los pagos realizados.
  9. Crear una clase TestPago que realice pruebas de todos los métodos de pago.

< volver a actividades