RA4 - CEh¶
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:
a) Indicar qué líneas del siguiente fragmento de programa producirán errores de compilación,
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?"
Actividad 19¶
paquete: A19_preguntas3
Las clases siguientes implementan una jerarquía de herencia:
Sea la clase CuestionHerencia que usa las anteriores:
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:
- Interfaz
EsAlimento: Esta interfaz indica que los objetos creados a partir de la clase serán alimentos, y tendrá los siguientes métodos:
- Interfaz
ConDescuento: Esta interfaz indicará que el producto tiene descuento e incluirá los siguientes métodos:
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
toStringpara 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
ArrayListprivado dentro de la claseInventario. - 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:

Actividad 23¶
Sistema de Pago
- Diseñar un sistema de pago para un comercio donde se utilizan diferentes métodos de pago (efectivo, tarjeta, transferencia). Crear una interfaz
MetodoPagoque contenga los siguientes métodos: procesarPago(double cantidad): simula el procesamiento del pago.getDetallePago(): devuelve un resumen del método de pago.- Crear las clases
PagoEfectivo,PagoTarjetayPagoTransferencia, que implementen la interfazMetodoPago. Cada clase deberá implementar los métodos de la interfaz de manera adecuada: PagoEfectivo: simplemente procesa el pago y devuelve el detalle.PagoTarjeta: solicita y guarda los detalles de la tarjeta (nombre, número) y procesa el pago.PagoTransferencia: solicita y guarda el número de cuenta y procesa el pago.- Crear una clase
Comercioque permita recibir una lista de pagos utilizando la interfazMetodoPagoy muestre un resumen de los pagos realizados. - Crear una clase
TestPagoque realice pruebas de todos los métodos de pago.