Boletín 403. Composición de clases y envío de mensajes
En este boletín veremos cómo definir clases y cómo pueden interactuar entre sí.
Ejercicios
Ejercicio 1. Sigue los siguientes pasos:
- Crea la clase
Grupocon las siguientes características:- Se desea almacenar para cada grupo su nombre, país y año de creación.
- Crea getters y setters necesarios
- Crea un constructor para inicializar todos los atributos. Los valores de estos se pasan por parámetros.
- Crea el método
int getEdad()que devuelva los años del grupo. Obtén el año actual.
- Crea la clase
Discocon las siguientes características:- Se desea almacenar para cada disco el título, el grupo, el año de lanzamiento y el número de canciones.
- Crea getters y setters necesarios.
- Crea un constructor para inicializar todos los atributos. Los valores de estos se pasan por parámetros.
- Crea un método que indique cuántos años de existencia tenía el grupo cuando se lanzó el disco.
- Crea una clase llamda
Appcon el siguiente programa principal:- Crea el grupo español
La raíznacido en 2006. - Crea el disco de este mismo grupo
Entre poetas y presosdel año 2016 que contiene 15 temas. - Indica cuánto tiempo hace que se fundó el grupo
La raíz. - Indica cuántos años pasaron entre la creación del grupo
La raízy el lanzamiento de su discoEntre poetas y presos.
- Crea el grupo español
Ejercicio 2. Sigue los siguientes pasos:
- Crea la clase
Puntocon las siguientes características.- Debes almacenar las coordenadas
xyy. - Crea los getters. No vamos a crear setters.
- Crea un constructor para inicializar todos los atributos que se pasan por parámetros.
- Crea el método
void desplazamientoHorizontal(double desplazamiento)que modifica la coordenadax. - Crea el método
void desplazamientoVertical(double desplazamiento)que modifica la coordenaday. - Crea el método
double distancia(Punto p)que calcule la distancia al punto que se pasa por parámetro. - Crea el método
String getPosición()que devuelve la posición en el siguiente formato(x,y).
- Debes almacenar las coordenadas
- Crea la clase
Circulocon las siguientes características:- Como atributos almacena su centro (que es un objeto de la clase
Punto) y su radio. - Crea getters y setters necesarios.
- Crea un constructor para inicializar los atributos en los que se pasan como parámetros las coordenadas
xeydel centro, y su radio. - Crea un método que calcule el perímetro del círculo.
- Crea un método que calcule el área del círculo.
- Crea el método
void desplazamiento(int x, int y)que desplace el centro del círculo. - Crea el método
boolean esPuntoInterior(Punto punto)que indique si el punto que se recibe por parámetro está dentro del círculo.
- Como atributos almacena su centro (que es un objeto de la clase
- Crea una clase llamda
Appcon el siguiente programa principal:- Crea un círculo con centro en el punto
(10,25)y con un radio de 5. - Imprime por pantalla el perímetro del círculo.
- Imprime por pantalla el área del círculo.
- Indica si el punto
(12,11)está dentro del círculo. - Desplaza el centro del círculo 5 unidades en el eje
x, y -10 en el ejey. - Indica si el punto
(12,11)está dentro del círculo.
- Crea un círculo con centro en el punto
Ejercicio 3. Sigue los siguientes pasos:
- Crea la clase
Jugadorcon las siguientes características:- Deseamos almacenar el nombre del jugador, su dorsal, el número de goles marcados y su equipo (de la clase
Equipoque se creará en el siguiente punto). - Crea getters necesarios.
- Crea los setters excepto para el número de goles.
- Modifica el setter del dorsal, para incluir una validación: el dorsal debe estar entre 1 y 99, si no está en este valor, se inicializará en 99.
- Crea el método
boolean isLibre()que devuelve verdadero si el equipo del jugador es nulo y falso en caso contrario. - Modifica el getter del objeto de la clase
Equipopara que devuelva unOptional<Equipo>dependiendo de si el grupo es nulo o no. - Crea un constructor que reciba el nombre y dorsal del jugador. El dorsal debe estar entre 1 y 99, si no está en este valor, se inicializa en 99. El número de goles se inicializa a 0.
- Crea el método
void marcarGol()que aumente en una unidad los goles marcados.
- Deseamos almacenar el nombre del jugador, su dorsal, el número de goles marcados y su equipo (de la clase
- Crea la clase
Equipocon las siguientes características:- Almacenaremos el nombre de equipo y una lista de jugadores (utiliza la estructura de datos que desees).
- Crea getter y setter para el nombre del equipo.
- Crea un constructor que reciba el nombre del equipo (recuerda inicializar la estructura de datos que almacenará los jugadores).
- Crea el método
void añadirJugador(Jugador jugador)que añada un jugador al equipo. Para añadir al jugador ten en cuenta:- El equipo no puede tener más de 10 jugadores.
- No se pueden repetir dorsales en el mismo equipo.
- Si se cumple alguna de estas condiciones, no añadas al jugador.
- Recuerda asignarle el equipo al jugador. De este modo podremos obtener el equipo desde el jugador.
- Crea el método
Jugador getMaximoGoleador()que devuelva el jugador con más goles del equipo. Si hay dos jugadores con los mismos goles, devuelve el que tenga el dorsal más pequeño.
- Crea una clase llamda
Appcon el siguiente programa principal:- Crea el jugador
Castolocon dorsal 10. Este marcó 5 goles. - Crea el jugador
Ximelezcon dorsal 11. Este marcó 3 goles. - Crea el jugador
Minandacon dorsal 7. Este marcó 4 goles. - Crea el jugador
Messicon dorsal 10. Este marcó 6 goles. - Crea el equipo
Programacióny añade a estos 4 jugadores en el orden de creación. Messi no debería añadirse. - Indica el nombre del máximo goleador del equipo.
- El jugador
Minandamarcó un gol. - Indica el nombre del máximo goleador del equipo.
- Crea el jugador
Ejercicio 4. Sigue los siguientes pasos:
- Crea un enumerado
Paispara los siguientes países:Atlántida,Neverland,Utopia,WakandayWonderland. - Crea la clase
Bancocon las siguientes características:- Se debe almacenar el nombre del banco y el país.
- Crea los getters y setters necesarios.
- Crea un constructor para inicializar todos los atributos.
- Crea la clase
Tarjetacon las siguientes características.- Crea el método estático
boolean comprobarNumero(String numero)que indique si un número de tarjeta de crédito/débito es auténtico utilizando el algoritmo de Luhn. Considera que una tarjeta tiene 16 dígitos. - Para cada tarjeta se debe almacenar:
- El número de tarjeta.
- La fecha de caducidad. Será una cadena de texto con el siguiente formato
mm/yyyy. - El banco que expidió la tarjeta.
- Una pequeña descripción.
- Crea los getters y setters necesarios. El número de tarjeta, la fecha de caducidad y el banco que expidió la tarjeta no se pueden modificar una vez creada la tarjeta. La descripción sí que se podrá modificar.
- Crea un constructor para inicializar todos los atributos que reciba por parámetros el número de la tarjeta, la fecha de caducidad en texto, el banco y una descripción. Comprueba que el número es correcto y que la tarjeta no está caducada. En caso de que esto ocurra, se debe marcar la tarjeta como inválida.
- Modifica el getter para el número de tarjeta para que cada 4 dígitos muestre un espacio en caso de que esta sea válida. Si no, devolverá el texto
Inválida.
- Crea el método estático
- Crea la clase
Walletpara almacenar tarjetas de crédito en categorías con las siguientes características:- Crea un atributo
tarjetasde tipoHashMap. Como clave utilizaremos la categoría de las tarjetas (una cadena de texto) y como valor unArrayListdeTarjeta. - No serán necesarios ni getters ni setters.
- Crea un constructor que inicialice el
HashMap. - Crea un método
void crearCategoria(String categoria)que cree una lista vacía de tarjetas y la añada al atributotarjetascon la clave correspondiente a la categoría. Si la categoría ya existe, no realices ninguna acción. - Crea un método
ArrayList<String> getCategorias()que devuelva una lista con las categorías creadas. - Crea un método
void engadirTarjeta(String categoria, Tarjeta tarjeta). Si la categoría existe, añade la tarjeta en elArrayListya creado. Si no existe, crea la categoría y añade la tarjeta. Además, la tarjeta se añadirá solo si es válida. - Crea un método
ArrayList<Tarjeta> getTarjetasBanco(Banco banco)que devuelva una lista con todas las tarjetas de un banco, sea de la categoría que sea. - Crea un método
ArrayList<Tarjeta> getTarjetasCategoria(String categoria)que devuelva una lista con todas las tarjetas de una categoría; si la categoría no existe, devuelve una lista vacía. - Documenta los métodos.
- Crea un atributo
- Realiza el siguiente programa principal:
- Crea el banco:
- Nombre:
Gringotts Wizarding Bank - País:
Atlántida
- Nombre:
- Crea el banco:
- Nombre:
Banco de Hierro de Braavos - País:
Utopía
- Nombre:
- Crea la tarjeta:
- Número:
4539 1488 1343 6467 - Fecha de vencimiento: junio de 2030
- Banco:
Gringotts Wizarding Bank - Descripción:
Tarjeta inválida 1
- Número:
- Crea la tarjeta:
- Número:
4539 1488 0343 6467 - Fecha de vencimiento: marzo de 2023
- Banco:
Banco de Hierro de Braavos - Descripción:
Tarjeta inválida 2
- Número:
- Crea la tarjeta:
- Número:
5540 5000 0100 0004 - Fecha de vencimiento: agosto de 2032
- Banco:
Gringotts Wizarding Bank - Descripción:
Tarjeta válida 1
- Número:
- Crea la tarjeta:
- Número:
5020 4700 0137 0055 - Fecha de vencimiento: diciembre de 2031
- Banco:
Banco de Hierro de Braavos - Descripción:
Tarjeta válida 2
- Número:
- Crea un objeto de la clase
Wallet. - Crea la categoría
Personalen el objeto de la claseWallet. - Añade la tarjeta con descripción
Tarjeta válida 1en el objeto de la claseWalletdentro de la categoríaPersonal. - Añade la tarjeta con descripción
Tarjeta válida 2en el objeto de la claseWalletdentro de la categoríaTrabajo. - Muestra por pantalla las categorías del objeto de la clase
Wallet. - Crea la tarjeta:
- Número:
4548 8120 4940 0004 - Fecha de vencimiento: abril de 2033
- Banco:
Banco de Hierro de Braavos - Descripción
Tarjeta válida 3
- Número:
- Añade la tarjeta con descripción
Tarjeta válida 3en el objeto de la claseWalletdentro de la categoríaPersonal. - Intenta añadir la tarjeta con descripción
Tarjeta inválida 1en el objeto de la claseWalletdentro de la categoríaPersonal. - Intenta añadir la tarjeta con descripción
Tarjeta inválida 2en el objeto de la claseWalletdentro de la categoríaPersonal. - Muestra el número y la descripción de todas las tarjetas de la categoría
Personal. - Muestra el número y la descripción de todas las tarjetas de la categoría
Inventada. - Muestra el número y la descripción de todas las tarjetas del banco
Banco de Hierro de Braavos.
- Crea el banco: