an object life cycle
define -> create -> use -> destroy -> redefined
// Fig. 8.1: Time1.java
// Time1 class declaration maintains the time in 24-hour format.
import java.text.DecimalFormat;
public class Time1 extends Object {
private int hour; // 0 - 23
private int minute; // 0 - 59
private int second; // 0 - 59
// Time1 constructor initializes each instance variable to zero;
// ensures that each Time1 object starts in a consistent state
public Time1()
{
setTime( 0, 0, 0 );
}
// set a new time value using universal time; perform
// validity checks on the data; set invalid values to zero
public void setTime( int h, int m, int s )
{
hour = ( ( h >= 0 && h < 24 ) ? h : 0 );
minute = ( ( m >= 0 && m < 60 ) ? m : 0 );
second = ( ( s >= 0 && s < 60 ) ? s : 0 );
}
// convert to String in universal-time format
public String toUniversalString()
{
DecimalFormat twoDigits = new DecimalFormat( "00" );
return twoDigits.format( hour ) + ":" +
twoDigits.format( minute ) + ":" + twoDigits.format( second );
}
// convert to String in standard-time format
public String toStandardString()
{
DecimalFormat twoDigits = new DecimalFormat( "00" );
return ( (hour == 12 || hour == 0) ? 12 : hour % 12 ) + ":" +
twoDigits.format( minute ) + ":" + twoDigits.format( second ) +
( hour < 12 ? " AM" : " PM" );
}
} // end class Time1
// Fig. 8.2: TimeTest1.java
// Class TimeTest1 to exercise class Time1.
import javax.swing.JOptionPane;
public class TimeTest1 {
public static void main( String args[] )
{
Time1 time = new Time1(); // calls Time1 constructor
// append String version of time to String output
String output = "The initial universal time is: " +
time.toUniversalString() + "\nThe initial standard time is: " +
time.toStandardString();
// change time and append updated time to output
time.setTime( 13, 27, 6 );
output += "\n\nUniversal time after setTime is: " +
time.toUniversalString() +
"\nStandard time after setTime is: " + time.toStandardString();
// set time with invalid values; append updated time to output
time.setTime( 99, 99, 99 );
output += "\n\nAfter attempting invalid settings: " +
"\nUniversal time: " + time.toUniversalString() +
"\nStandard time: " + time.toStandardString();
JOptionPane.showMessageDialog( null, output,
"Testing Class Time1", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class TimeTest1
// Fig. 8.3: TimeTest2.java
// Errors resulting from attempts to access private members of Time1.
public class TimeTest2 {
public static void main( String args[] )
{
Time1 time = new Time1();
time.hour = 7; // error: hour is a private instance variable
time.minute = 15; // error: minute is a private instance variable
time.second = 30; // error: second is a private instance variable
}
} // end class TimeTest2