// Fig. 8.5: Time2.java // Time2 class declaration with overloaded constructors public class Time2 { private int jam; //0-23 private int menit; //0-59 private int detik; //0-59 //Time2 no-argument constructor //inisialisasi each instance variable to zero public Time2() { this(0, 0, 0);//memanggil TIme2 constructor dgn 3 argumen } //akhir Time2 no-argument constructor //Time2 constructor: jam disediakan, menit dan detik diatur ke 0 public Time2(int j) { this(j, 0, 0); // memanggil Time2 constructor dengan 3 argumen } // akhir Time2 one-argument constructor //Time2 constructor: jam dan menit disediakan, detik diatur ke 0 public Time2(int j, int m) { this(j, m, 0);//memanggil Time2 constructor dgn 3 argumen }//akhir Time2 two-arguments constructor //Time2 constructor: jam, menit, dan detik disediakan public Time2(int j, int m, int d) { setTime(j, m, d);//memanggil setTime untuk memvalidasi waktu } //akhir Time2 three-argument constructor //Time2 constructor: objek Time2 lain yang disediakan public Time2(Time2 time) { //memanggil Time2 three-argument constructor this(time.getJam(), time.getMenit(), time.getDetik()); } // akhir Time2 dengan objek argumen Time2 // Set Methods // set a new time value using universal time; // validate the data public void setTime(int j, int m, int d) { setJam(j); // mengatur jam setMenit(m); // mengatur menit setDetik(d); // mengatur detik } //akhir method setTime // validate and set jam public void setJam(int j) { if (j >= 0 && j < 24) jam = j; else throw new IllegalArgumentException("hour must be 0-23"); } //akhir method setHour // validate and set menit public void setMenit(int m) { if (m >= 0 && m < 60) menit = m; else throw new IllegalArgumentException( "minute must be 0-59" ); } //akhir method setMinute // validate and set detik public void setDetik(int d) { if (d >= 0 && d < 60) detik = ((d >= 0 && d < 60)?d: 0); else throw new IllegalArgumentException( "second must be 0-59" ); } //akhir method setDetik // Get Methods // mendapatkan nilai jam public int getJam() { return jam; }// akhir method getJam // mendapatkan nilai menit public int getMenit() { return menit; } // akhir method getMenit // mendapatkan nilai detik public int getDetik() { return detik; } // akhir method getDetik //mengubah ke string dalam format waktu universal (JJ:MM:DD) public String toUniversalString() { return String.format( "%02d:%02d:%02d", getJam(), getMenit(), getDetik()); } //akhir method toUniversalString //mengubah ke string dalam format waktu standar (J:MM:DD AM or PM) public String toString() { return String.format( "%d:%02d:%02d %s", ((getJam() == 0 || getJam() == 12) ? 12 : getJam() % 12 ), getMenit(), getDetik(), (getJam() < 12 ? "AM" : "PM" ) ); } //akhir method toString } //akhir program / class Time2