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()); } } }