- different ways to create time ojects
- methods with the same name but different parameter list
Time2 t1 = new Time2(); // 00:00:00
Time2 t2 = new Time2( 2 ); // 02:00:00
Time2 t3 = new Time2( 21, 34 ); // 21:34:00
Time2 t4 = new Time2( 12, 25, 42 ); // 12:25:42
Time2 t5 = new Time2( 27, 74, 99 ); // 00:00:00
Time2 t6 = new Time2( t4 ); // 12:25:42
- Time2 class
// Fig. 8.5: Time2.java
// Time2 class declaration with overloaded constructors.
import java.text.DecimalFormat;
public class Time2 {
private int hour; // 0 - 23
private int minute; // 0 - 59
private int second; // 0 - 59
// Time2 constructor initializes each instance variable to zero;
// ensures that Time object starts in a consistent state
public Time2()
{
this( 0, 0, 0 ); // invoke Time2 constructor with three arguments
}
// Time2 constructor: hour supplied, minute and second defaulted to 0
public Time2( int h )
{
this( h, 0, 0 ); // invoke Time2 constructor with three arguments
}
// Time2 constructor: hour and minute supplied, second defaulted to 0
public Time2( int h, int m )
{
this( h, m, 0 ); // invoke Time2 constructor with three arguments
}
// Time2 constructor: hour, minute and second supplied
public Time2( int h, int m, int s )
{
setTime( h, m, s ); // invoke setTime to validate time
}
// Time2 constructor: another Time2 object supplied
public Time2( Time2 time )
{
// invoke Time2 constructor with three arguments
this( time.hour, time.minute, time.second );
}
// set a new time value using universal time; perform
// validity checks on 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 Time2
- Time2 Tester
// Fig. 8.6: TimeTest3.java
// Overloaded constructors used to initialize Time2 objects.
import javax.swing.*;
public class TimeTest3 {
public static void main( String args[] )
{
Time2 t1 = new Time2(); // 00:00:00
Time2 t2 = new Time2( 2 ); // 02:00:00
Time2 t3 = new Time2( 21, 34 ); // 21:34:00
Time2 t4 = new Time2( 12, 25, 42 ); // 12:25:42
Time2 t5 = new Time2( 27, 74, 99 ); // 00:00:00
Time2 t6 = new Time2( t4 ); // 12:25:42
String output = "Constructed with: " +
"\nt1: all arguments defaulted" +
"\n " + t1.toUniversalString() +
"\n " + t1.toStandardString();
output += "\nt2: hour specified; minute and second defaulted" +
"\n " + t2.toUniversalString() +
"\n " + t2.toStandardString();
output += "\nt3: hour and minute specified; second defaulted" +
"\n " + t3.toUniversalString() +
"\n " + t3.toStandardString();
output += "\nt4: hour, minute and second specified" +
"\n " + t4.toUniversalString() +
"\n " + t4.toStandardString();
output += "\nt5: all invalid values specified" +
"\n " + t5.toUniversalString() +
"\n " + t5.toStandardString();
output += "\nt6: Time2 object t4 specified" +
"\n " + t6.toUniversalString() +
"\n " + t6.toStandardString();
JOptionPane.showMessageDialog( null, output,
"Overloaded Constructors", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class TimeTest3