8.1. Time1 class declaration maintains the time in 24-hour format
/**
* Time1
* Monica I H
* PBO
*/
public class Time1
{
private int hour;
private int minute;
private int second;
public void setTime(int h, int m, int s)
{
if((h >= 0 && h < 24) && (m >= 0 && m <60) && (s >= 0 && s < 60))
{
hour = h;
minute = m;
second = s;
}
else
throw new IllegalArgumentException("hour, minute, and/or second was out range");
}
public String toUniversalString()
{
return String.format ("%02d:%02d:%02d", hour, minute, second);
}
public String toString()
{
return String.format ("%d:%02d:%02d %s",
((hour == 0 || hour == 12) ? 12 : hour % 12),
minute, second, ( hour<12 ? "AM" : "PM"));
}
}
8.2. Time1 object used in an application
/**
* Time1Test
* Monica I H
* PBO
*/
public class Time1Test
{
public static void main(String [] args)
{
Time1 time = new Time1();
System.out.print("The initial universal time is: ");
System.out.println( time.toUniversalString() );
System.out.print("The initial standart time is: ");
System.out.println( time.toString ());
System.out.println();
time.setTime(13, 27, 6);
System.out.print("Universal time after setTime is:");
System.out.println( time.toUniversalString());
System.out.print("Standard time after setTime is:");
System.out.println( time.toString());
System.out.println();
try
{
time.setTime( 99, 99, 99);
}
catch(IllegalArgumentException e)
{
System.out.printf( "Exception: %s\n\n", e.getMessage());
}
System.out.println("After attempting invalid settings:");
System.out.print("Universal time");
System.out.println( time.toUniversalString());
System.out.print("Standard time:");
System.out.println( time.toString());
}
}
8.3. Private members of class Time1 are not accessible
/**
* MemberAccessTest
* Monica I H
* PBO
*/
public class MemberAccessTest
{
public static void main(String[] args)
{
Time1 time = new Time1();
time.hour = 7;
time.minute = 15;
time.second = 30;
}
}
8.4. This used implicity and explicity to refer to members of an object
/**
* ThisTest
* Monica I H
* PBO
*/
public class ThisTest
{
public static void main(String[] args)
{
SimpleTime time = new SimpleTime(15,30,19);
System.out.println(time.buildString());
}
}
class SimpleTime
{
private int hour;
private int minute;
private int second;
public SimpleTime (int hour, int minute, int second)
{
this.hour = hour;
this.minute = minute;
this.second = second;
}
public String buildString()
{
return String.format("%24s: %s\n%24s: %s",
"this.toUniversalString()",this.toUniversalString(),
"toUniversalString()",toUniversalString());
}
public String toUniversalString()
{
return String.format("%02d:%02d:%02d",
this.hour, this.minute, this.second);
}
}
8.5. Time2 class with overloaded constructors
/**
* Time2
* Monica I H
* PBO
*/
public class Time2
{
private int hour;
private int minute;
private int second;
public Time2()
{
this(0,0,0);
}
public Time2(int h)
{
this(h,0,0);
}
public Time2(int h, int m)
{
this(h,m,0);
}
public Time2(int h, int m, int s)
{
setTime(h,m,s);
}
public Time2(Time2 time)
{
this(time.getHour(), time.getMinute(), time.getSecond());
}
public void setTime (int h, int m, int s)
{
setHour(h);
setMinute(m);
setSecond(s);
}
public void setHour(int h)
{
if (h>=0 && h < 24)
hour = h;
else
throw new IllegalArgumentException("hour must be 0-23");
}
public void setMinute(int m)
{
if (m>=0 && m < 60)
minute = m;
else
throw new IllegalArgumentException("minute must be 0-59");
}
public void setSecond(int s)
{
if (s>=0 && s < 60)
second = (( s>=0 && s <60) ? s : 0);
else
throw new IllegalArgumentException("second must be 0-59");
}
public int getHour()
{
return hour;
}
public int getMinute()
{
return minute;
}
public int getSecond()
{
return second;
}
public String toUniversalString()
{
return String.format(
"%02d:%02d:%02d", getHour(), getMinute(), getSecond());
}
public String toString()
{
return String.format("%d:%02d:%02d %s",
((getHour() == 0 || getHour() == 12) ? 12 : getHour() % 12),
getMinute(), getSecond(), ( getHour() < 12 ? "AM" : "PM"));
}
}
8.6. Overloaded constructors used to initialize Time2 objects
/**
* Time2
* Monica I H
* PBO
*/
public class Time2Test
{
public static void main(String[] args)
{
Time2 t1 = new Time2();
Time2 t2 = new Time2(2);
Time2 t3 = new Time2(21,34);
Time2 t4 = new Time2(12,25,42);
Time2 t5 = new Time2(t4);
System.out.println("Constructed with:");
System.out.println("tl: all arguments defaulted");
System.out.printf(" %s\n", t1.toUniversalString());
System.out.printf(" %s\n", t1.toString());
System.out.println(
"t2: hour specified; minute and second defaulted");
System.out.printf(" %s\n", t2.toUniversalString());
System.out.printf(" %s\n", t2.toString());
System.out.println(
"t3: hour and minute specified; second defaulted");
System.out.printf(" %s\n", t3.toUniversalString());
System.out.printf(" %s\n", t3.toString());
System.out.println("t4: hour, minute, and second specified");
System.out.printf(" %s\n", t4.toUniversalString());
System.out.printf(" %s\n", t4.toString());
System.out.println("t5: Time2 object t4 specified");
System.out.printf(" %s\n", t5.toUniversalString());
System.out.printf(" %s\n", t5.toString());
try
{
Time2 t6 = new Time2(27,74,99);
}
catch(IllegalArgumentException e)
{
System.out.printf("\nException while initializing t6: %s\n",
e.getMessage());
}
}
}