Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Accessor and Mutator Methods

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Accessor and Mutator Methods

(Aka: “Get” and “Set” Methods)

What you should learn:


• Definition of accessor and mutator methods
• How to differentiate between an accessor and mutator method
• What is the state of an object and how is it determined
• Standard naming convention of method names
• Note: the Rectangle class is NOT testable on the AP exam and
you are NOT required to memorize its functionality. We will
use it for demonstration purposes and basic assessments in
class

I. Background
• Recall that there are two kinds of methods in the world - those
that return a value and those that do not - and that this
determines the way in which we call the method (see “Objects,
Classes, and Methods”)

• Recall also that the OOP principle of encapsulation prevents us


from accessing an object’s instance variables directly. Instead,
we do so indirectly via the methods of the class

II. Accessor Methods


• An accessor method is a special kind of method that returns a
value - it returns the value of an instance variable of the object
for which it is called

• Accessor methods are commonly called “get” methods because they


allow us to access or “get” the value of an instance variable

III. Mutator Methods


• Unlike accessor methods, which simply return the value of an
instance variable, mutator methods allow us to change the value(s)
of one or more of the instance variables of the object

• Since mutator methods modify or change values, they are commonly


called “set” methods

• Mutator methods change the state of the object. (The state of the
object is determined by the values of the instance fields)

• Mutator methods generally do not return a value

IV. Examples from Java’s Rectangle Class


• Java’s Rectangle class has 4 instance variables - x, y, width, and
height. The point (x,y) is the location of the upper-left corner
of a Rectangle object, and it’s dimensions are stored in width and
height. These are all type double

• Since every object created has its own copy of each of the
instance variables of the class, every Rectangle object “knows”
its own x, y, width, and height

• The Rectangle class provides 4 accessor methods named getX(),


getY(), getWidth(), and getHeight(), respectively, which return
the values of these instance variables

 It’s traditional to begin the names of accessor methods with


the descriptive word get

• Assume that a Rectangle object called box has been created like
this:
Rectangle box = new Rectangle(5,10,20,30) ;
and that these variables have been declared:
double xValue ;
double yValue ;
double area ;
Then, when these statements are executed:
xValue = box.getX() ;
yValue = box.getY() ;
System.out.println( "The upper-left corner of the box is at ("
+ xValue + "," + yValue + ")” ) ;
System.out.println( "The box has an area of " +
box.getWidth() * box.getHeight() ) ;
the output will be:
The upper-left corner of the box is at (5,10)
The box has an area of 600

The above code shows again how to call methods that return a
value. Use the method call – object-name.method-name(args) –
in a Java statement. As shown, getX() and getY() are called
in assignment statements, and getWidth() and getHeight() are
called in a println statement

• The Rectangle class also provides several mutator methods,


including one called translate()
The translate() method has 2 parameters. The first one moves the
Rectangle object some number of units in the x direction
(horizontally, left or right), and the second moves it some number
of units in the y direction (vertically, up or down)

• Suppose that the following code has been executed:


Rectangle anotherBox = new Rectangle(20,30,30,20) ;
anotherBox.translate(5,-10) ;
What is the new location of the upper-left-corner of Rectangle
object anotherBox?

Note again how to call methods that do not return a value.


The method call – object-name.method-name(args) – is a valid
Java statement all by itself, as shown in the call to
translate(), above.

 See “FunWithRectangles.java” for more examples

You might also like