Saltar a contenido

Setters y Getters

Cuando queremos exponer un atributo como si fuera público deberíamos hacerlo a través de métodos getter (lectura) y setter (escritura). Existe la convención de nombrar a estos métodos utilizando los prefijos get y set seguido del atributo. En general es una buena idea seguir cada una de las convenciones adoptadas por una comunidad, en este caso utilizar los getters y los setters para acceder a atributos privados.

public class Automovil {
    private String marca;
    public String getMarca(){
        return marca;
    }

    public void setMarca(String marca){
        this.marca = marca;
    }
}

Esta es la manera correcta de trabajar con objetos y sus parámetros si no conocemos los valores exactos necesarios a la hora de instanciar un objeto o bien para trabajar con ellos de una manera más óptima.

Pide el comodín de tu IDE

Los IDE tienen un generador de estos métodos, investiga la manera de hacerlo pues te ahorrará mucho tiempo.

Actividades

  • AC 611 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC1 / 3p).Crea una clase COrdenador con los siguientes atributos: marca (Mitac, Toshiba, Ast), procesador (Intel, AMD) y pantalla (TFT, DSTN, STN).

    Los atributos también pueden incluir información sobre el estado del objeto:

    • Estado del dispositivo: encendido, apagado (ordenadorEncendido)

    La clase tendrá una serie de métodos para realizar ciertas acciones:

    • Encender ordenador (encenderOrdenador() )
    • Apagar ordenador (apagarOrdenador() )
    • Ver estado (estado() )

    La clase va a emplear su constructor por defecto por lo que no hay que codificar ninguno. Tampoco es necesario utilizar métodos setters y getters puesto que no se accederá a los atributos desde otra clase.

    En el main realizar la simulación y comprobación que consideréis.

  • AC 612 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC1 / 3p). Supón que deseamos modificar el programa de la AC 611:

    • a. Primero debes utilizar otra clase distinta COrdenadorApp para el método main. Es decir, tendremos dos clases COrdenador y COrdenadorApp.
    • b. A continuación, cambia los especificadores de acceso de los atributos a privado y codifica los métodos getters y setters.
    • c. Codifica un constructor de la clase al cual se le pasará como parámetros los atributos de cada objeto de la clase COrdenador.
    • d. Finalmente realiza un cambio en la marca del objeto ord1 y vuelve a mostrar el estado.

    En el main realizar la simulación y comprobación que consideréis.

  • AC 613 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC1 / 3p). Codifica un programa siguiendo estas instrucciones:

    • Genera un nuevo proyecto llamado PeliculaApp. Este albergará la clase PeliculaApp que contendrá el método main.
    • Crea una segunda clase Pelicula dentro del mismo proyecto. Esta clase contendrá los siguientes atributos: Título, Director, Género y Duración.
    • Genera los métodos get y set necesarios para cada atributo.
    • Crea el método toTexto() para mostrar la información relativa a la película con el siguiente formato:

      • “La película titulada [Titulo] de género [Género] dirigida por [Director] tiene una duración de [Duración] minutos”.
    • Crea 2 objetos Película (los valores que se quieran) y muéstralos por pantalla.

    • Indica cuál de los 2 tiene mayor duración.

    En el main realizar la simulación y comprobación que consideréis.

  • AC 614 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC1 / 3p). Se quiere calcular el área de un terreno a partir de sus coordenadas. Para ello:

    • Crea una clase llamada Posicion con los atributos x, y (coordenadas) y una clase principal PosicionMain que contenga el método main.
    • Crea un método que calcule el área del terreno de la siguiente figura, teniendo en cuenta que: Área = a * b.

    En el main realizar la simulación y comprobación que consideréis.

  • AR 615 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC1 / 3p). Escribe una clase Fraccion para representar fracciones. La clase tendrá dos atributos de tipo entero: num (numerador) y den (denominador) solo accesibles desde su propia clase. La clase debe contener los constructores y métodos adecuados para que este método main de la clase AppMain funcione de forma correcta:

    • Se debe controlar que el denominador de una fracción no pueda valer cero. Si el valor del segundo parámetro es cero en el constructor, se asignará el valor 1 al denominador.
    • Para que una instrucción println como la siguiente: System.out.println(f1 + " + " + f2 + " = " + suma); muestre por pantalla: 1/4 + 1/2 = 3/4, la clase debe tener un método toTexto() que devuelva un String con el contenido de la fracción de la forma: numerador/denominador.

    En el main realizar la simulación y comprobación que consideréis.

  • PR 616 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC2 / 5p). Escribe una clase con el nombre Calculadora. La clase debe tener dos campos o atributos (variable miembro) con los nombres primerNumero y segundoNumero, ambos de tipo double. Codifica los siguientes métodos:

    1. Getters:

      • Método llamado getPrimerNumero sin ningún parámetro, debe devolver el valor del campo primerNumero.
      • Método llamado getSegundoNumero sin ningún parámetro, debe devolver el valor del campo segundoNumero.
    2. Setters:

      • Método llamado setPrimerNumero con un parámetro de tipo double, debe establecer el valor del campo primerNumero.
      • Método llamado setSegundoNumero con un parámetro de tipo double, debe establecer el valor del campo segundoNumero.
    3. Otros métodos:

      • Método llamado getResultadoSuma sin ningún parámetro, debe devolver el resultado de sumar los valores de campo de primerNumero y segundoNumero.
      • Método llamado getResultadoResta sin ningún parámetro, debe devolver el resultado de restar los valores de campo de segundoNumero del primerNumero.
      • Método llamado getMultiplicationResult sin ningún parámetro, debe devolver el resultado de multiplicar los valores de campo de primerNumero y segundoNumero.
      • Método llamado getDivisionResult sin ningún parámetro, debe devolver el resultado de dividir los valores de campo de primerNumero por segundoNumero. En caso de que el valor de segundoNumero sea 0, devuelve 0.

    Test, código para probar la clase Calculadora. Escribe este código en una clase Main, dentro del método main. Comprueba que realiza correctamente todas las operaciones.

    Ayuda

    En total debes tener 8 métodos en la clase Calculadora. Los métodos NO deben ser public static, solo public.

    Genera un método main donde pruebes todos los métodos. Recuerda que siempre que se puedan pedir datos por teclado, se han de pedir

  • PR 617 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC2 / 5p). Codifica una clase Persona. La clase debe tener tres campos con los nombres nombre, apellido de tipo String y edad de tipo entero. Escribe los siguientes métodos:

    1. Getters:

      • Método llamado getNombre sin ningún parámetro, debe devolver el valor del campo nombre.
      • Método llamado getApellido sin ningún parámetro, debe devolver el valor del campo apellido.
      • Método llamado getEdad sin ningún parámetro, debe devolver el valor del campo de edad.
    2. Setters:

      • Método llamado setNombre con un parámetro de tipo String, debe establecer el valor del campo nombre.
      • Método llamado setApellido con un parámetro de tipo String, debe establecer el valor del campo apellido.
      • Método llamado setEdad con un parámetro de tipo int, debe establecer el valor del campo de edad. Si el parámetro es menor que 0 o mayor que 100, establece el valor del campo de edad en 0.
    3. Otros métodos:

    • El método llamado esAdolescente sin ningún parámetro, debe devolver verdadero si el valor del campo de edad es mayor que 12 y menor que 20; de lo contrario, devuelve falso.
    • Método llamado getFullName sin ningún parámetro, debe devolver el nombre completo de la persona. En caso de que los campos nombre y apellido estén vacíos, las cadenas devuelven una cadena vacía. En caso de que apellido sea una cadena vacía, devuelva nombre. En caso de que nombre sea una cadena vacía, devuelve apellido.

    isEmpty

    Para verificar si un String está vacío, usa el método isEmpty de la clase String. Por ejemplo, nombre.isEmpty() devuelve verdadero si el String está vacío o en otras palabras, cuando el String no contiene ningún carácter.

    Recuerda que siempre que se puedan pedir datos por teclado, se han de pedir.

  • PR 618 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC2 / 5p). Codifica una clase con el nombre Muro. La clase necesita dos campos (variables de instancia) con nombre ancho y alto de tipo double. La clase debe tener dos constructores. El primer constructor (constructor por defecto sin parámetros). El segundo constructor tiene los parámetros de ancho y alto de tipo double y debe inicializar los campos. En caso de que el ancho sea menor que 0, debe establecer el valor del campo de ancho en 0, en caso de que el parámetro de altura sea menor que 0, debe establezca el valor del campo de altura en 0.

    Escribe los siguientes métodos (métodos de instancia):

    • Método llamado getAncho sin ningún parámetro, devuelve el valor del campo ancho.
    • Método llamado getAlto sin ningún parámetro, devuelve el valor del campo alto.
    • Método llamado setAncho con un parámetro de tipo double, establece el valor del campo ancho. Si el parámetro es menor que 0, establece el valor del campo ancho en 0.
    • Método llamado setAlto con un parámetro de tipo double, establece el valor del campo alto. Si el parámetro es menor que 0, establece el valor del campo alto en 0.
    • Método llamado getArea sin ningún parámetro, devuelve el área del muro.

    Genera un método main donde pruebes todos los métodos. Recuerda que siempre que se puedan pedir datos por teclado, se han de pedir.

  • PR 619 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC2 / 5p). La compañía Mundo Alfombra te ha pedido que escribas una aplicación que calcule el precio de las alfombras para habitaciones rectangulares. Para calcular el precio, se multiplica el área del piso (ancho por largo) por el precio por metro cuadrado de alfombra.

    Ejemplo

    El área de un piso que mide 12 metros de largo y 10 metros de ancho es 120 metros cuadrados, cubrir el piso con una alfombra que cuesta 8€ por metro cuadrado costaría 960€.

    Vamos a crear las siguientes clases con sus constructores y métodos:

    • Codifica una clase con el nombre Suelo. La clase necesita dos campos (variables de instancia) con nombre ancho y largo de tipo double. La clase debe tener un constructor con parámetros ancho y largo de tipo double y debe inicializar los campos. En caso de que el parámetro de ancho sea menor que 0, se establecerá el valor del campo ancho en 0, en caso de que el parámetro largo sea menor que 0, se establecerá el valor del campo largo en 0. Escribe los siguientes métodos (métodos de instancia):

      • Método llamado getArea sin ningún parámetro, devuelve el área calculada (ancho * largo).
      • Método llamado getArea con un parámetro, devuelve el área calculada (ancho * ancho). Es cuadrada.
    • Desarrolla una clase llamada Alfombra con un campo llamado coste de tipo double. Incluye el constructor de la clase con un parámetro para inicializar el campo coste. En caso de que el parámetro coste sea menor que 0, se establecerá el valor del campo coste en 0. Añade el siguiente método:

      • Método llamado getCoste sin ningún parámetro, devuelve el valor del campo coste.
    • Escribe una clase con el nombre Calculadora con dos campos (variables de instancia) suelo de tipo Suelo y alfombra de tipo Alfombra. Codifica el constructor parametrizado con los parámetros de suelo de tipo Suelo y alfombra de tipo Alfombra e inicializa los campos. Añade el siguiente método en la clase:

      • Método getCosteTotal sin ningún parámetro, devuelve el coste total calculado para cubrir el piso con una alfombra.

    Genera un método main donde pruebes todos los métodos. Recuerda que siempre que se puedan pedir datos por teclado, se han de pedir. Juega con el código y crea situaciones de prueba cuando tenemos ancho y largo con valores negativos. Y cuando nos dan un precio de coste negativo. Muestra las salidas por pantalla.

  • PR 620 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC2 / 5p). Crear una clase Figura.java. Escribe un método llamado area con un parámetro double llamado radio. El método debe devolver un valor double que represente el área de un círculo, calculada a partir del radio. Si el radio del parámetro es negativo, devuelve -1.0 para representar un valor no válido.

    Escribe otro método sobrecargado con 2 parámetros x e y (ambos double), donde x e y representan los lados de un rectángulo. El método debe devolver el área del rectángulo. Si uno o ambos parámetros es/son negativos, devuelve -1.0 para indicar un valor no válido.

    Salida

    INPUT / OUTPUT

    • area (5.0); devuelve 78.53975
    • area (-1); devuelve -1.0
    • area (5.0, 4.0); devuelve 20.0 (5 * 4 = 20)
    • area (-1.0, 4.0); devuelve -1.0

    Ayuda

    La fórmula para calcular el área de un rectángulo es x * y. La fórmula para calcular el área de un círculo es radio * radio * PI. Para PI, use una constante de la clase de matemáticas, por ejemplo, Math.PI;

    Genera un método main donde pruebes todos los métodos. Recuerda que siempre que se puedan pedir datos por teclado, se han de pedir.

  • AP 621 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC2 / 5p). En un restaurante se requiere de un sistema de clasificación de pedidos de comida en función de la dieta a la que pertenezcan. Para ello se deberán desarrollar las dos clases que se proponen a continuación:

    • PedidosComida: con atributos tipoDieta, tiempoCoccion y calorías y métodos caloriasHora, que recibe dos enteros (tiempo y calorías de la receta) y devuelve las calorías en una hora, rebajarCalorias, que recibe las calorías que se le rebajan a la receta, y aumentarCalorias, que recibe las calorías que se aumentan.
    • MainComida: tiene dos métodos, main y menu.

    El menú dará las siguientes opciones:

    • Solicitar número de pedidos a llenar.
    • Llenar todos los pedidos
    • Seleccionar el pedido que se quiere modificar.
    • Contar los pedidos de más de 500 calorías.
    • Borrar todos los pedidos.

    Cálculos

    En los cálculos, una comida, por ejemplo, tiene 100 calorías y se tarda en hacer 100 minutos, si aumento en 10 calorías aumentaré en 10 minutos. Por lo que pasará a tener 110 calorías y un tiempo de cocción de 110 minutos. Si tras esto, decido bajarle 20 calorías, que sería un 18% de las 110, el tiempo bajaría también un 18%, quedándose en 90,2 minutos de cocción.

  • AP 622 (RA4/ CE4a CE4b CE4d CE4e CE4f / IC2 / 5p). Escribe una clase con el nombre Calculadora. La clase debe tener dos Atributos con los nombres primerNumero y segundoNumero, ambos de tipo double y privados. Codifica los siguientes métodos:

    • Método llamado getResultadoSuma sin ningún parámetro, debe devolver el resultado de sumar los valores de campo de primerNumero y segundoNumero.
    • Método llamado getResultadoResta sin ningún parámetro, debe devolver el resultado de restar los valores de campo de segundoNumero del primerNumero.
    • Método llamado getMultiplicationResult sin ningún parámetro, debe devolver el resultado de multiplicar los valores de campo de primerNumero y segundoNumero.
    • Método llamado getDivisionResult sin ningún parámetro, debe devolver el resultado de dividir los valores de campo de primerNumero por segundoNumero. En caso de que el valor de segundoNumero sea 0, devuelve 0.

    Escribe este código en una clase MainCalculadora en la que tengas al menos dos métodos: el propio main y dos métodos menú. El menú principal:

    • Indique cuantas calculadoras vas a crear
    • Seleccionas y rellenes una calculadora en concreto.
    • Operar con una calculadora en concreto. Se lanzará el segundo menú que permitirá escoger las operaciones a realizar. Si el objeto no está inicializado por el usuario, se deberá inicializar.
    • Salir del programa