Skip to content

Retos

< volver a actividades

Empaquetar retos

Empaqueta las actividades, dentro de la carpeta ut02, en la carpeta retos.

Las actividades programadas en esta sección Retos no son obligatorias.

Reto 01

Crea la clase Peso, la cual tendrá las siguientes características:

  • Deberá tener un atributo donde se almacene el peso de un objeto en kilogramos.

  • En el constructor se le pasará el peso y la medida en la que se ha tomado ("Lb" para libras, "Li" para lingotes, "Oz" para onzas, "P" para peniques, "K" para kilos, "G" para gramos y "Q" para quintales).

  • Deberá de tener los siguientes métodos:
        - getLibras. Devuelve el peso en libras.
        - getLingotes. Devuelve el peso en lingotes.
        - getPeso. Devuelve el peso en la medida que se pase como parámetro ("Lb" para libras, "Li" para lingotes, "Oz" para onzas, "P" para peniques, "K" para kilos, "G" para gramos y "Q" para quintales).

  • Para la realización del ejercicio toma como referencia los siguientes datos:
        1 Libra = 16 onzas = 453 gramos.
        1 Lingote = 32,17 libras = 14,59 kg.
        1 Onza = 0,0625 libras = 28,35 gramos.
        1 Penique = 0,05 onzas = 1,55 gramos.
        1 Quintal = 100 libras = 43,3 kg.

  • Crea además una clase TestPeso para testear y verificar los métodos de esta clase.


Reto 02

Crea una clase ConversorMillas con un método millasAMetros() que toma como parámetro de entrada un valor en millas marinas y las convierte a metros. Una vez tengas este método escribe otro millasAKilometros() que realice la misma conversión, pero esta vez exprese el resultado en kilómetros. Nota: 1 milla marina equivale a 1852 metros.

Para la clase anterior implementa, además, los siguientes métodos, los cuales podrán modificar los valores de los atributos de la clase:

  • setKms
  • setLitros
  • setVmed
  • setPrecioGas

Reto 03

Restaurante03 : Un restaurante cuya especialidad son las patatas con carne nos pide diseñar un método con el que se pueda saber cuántos clientes pueden atender con la materia prima que tienen en el almacén. El método recibe la cantidad de patatas y carne en kilos y devuelve el número de clientes que puede atender el restaurante teniendo en cuenta que por cada tres personas, utilizan un dos kilos de patatas y un kilo de carne.


Reto 04

Modifica el programa anterior (Restaurante) creando una clase que permita almacenar los kilos de patatas y carne del restaurante. Implementa los siguientes métodos:

  • public void addCarne(int x). Añade x kilos de carne a los ya existentes.
  • public void addPatatas(int x). Añade x kilos de patatas a los ya existentes.
  • public int getComensales(). Devuelve el número de clientes que puede atender el restaurante (este es el método del ejercicio anterior).
  • public double getCarne(). Devuelve los kilos de carne que hay en el almacén.
  • public double getPatatas(). Devuelve los kilos de patatas que hay en el almacén.

Reto 05

Crear un clase llamada Proveedor con las siguientes propiedades:

  • cif
  • nombreEmpresa
  • descripcion
  • sector
  • direccion
  • telefono
  • poblacion
  • codPostal
  • correo

Crear para la clase Proveedor los métodos:

  • Constructor que permite crear una instancia con los datos de un proveedor.
  • Métodos get (getters).
  • Métodos set (setters).
  • Método verificaCorreo que devuelve true si la dirección de correo contiene @.
  • Método que muestre todos los datos del proveedor.

Crear en esta clase un método TestProveedor ejecutable que:

  • Cree una instancia del objeto Proveedor llamado proveedor.
  • Cambie el sector del proveedor.
  • Muestre el sector del proveedor.
  • Verifique si el correo es válido.
  • Muestre todos los datos del proveedor.

Reto 06

Crear una clase llamada Hospital con las siguientes propiedades y métodos:

Propiedades:

  • codHospital
  • nombreHospital
  • direccion
  • telefono
  • poblacion
  • codPostal
  • habitacionesTotales
  • habitacionesOcupadas

Métodos:

  • Hospital: permite crear una instancia con los datos de un hospital.
  • Métodos get.
  • Métodos set.
  • Método ingreso que incrementa las habitaciones ocupadas. No puede realizarse el ingreso si las habitaciones ocupadas son iguales a las habitaciones totales del hospital. Devuelve true si se ha podido realizar el ingreso.
  • Método alta que decrementa las habitaciones ocupadas. No puede realizarse el alta las habitaciones ocupadas son 0. Devuelve true si se ha podido realizar el alta.
  • Método que muestre todos los datos del hospital.

Crear una clase principal TestHospital ejecutable que:

  • Cree una instancia de la clase Hospital llamada hospitalRibera.
  • Cambie el número de habitaciones de la instancia hospitalRibera.
  • Realiza un ingreso de la instancia hospitalRibera.
  • Muestra las habitaciones ocupadas de la instancia hospitalRibera.
  • Realiza un alta de la instancia hospitalRibera.
  • Muestra las habitaciones ocupadas de la instancia hospitalRibera.
  • Muestre todos los datos de la instancia hospitalRibera.

Reto 07

Crear un clase llamada Medico con las siguientes propiedades y métodos:

Propiedades:

  • codMedico
  • nombre
  • apellidos
  • dni
  • direccion
  • telefono
  • poblacion
  • codPostal
  • fechaNacimiento
  • especialidad
  • sueldo

