Skip to main content

Section 9.3 Worked Example: Writing Classes - Constructors

Subgoals for Writing a Class.

  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 instance variables (that you want to be interrelated)
    1. Name
    2. Data Type
    3. private
  5. Define class variables static as needed
    1. Name
    2. Data Type
    3. public / private / final
  6. Create constructor (behavior) that creates initial state of object
    1. Overloaded constructor (with as many parameters)
    2. public
    3. Same name as class
    4. No return type
    5. Default - no parameters
    6. Logic - initialize all variables
    7. 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
  8. Write toString method
    1. public
    2. Returns String
    3. No parameters
    4. Logic - convert needed attributes to a format that can be printed
  9. Write equals method
    1. public
    2. Returns boolean
    3. Parameter - instance of the class
    4. Logic - compare attributes for equity
  10. Create additional methods as needed

Subsection 9.3.1

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.
The attributes have been declared, now write a default and overloaded constructor.

Subsection 9.3.2 SG6: Create constructor (behavior) that creates initial state of object

6A, 6B, & 6C: All constructors are public, with no return type, and named the same as the class.
6D: We will start with the default constructor, which has no parameters.
All together, the default constructor has a header/signature of:
public TimeType() {

}
6E. Logic - initialize all variables
public TimeType () {
   hour = 0;
   minute = 0;
   second = 0;
}
6F. Repeat as needed, adding parameters
public TimeType (int hr, int min, int sec) {

   if (hr >=0 && hr <= 23)
      hour = hr;
   if (min >= 0 && min <= 59)
      minute = min;
   if (sec >= 0 && sec <= 59)
      second = sec;
}

Subsection 9.3.3

We are now able to construct TimeType objects from the main method in two ways
public static void main (String [] args) {
   TimeType midnight = new TimeType(); //call the default constructor
   TimeType noon = new TimeType(12, 0, 0); //call an overloaded constructor
}
Update the UML Diagram
Figure 9.3.1.

Practice Pages.

You have attempted of activities on this page.