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étodomain
. Es decir, tendremos dos clasesCOrdenador
yCOrdenadorApp
. - b. A continuación, cambia los especificadores de acceso de los atributos a privado y codifica los métodos
getters
ysetters
. - 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. - a. Primero debes utilizar otra clase distinta
-
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 clasePeliculaApp
que contendrá el métodomain
. - 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
yset
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.
- Genera un nuevo proyecto llamado
-
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 principalPosicionMain
que contenga el métodomain
. - 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.
- Crea una clase llamada
-
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) yden
(denominador) solo accesibles desde su propia clase. La clase debe contener los constructores y métodos adecuados para que este métodomain
de la claseAppMain
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étodotoTexto()
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 nombresprimerNumero
ysegundoNumero
, ambos de tipodouble
. Codifica los siguientes métodos:-
Getters:
- Método llamado
getPrimerNumero
sin ningún parámetro, debe devolver el valor del campoprimerNumero
. - Método llamado
getSegundoNumero
sin ningún parámetro, debe devolver el valor del camposegundoNumero
.
- Método llamado
-
Setters:
- Método llamado
setPrimerNumero
con un parámetro de tipodouble
, debe establecer el valor del campoprimerNumero
. - Método llamado
setSegundoNumero
con un parámetro de tipodouble
, debe establecer el valor del camposegundoNumero
.
- Método llamado
-
Otros métodos:
- Método llamado
getResultadoSuma
sin ningún parámetro, debe devolver el resultado de sumar los valores de campo deprimerNumero
ysegundoNumero
. - Método llamado
getResultadoResta
sin ningún parámetro, debe devolver el resultado de restar los valores de campo desegundoNumero
delprimerNumero
. - Método llamado
getMultiplicationResult
sin ningún parámetro, debe devolver el resultado de multiplicar los valores de campo deprimerNumero
ysegundoNumero
. - Método llamado
getDivisionResult
sin ningún parámetro, debe devolver el resultado de dividir los valores de campo deprimerNumero
porsegundoNumero
. En caso de que el valor desegundoNumero
sea 0, devuelve 0.
- Método llamado
Test, código para probar la clase
Calculadora
. Escribe este código en una claseMain
, dentro del métodomain
. 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:-
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.
- Método llamado
-
Setters:
- Método llamado
setNombre
con un parámetro de tipoString
, debe establecer el valor del campo nombre. - Método llamado
setApellido
con un parámetro de tipoString
, debe establecer el valor del campo apellido. - Método llamado
setEdad
con un parámetro de tipoint
, 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.
- Método llamado
-
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 claseString
. 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 tipodouble
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 tipodouble
, 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 tipodouble
, 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. - Método llamado
-
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 tipodouble
. 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.
- Método llamado
-
Desarrolla una clase llamada
Alfombra
con un campo llamado coste de tipodouble
. 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.
- Método llamado
-
Escribe una clase con el nombre
Calculadora
con dos campos (variables de instancia) suelo de tipoSuelo
y alfombra de tipoAlfombra
. Codifica el constructor parametrizado con los parámetros de suelo de tipoSuelo
y alfombra de tipoAlfombra
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.
- Método
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ámetrodouble
llamado radio. El método debe devolver un valordouble
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étodoscaloriasHora
, 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, yaumentarCalorias
, 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
ysegundoNumero
, 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 deprimerNumero
ysegundoNumero
. - Método llamado
getResultadoResta
sin ningún parámetro, debe devolver el resultado de restar los valores de campo desegundoNumero
delprimerNumero
. - Método llamado
getMultiplicationResult
sin ningún parámetro, debe devolver el resultado de multiplicar los valores de campo deprimerNumero
ysegundoNumero
. - Método llamado
getDivisionResult
sin ningún parámetro, debe devolver el resultado de dividir los valores de campo deprimerNumero
porsegundoNumero
. En caso de que el valor desegundoNumero
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
- Método llamado