Métodos:

  • Medico: Permite crear una instancia con los datos de un médico.

  • Métodos get: Recuperan datos de la instancia del objeto.

  • Métodos set: Asignan datos a la instancia del objeto.

  • retencionMedico: Permite calcular la retención aplicada al sueldo del médico. Se le pasa el dato del porcentaje de retención.

  • mostrarDatos: Muestra los datos del médico.

Crear una clase principal TestMedico ejecutable que:

  • Crear dos instancias de la clase Medico llamados mDigestivo y mTraumatologo.
  • Cambia el sueldo del medicoTraumatologo.
  • Muestra el sueldo del medicoTraumatologo.
  • Cambia el dni del medicoDigestivo.
  • Muestra el dni del medicoDigestivo.
  • Calcula la retención de las dos instancias de la clase Medico que hemos creado.
  • Mostrar los datos de las dos instancias de la clase Medico que hemos creado, así como las retenciones y los sueldos finales de cada una.

Reto 08

LlenarConCirculo : Crear una pizarra cuadrada y dibujar en ella un círculo que la ocupe por completo.

Solución

Este reto utiliza la interfaz gráfica a la que dedicaremos más tiempo hacia finales de curso. De momento con entender algunos conceptos muy básicos de cómo dibujar elementos gráficos en una ventana podemos intentar resolverlos usando los conceptos de objetos, clases, herencia, métodos, etcétera que hemos visto en teoría.

//importaciones necesarias para los ejercicios, no necesitas más.
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;

/*
 * Necesitamos que nuestra clase LlenarConCirculo herede
 * de JPanel para poder pintar en su interior.
 */
public class LlenarConCirculo extends JPanel {

    @Override
    public void paint(Graphics g) {
        //Fijamos el color que tendrá la figura
        g.setColor(Color.RED);

        /*
         * Dibujamos un ovalo relleno fijando las 4 esquinas que lo delimitan:
         * - x1, y1, x2, y2
         * En nuestro caso además hacemos uso de la función reflexiva
         * this.getWidth() y this.getHeight() para conocer la anchura y altura
         * (respectivamente) de nuestra ventana.
         */        
        g.fillOval(0, 0, this.getWidth(), this.getHeight());

        /* 
         * Otras funciones disponibles para dibujar son:
         * - fill3DRect(int x, int y, int width, int height, boolean raised)
         * Paints a 3-D highlighted rectangle filled with the current color.
         * - fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
         * Fills a circular or elliptical arc covering the specified rectangle.
         * - fillOval(int x, int y, int width, int height)
         * Fills an oval bounded by the specified rectangle with the current color.
         * - fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
         * Fills a closed polygon defined by arrays of x and y coordinates.
         * - fillPolygon(Polygon p)
         * Fills the polygon defined by the specified Polygon object with the graphics 
         * context's current color.
         * - fillRect(int x, int y, int width, int height)
         * Fills the specified rectangle.
         * - fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
         * Fills the specified rounded corner rectangle with the current color.                
         * - fill3DRect(int x, int y, int width, int height, boolean raised)
         * Paints a 3-D highlighted rectangle filled with the current color.
         * - fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
         * Fills a circular or elliptical arc covering the specified rectangle.
         * - fillOval(int x, int y, int width, int height)
         * Fills an oval bounded by the specified rectangle with the current color.
         * - fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
         * Fills a closed polygon defined by arrays of x and y coordinates.
         * - fillPolygon(Polygon p)
         * Fills the polygon defined by the specified Polygon object with the graphics 
         * context's current color.
         * - fillRect(int x, int y, int width, int height)
         * Fills the specified rectangle.
         * - fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
         * Fills the specified rounded corner rectangle with the current color.           
        */
    }

    public static void main(String[] args) {
        //Creamos una nueva ventana
        JFrame MainFrame = new JFrame();

        //Fijamos su tamaño en 300px de ancho por 300px de alto
        MainFrame.setSize(300, 300);

        //Creamos el objeto que vamos a dibujar con el método paint()
        LlenarConCirculo circlePanel = new LlenarConCirculo();

        //Añadimos el objeto recien creado a la ventana
        MainFrame.add(circlePanel);

        //Hacemos visible la ventana (con el dibujo)
        MainFrame.setVisible(true);
    }
}

Este es el esquema básico que necesitas para resolver todos los ejercicios planteados:

//importaciones necesarias para los ejercicios, no necesitas más.
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;

/*
  Necesitamos que nuestra clase herede de JPanel para poder
  pintar en su interior.
*/
public class TuClaseEjercicio extends JPanel {

  @Override
  public void paint(Graphics g) {
    // INSERTA TU CÓDIGO AQUÍ!!! <<--
    //Fijamos el color que tendrá la figura
    //Dibuja la/s figura/s que te pide el ejercicio
  }

  public static void main(String[] args) {
    //Creamos una nueva ventana
    JFrame MainFrame = new JFrame();

    //Fijamos su tamaño en 300px de ancho por 300px de alto
    MainFrame.setSize(300, 300);

    //Creamos el objeto que vamos a dibujar con el método paint()
    LlenarConCirculo tuDibujo = new LlenarConCirculo();

    //Añadimos el objeto recien creado a la ventana
    MainFrame.add(tuDibujo);

    //Hacemos visible la ventana (con el dibujo)
    MainFrame.setVisible(true);
  }
}

< volver a actividades