8.1. Worked Example: Writing Classes - Attributes¶
Subgoals for Writing a Class 1/4
Name it
Differentiate class-level (static) vs. instance/object-level variables
Differentiate class-level (static) vs. instance/object behaviors/methods
Define class variables (static) as needed ‘
Name
Data Type
public / private / final
Define instance variables (that you want to be interrelated)
Name
Data Type
private
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.
For the first part, determine the appropriate attributes (data) to be stored and declare them
SG1: Name it
We will call the class TimeType
SG2: Differentiate class-level (static) vs. instance/object-level variables
class-level (static) data: one value shared between ALL instances instance-level data: each instance has its own copy
For time, we want all time instances to be in the same format so static data for format, everything else instance
SG3: Differentiate class-level (static) vs. instance/object behaviors/methods
All methods will be instance level as the format will be fixed an unchangeable
SG4: Define class variables (static) as needed
public class TimeType {
public static final boolean FORMAT24 = true;
}
Note the use of the final
keyword to define FORMAT24
as a constant, which makes it safe to expose as public
. An alternate implementation might choose to make this value mutable, but private, using static methods to ssssssssaccess and alter it.
SG5: Define instance variables (that you want to be interrelated)
public class TimeType {
//static var
public static final boolean FORMAT24 = true;
//instance vars
private int hour;
private int minute;
private int second;
}
Practice Pages