8.1 | Time1 class declaration maintains the time in 24-hour format.
/**
* Write a description of class Time1 here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class Time1
{
private int hour; //0-23
private int minute; //0-59
private int second; //0-59
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 of range");
}
public String toUniversalString() {
return String.format("%02d:%02d:%02d", hour, minute, second);
}
public String toString() {
return String.format("%02d:%02d:%02d %s", ((hour==0||hour==12)?12:hour%12), minute, second, (hour<12?"AM":"PM"));
}
}
8.2 | Time1 object used in an application.
/**
* Write a description of class time1test here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
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 standard 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.
/**
* Write a description of class MemberAccessTest here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class MemberAccessTest
{
public static void main(String[] args) {
Time1 time = new Time1();
time.hour = 7;
time.minute = 15;
time.second = 30;
}
}
Change source code in 8.1 into..
/**
* Write a description of class Time1 here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class Time1
{
public int hour; //0-23
public int minute; //0-59
public int second; //0-59
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 of range");
}
public String toUniversalString() {
return String.format("%02d:%02d:%02d", hour, minute, second);
}
public String toString() {
return String.format("%02d:%02d:%02d %s", ((hour==0||hour==12)?12:hour%12), minute, second, (hour<12?"AM":"PM"));
}
}
8.4 | This used implicitly and explicitly to refer to members of an object.
/**
* Write a description of class ThisTest here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
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.to.UniversalString()", this.toUniversalString(),
"to.UniversalString()", toUniversalString());
}
public String toUniversalString() {
return String.format("%02d:%02d:%02d", this.hour, this.minute, this.second);
}
}
8.5 | Time2 class with overloaded constructors.
/**
* Write a description of class Time2 here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
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("%02d:%02d:%02d %s",
((getHour()==0||getHour()==12)?12:getHour()%12), getMinute(), getSecond(),
(getHour()<12?"AM":"PM"));
}
}
8.6 | Overloaded constructors used to initialize Time2
.
/**
* Write a description of class Time2Test here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
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("t1: 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 mnute 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());
}
}
}