Articles

¿Qué es un método mutador en Java?

Aprenda qué es un método de mutador en java y los beneficios de usar métodos de mutadores y accesores. Todas las explicaciones incluyen ejemplos para ilustrar.

imagen de la Tarjeta cap

En este artículo, usted aprenderá lo que es un método mutador en java y método de descriptor de acceso. Además, comprenderá los beneficios de usar métodos de mutador y accessor y verá algunos ejemplos de Java.

Los conceptos del método de mutador y de accessor están estrechamente relacionados con la programación orientada a objetos y la encapsulación. En caso de que no esté familiarizado con la programación orientada a objetos. He incluido una breve introducción a continuación; sin embargo, si desea más detalles, consulte la documentación.

Tabla de contenidos

Recapitulación de programación orientada a objetos

La programación orientada a objetos significa que se resuelven problemas que representan las entidades del problema como clases. Una clase tiene un estado y métodos donde el estado es un conjunto de variables que contienen los datos relevantes en nuestra representación. Y los métodos determinan las operaciones que nuestra clase puede realizar.

Por ejemplo, podemos definir la clase Circle:

public class Circle {private float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } }

Esta clase representa el círculo concepto. El estado de clase del círculo tiene el radio y un método llamado area(), que devuelve el área del círculo.

Usted puede añadir el siguiente código a la etiqueta Circle clase para ponerlo a prueba:

public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.area()); }

Salida:

28.274333882308138

Resumen de Encapsulación

Hemos definido una clase utilizando programación orientada a objetos y creado el objeto circle1de la clase Circle. Y si quisiera modificar el radio del objeto circle1. Tal como está el código, no puedo cambiarlo ya que no hay un método para acceder a la variable radius. Todo lo que puedo hacer es crear un nuevo objeto Circular con un radio diferente. ¿Qué puedo hacer para corregir esto?

Puedes hacer dos cosas; uno llevará a una clase bien diseñada, y el otro a un diseño deficiente y difícil de mantener. Una opción es declarar el campo radius como un campo público, por lo que es accesible fuera de la clase. Vea los cambios a continuación:

public class Circle {public float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.radius); circle1.radius = 5; System.out.println(circle1.radius); } }

Salida:

3.05.0

La otra opción es crear métodos para acceder y modificar el campo radius, que le permite ocultar los detalles de la implementación. Este mecanismo también se conoce como encapsulación.

Definición de método Mutador en Java

El método mutador en java, y cualquier lenguaje de programación orientado a objetos, es un método que le permite cambiar las variables dentro de la clase. Privado es el nivel de acceso para las variables, lo que significa que la única forma de cambiar las variables es mediante el uso de los métodos mutadores. De esta manera, los métodos mutadores pueden controlar la validez y la calidad de los datos guardados en la clase.

Por ejemplo, en el fragmento de código anterior, el método setRadius() es un método mutador. Puede modificar este método para agregar algo de validación de datos. Por ejemplo, un ejemplo de validación de datos podría ser comprobar si el nuevo radio es un número negativo.

Definición de método de acceso en Java

Los métodos de acceso son métodos que permiten leer los campos de clase a otros métodos o clases fuera de la clase. De esta manera, puede controlar cómo el código de cliente puede acceder a los campos de clase.

Ejemplos de mutadores y accesores

Veamos algunos ejemplos para ilustrar los métodos de mutador y accesor. Setters y getters es otra forma de referirse a los métodos de acceso y mutador.

A continuación hay un ejemplo de cómo agregar getters a una clase. La clase se llama Product, y tiene dos captadores: getPrice() y getName(). Estos métodos permiten que cualquier código de cliente acceda a la variable de clase, que es price y name.

import java.math.BigDecimal;public class Product { private BigDecimal price; private String name;// getter or accessor methods public BigDecimal getPrice() { return price; } public String getName() { return name; }}

Y ahora, voy a añadir la modificadores, así que pueden acceder y modificar la variable de clase.

import java.math.BigDecimal;public class Product { private BigDecimal price; private String name; public BigDecimal getPrice() { return price; } public String getName() { return name; } // mutator or setter methods public void setPrice(BigDecimal price) { if(price.compareTo(BigDecimal.ZERO)<0 )throw new IllegalArgumentException("Empty product name"); this.price = price; } public void setName(String name) { if(name.isEmpty()) throw new IllegalArgumentException("Empty product name"); this.name = name; }}

Como puede ver anteriormente, los métodos de configuración setPrice()y setName() también incluyen validación, asegurándose de que los datos pasados cumplan con algunos criterios. Por ejemplo, uno de los requisitos es que un precio siempre debe estar por encima de cero. En caso de que el parámetro no sea válido, el código lanzará una excepción. De lo contrario, asignará el nuevo valor.

Convenciones de nomenclatura para Mutadores

En Java, los nombres de estos métodos, accesores y mutadores deben seguir convenciones de nomenclatura específicas. Estas reglas están totalmente estabilizadas, lo que hace que sea esencial seguirlas. No seguir estas convenciones puede crear frustración y confusión cuando otras personas están leyendo tu código.

Comencemos con las convenciones de nombres para los mutadores. El método debe declararse como público y nulo de retorno. Además, el nombre del método debe comenzar con la palabra set en minúsculas. Seguido del nombre de la variable de clase con una letra mayúscula inicial. Por ejemplo, si nuestra clase tiene una variable llamada age, entonces el método mutador debería verse de la siguiente manera:

public void setAge(int age){...}

Convenciones de nomenclatura para los accesores

Junto con los mutadores, hemos visto los accesores, que también siguen una convención de nomenclatura similar. Las reglas son que el método debe declararse como público. Además, el nombre del método debe comenzar por get, seguido del nombre de la variable de clase con una letra mayúscula inicial. El método no tiene parámetros y devuelve el tipo de variable de instancia. Siguiendo el ejemplo anterior, vamos a crear un método de acceso para la variable age :

public int getAge(){...}

Beneficios de los Mutadores y Accesores

Hasta ahora, hemos visto los métodos de acceso y mutador en java con algunos ejemplos. Y familiarícese con las convenciones de nomenclatura que debe seguir al declarar estos métodos. Sin embargo, ¿cómo son útiles estos métodos? El principal beneficio es la encapsulación. Esto básicamente significa que al crear estos métodos, está ocultando los detalles internos de su clase de otros componentes. Otros componentes solo pueden comunicarse a través de la API.

En consecuencia, las clases están disociadas; no dependen de cada uno, lo que le permite desarrollar de forma aislada, lo que conduce a desarrollos más rápidos, ya que los miembros del equipo pueden crear diferentes clases y componentes en paralelo. Además de facilitar el mantenimiento, ya que los componentes se pueden modificar, con un pequeño impacto en otros componentes dependientes.

Conclusión

Para resumir, en este artículo hemos visto que los métodos mutadores y los métodos de acceso en java son métodos que nos permiten leer y escribir variables de clase. Su propósito principal es ayudarnos a diseñar clases que estén bien encapsuladas y desacopladas entre sí.

Espero que el artículo les resulte útil, y muchas gracias por leer y apoyar este blog! ¡Feliz programación!