Método de mutador en Java

Método de mutador en Java
En el diccionario inglés, mutar significa tener una nueva forma. Y así, un mutador, aunque no se encuentra en el diccionario inglés, significa algo que causa un cambio en una nueva forma. Una variable privada es un campo o propiedad de una clase en Java. No hay un método predefinido llamado mutador en java. En cambio, un mutador es un método en una clase, y este método está destinado a cambiar el valor de una variable privada de la clase. Por convención, el programador debe comenzar el nombre del método con "set". Entonces, el método puede ser algo así como Setage (), setPrice (), setName (), etc.

Diferencia entre la variable privada y pública

Los miembros (propiedades y métodos) pueden ver una variable privada dentro de la definición de clase. No se puede ver por código fuera de la definición de clase. Por otro lado, se puede ver una variable pública por código fuera de la definición de clase. El código fuera de la clase puede cambiar la variable pública de una clase asignando un nuevo valor utilizando el nombre de la clase si el método es estático o usando el nombre del objeto si el método no es estático. Con una variable pública, el sentido de mutación no está realmente allí. Pero cuando una clase cambia su propio valor, que no se puede cambiar desde el exterior, eso se llama transformación, que tiene un mejor sentido de mutación.

Ilustración de mutador

No todas las clases necesitan un mutador. Sin embargo, cuando se necesita un mutador para una variable privada (propiedad), el método mutador que es un miembro de la clase, debe comenzar con "set". El programador luego define el método mutador.

Cualquier objeto en una tienda puede definirse mediante una clase. Una buena taza en una tienda, por ejemplo, puede ser definida por una clase. Como mínimo, la clase tendría una propiedad que es el precio de la copa, un método mutador y un método de accesor. El método del accesor es un método para leer el valor de la propiedad. Por convención, el método de accesorios debe comenzar con "obtener". En este caso, sería GetPrice (). Deje que la propiedad con el precio del nombre sea privado. Si el precio es público, entonces no habrá necesidad de mutador y accesor, ya que el valor podría establecerse o obtener (leer) públicamente.

La siguiente definición de clase es para una copa (se agrega una propiedad adicional (campo) para moneda):

Copa de clase
Precio doble privado = 2.0;
moneda de carácter privado = '$';
public void setPrice (doble dbl)
precio = dbl;

público doble getPrice ()
precio de devolución;

El Mutator SetPrice () es público para que se pueda acceder por código fuera de la clase. Hacer público el mutador no significa hacer pública la propiedad correspondiente. La propiedad correspondiente debe ser privada. El mutador aquí tiene el argumento dbl, que es el nuevo precio. A medida que cambian las condiciones del mercado, el precio en la tienda también cambia. Si el precio fuera público, no habría necesidad de que el mutador setPrice (), ya que sería posible que el código fuera de la clase cambie el precio. Dado que SetPrice es miembro de la clase, puede ver el valor del precio de la propiedad privada. Sin embargo, el código fuera de la clase no puede ver la propiedad. Esto es por diseño.

El accesorador getPrice () es público para que se pueda acceder por código fuera de la clase. No tiene argumento. Si el precio fuera público, no habría necesidad de que el accesor GetPrice () sea posible para que el código fuera de la clase lea el precio. Dado que GetPrice es miembro de la clase, puede ver el valor del precio de la propiedad privada. Sin embargo, el código fuera de la clase no puede ver la propiedad. Esto es por diseño.

Un mutador setcurrency () y un accesor getCurrency () se pueden escribir de manera similar para la moneda variable privada.

La siguiente clase principal y el método principal acceden al precio de la variable privada, muta la variable y luego accede a la variable nuevamente; Todo esto después de instanciar la clase:

clase pública THECLASS
public static void main (string [] args)
Taza de taza1 = nueva taza ();
Double FirstPrice = CUP1.GetPrice ();
Sistema.afuera.imprimir (FirstPrice); Sistema.afuera.imprimir(", ");
taza1.SetPrice (3.0);
Doble SecondPrice = CUP1.GetPrice ();
Sistema.afuera.imprimir (SecondPrice);
Sistema.afuera.println ();

La salida es:

2.0, 3.0

El primer segmento de código en el método principal instancia el objeto CUP (CUP1) y accede al precio de la propiedad privada a través del accesor GetPrice () y CUP1. Luego imprime este primer precio con una coma y espacio.

El segundo segmento de código es un segmento de código de línea. Mutita el precio de la propiedad privada a través del Mutator SetPrice () y Cup1. El tercer segmento de código lee e imprime el nuevo precio.

Validación

Se supone que el usuario del programa establece el nuevo precio como un doble. Pero, ¿qué pasa si ingresa algún otro tipo de datos?? El nuevo precio debe validarse si es realmente un doble. El código de línea para este caso debe aparecer así:

booleano bl = dbl instancia de doble;

El operador, instancia de devuelve verdadero, si su operando izquierdo es una instancia del operando derecho; falso de lo contrario.

Con la validación, la definición del método de mutador debe ser:

public void setPrice (doble dbl)
if (instancia dbl de doble)
precio = dbl;
demás
Sistema.afuera.println ("No se pudo establecer un nuevo precio!");

Es decir, si la entrada DBL es de tipo doble, entonces el precio se cambia. Si no es así, se emite un mensaje de error y el programa continúa. Tenga en cuenta que 'D' para el doble en este segmento de código es 'D' y no 'D'.

Un código similar para verificar si la moneda es un personaje se puede escribir de la siguiente manera:

public void setCurrency (personaje ch)
if (ch instancia de carácter)
moneda = '€';
demás
Sistema.afuera.println ("La nueva moneda no es un personaje!");

Es decir, si la entrada CH es de tipo de carácter, entonces la moneda cambia de $ a '€'. Si no es así, se emite un mensaje de error y el programa continúa. Tenga en cuenta que 'C' para el carácter en este segmento de código es 'C' y no 'C'.

Conclusión

No hay un método predefinido como mutador en Java. Un mutador está codificado por el programador. Un mutador es solo un método codificado (público) que cambia el valor privado de un campo (propiedad) de una clase. Por otro lado, un accesor es solo un método codificado (público) que lee el valor privado de un campo (propiedad) de una clase.

Gracias por leer nuestro artículo. Deje un comentario sobre sus pensamientos y lea otros artículos sobre Linuxhint.com que mejor se ajusta a las ideas que estás buscando.