Skip to main content

Section 8.6 Worked Example: Writing Classes - Getters and Setters

Subsection 8.6.1 Subgoals for Writing a Class 3/4

  1. Name it

  2. Differentiate class-level (static) vs. instance/object-level variables

  3. Differentiate class-level (static) vs. instance/object behaviors/methods

  4. Define class variables (static) as needed ‘

    1. Name

    2. Data Type

    3. public / private / final

  5. Define instance variables (that you want to be interrelated)

    1. Name

    2. Data Type

    3. private

  6. Create constructor (behavior) that creates initial state of object

    1. public

    2. Same name as class

    3. No return type

    4. Default - no parameters

    5. Logic - initialize all variables

    6. Repeat as needed, adding parameters

  7. Create 1 accessor and 1 mutator behaviors per attribute

  1. Accessors

    1. Name is get_<attr_name>

    2. Public

    3. Return type same data type as attribute

    4. No parameters

    5. Logic - return value

  2. Mutators

    1. Name is set_<attr_name>

    2. Public

    3. Return type is void

    4. Parameter is same data type as attribute

    5. Logic validates input parameter and sets attribute value

You can watch this video or read through the content below it.

Problem: We will be writing a class to represent an instance of time, like a specific time in the day.

Now write the appropriate accessors (getters) and mutators (setters).

Subsection 8.6.2 SG7: Create 1 accessor and 1 mutator behaviors per attribute

There are 3 instance attributes, so we will need 3 getters and 3 setters

7A. Accessors

  1. Name is get_<attr_name>

  2. Public

  3. Return type same data type as attribute

  4. No parameters

  5. Logic - return value

public int getHr() {
       return hour;
}

public int getMin() {
   return minute;
}

public int getSec() {
   return second;
}

7B. Mutators

  1. Name is set_<attr_name>

  2. Public

  3. Return type is void

  4. Parameter is same data type as attribute

  5. Logic validates input parameter and sets attribute value

public void setHr(int hr) {
   if (hr >=0 && hr <= 23)
      hour = hr;
}

public void setMin(int min) {
   if (min >= 0 && min <= 59)
      minute = min;
}

public void setSec(int sec) {
   if (sec >= 0 && sec <= 59)
      second = sec;
}

After writing getters and setters, this is a good time to review the structure of the class and refactor the overloaded constructor(s) to eliminate duplicate validation logic.

Figure 8.6.1.
public TimeType (int hr, int min, int sec) {
   setHr(hr);
   setMin(min);
   setSec(sec);
}

After working on the class definition, it is a good practice to test with a main driver program.

public static void main (String [] args) {
   TimeType now = new TimeType();
   now.setHr(14);
   now.setMin(30);
   now.setSec(45);
}

Subsection 8.6.3 Practice Pages

You have attempted of activities on this page.