Java Reference
In-Depth Information
EXAMPLE:
Yet Another Date Class
Display 4.9 contains another, much improved, definition of a class for a date. Note that
all instance variables are private and that two methods are private. We made the meth-
ods
dateOK
and
monthString
private because they are just helping methods used in the
definitions of other methods. A user of the class
DateFifthTry
would not (in fact, can-
not) use either of the methods
dateOK
or
monthString
. This is all hidden information
that need not concern a programmer using the class. The method
monthString
was
public in previous versions of our date classes because we had not yet discussed the
pri-
vate
modifier. It is now marked
private
because it is just a helping method.
Note that the class
DateFifthTry
uses the method
dateOK
to make sure that any
changes to instance variables make sense. Because the methods of the class
DateFifth-
Try
use the method
dateOK
to check for impossible dates, you cannot use any methods,
such as
readInput
or
setDate
, to set the instance variables so that they represent an
impossible date like January 63, 2005. If you try to do so, your program would end
with an error message. (To make our definition of the method
dateOK
simple, we did
not check for certain impossible dates, such as February 31, but it would be easy to
exclude these dates as well.)
The methods
dateOK
and
equals
each return a value of type
boolean
. That means
they return a value that is either
true
or
false
and so can be used as the Boolean expres-
sion in an
if-else
statement,
while
statement, or other loop statement. This is illus-
trated by the following, which is taken from the definition of the method
setDate
in
Display 4.9:
if
(dateOK(month, day, year))
{
this
.month = monthString(month);
this
.day = day;
this
.year = year;
}
else
{
System.out.println("Fatal Error");
System.exit(0);
}
Note that, although all the instance variables are private, a programmer using the class can
still change or access the value of an instance variable using the methods that start with
set
or
get
. This is discussed more fully in the next subsection, “Accessor and Mutator Methods.”
(continued)