Tuesday, December 31, 2019

Using Accessors and Mutators in Java

One of the ways we can enforce data encapsulation is through the use of accessors and mutators. The role of accessors and mutators are to return and set the values of an objects state. Lets learn how to program accessors and mutators in Java. As an example, well use a Person class with the state and constructor already defined: Accessor Methods An accessor method is used to return the value of a private field. It follows a naming scheme prefixing the word get to the start of the method name. For example lets add accessor methods for firstname, middleNames and lastname: These methods always return the same data type as their corresponding private field (e.g., String) and then simply return the value of that private field. We can now access their values through the methods of a Person object: Mutator Methods A mutator method is used to set a value of a private field. It follows a naming scheme prefixing the word set to the start of the method name. For example, lets add mutator fields for address and username: These methods do not have a return type and accept a parameter that is the same data type as their corresponding private field. The parameter is then used to set the value of that private field. Its now possible to modify the values for the address and username inside the Person object: Why Use Accessors and Mutators? Its easy to come to the conclusion that we could just change the private fields of the class definition to be public and achieve the same results. Its important to remember that we want to hide the data of the object as much as possible. The extra buffer provided by these methods allows us to: Change how the data is handled behind the scenes.Impose validation on the values that the fields are being set to. Lets say we decide to modify how we store middle names. Instead of just one String we can now use an array of Strings: The implementation inside the object has changed but the outside world is not affected. The way the methods are called remains exactly the same: Or, lets say the application that is using the Person object can only accept usernames that have a maximum of ten characters. We can add validation in the setUsername mutator to make sure the username conforms to this requirement: Now if the username passed to the setUsername mutator is longer than ten characters it is automatically truncated.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.