Saltar al contenido principal

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:

  1. Crea la clase Grupo con 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.
    • Documenta los constructores.
    • Crea el método int getEdad() que devuelva los años del grupo. Obtén el año actual.
    • Documenta los métodos.
  2. Crea la clase Disco con 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.
    • Documenta los constructores.
    • Crea un método que indique cuántos años de existencia tenía el grupo cuando se lanzó el disco.
    • Documenta los métodos.
  3. Crea una clase llamda App con el siguiente programa principal:
    • Crea el grupo español La raíz nacido en 2006.
    • Crea el disco de este mismo grupo Entre poetas y presos del 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íz y el lanzamiento de su disco Entre poetas y presos.

Ejercicio 2. Sigue los siguientes pasos:

  1. Crea la clase Punto con las siguientes características.
    • Debes almacenar las coordenadas x y y.
    • Crea los getters. No vamos a crear setters.
    • Crea un constructor para inicializar todos los atributos que se pasan por parámetros.
    • Documenta los constructores.
    • Crea el método void desplazamientoHorizontal(double desplazamiento) que modifica la coordenada x.
    • Crea el método void desplazamientoVertical(double desplazamiento) que modifica la coordenada y.
    • 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).
    • Documenta los métodos.
  2. Crea la clase Circulo con 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 x e y del centro, y su radio.
    • Documenta los constructores.
    • 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.
    • Documenta los métodos.
  3. Crea una clase llamda App con 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 eje y.
    • Indica si el punto (12,11) está dentro del círculo.

Ejercicio 3. Sigue los siguientes pasos:

  1. Crea la clase Jugador con las siguientes características:
    • Deseamos almacenar el nombre del jugador, su dorsal, el número de goles marcados y su equipo (de la clase Equipo que 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 Equipo para que devuelva un Optional<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.
    • Documenta los constructores.
    • Crea el método void marcarGol() que aumente en una unidad los goles marcados.
    • Documenta los métodos.
  2. Crea la clase Equipo con 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).
    • Documenta los constructores.
    • 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.
    • Documenta los métodos.
  3. Crea una clase llamda App con el siguiente programa principal:
    • Crea el jugador Castolo con dorsal 10. Este marcó 5 goles.
    • Crea el jugador Ximelez con dorsal 11. Este marcó 3 goles.
    • Crea el jugador Minanda con dorsal 7. Este marcó 4 goles.
    • Crea el jugador Messi con dorsal 10. Este marcó 6 goles.
    • Crea el equipo Programación y 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 Minanda marcó un gol.
    • Indica el nombre del máximo goleador del equipo.

Ejercicio 4. Sigue los siguientes pasos:

  1. Crea un enumerado Pais para los siguientes países: Atlántida, Neverland, Utopia, Wakanda y Wonderland.
  2. Crea la clase Banco con 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.
    • Documenta los constructores.
  3. Crea la clase Tarjeta con las siguientes características.
    • Crea y documenta 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, el banco que expidió la tarjeta y una pequeña descripción. La fecha de caducidad será una cadena de texto con el siguiente formato mm/yyyy.
    • 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.
    • Documenta los constructores.
    • 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.
  4. Crea la clase Wallet para almacenar tarjetas de crédito en categorías con las siguientes características:
    • Crea un atributo tarxetas que es un HashMap. Como clave utilizaremos la categoría de las tarjetas (una cadena de texto) y como valor un ArrayList de Tarxeta.
    • No serán necesarios ni getters ni setters.
    • Crea un constructor que inicialice el HashMap.
    • Documenta los constructores.
    • Crea un método void crearCategoria(String categoria) que cree una lista vacía de tarjetas y la añada al atributo tarxetas con 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 engadirTarxeta(String categoria, Tarxeta tarxeta). Si la categoría existe, añade la tarjeta en el ArrayList ya 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<Tarxeta> getTarxetasBanco(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<Tarxeta> getTarxetasCategoria(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.
  5. Realiza el siguiente programa principal:
    • Crea el banco Gringotts Wizarding Bank del país Atlántida. Banco 1.
    • Crea el banco Banco de Hierro de Braavos del país Utopía. Banco 2.
    • Crea la tarjeta con número 4539 1488 1343 6467, con fecha de vencimiento en junio de 2030, del Gringotts Wizarding Bank, con descripción Tarjeta inválida 1.
    • Crea la tarjeta con número 4539 1488 0343 6467, con fecha de vencimiento en marzo de 2023, del Banco de Hierro de Braavos, con descripción Tarjeta inválida 2.
    • Crea la tarjeta con número 5540 5000 0100 0004, con fecha de vencimiento en agosto de 2032, del Gringotts Wizarding Bank, con descripción Tarjeta válida 1.
    • Crea la tarjeta con número 5020 4700 0137 0055, con fecha de vencimiento en diciembre de 2031, del Banco de Hierro de Braavos, con descripción Tarjeta válida 2.
    • Crea un objeto de la clase Wallet.
    • Crea la categoría Personal en el objeto de la clase Wallet.
    • Añade la tarjeta con descripción Tarjeta válida 1 en el objeto de la clase Wallet dentro de la categoría Personal.
    • Añade la tarjeta con descripción Tarjeta válida 2 en el objeto de la clase Wallet dentro de la categoría Trabajo.
    • Muestra por pantalla las categorías del objeto de la clase Wallet.
    • Crea la tarjeta con número 4548 8120 4940 0004, con fecha de vencimiento en abril de 2033, del Banco de Hierro de Braavos, con descripción Tarjeta válida 3.
    • Añade la tarjeta con descripción Tarjeta válida 3 en el objeto de la clase Wallet dentro de la categoría Personal.
    • Intenta añadir la tarjeta con descripción Tarjeta inválida 1 en el objeto de la clase Wallet dentro de la categoría Personal.
    • Intenta añadir la tarjeta con descripción Tarjeta inválida 2 en el objeto de la clase Wallet dentro de la categoría Personal.
    • 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.