/** * Class ClockDisplay menampilkan jam digital * berformat 24-jam. Jam ini menunjukkan jam * dan menit. * Jarak yang ditampilkan jam adalah 00:00 (tengah malam) ke 23:59 * (satu menit sebelum tengah malam). * * Jam menerima "detik" (lewat method timeTick) * setiap menitnya dan bereaksi dengan menaikkan * menit sebanyak 1. * Nilai jam juga akan bertambah satu jika nilai menit kembali ke nol. */ public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; private String displayString; // mensimulasikan tampilan sebenarnya. /** * Konstruktor untuk objek ClockDisplay. * Konstruktor ini membuat jam baru yang mulai dari 00:00. */ public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); updateDisplay(); } /** * Konstruktor untuk objek ClockDisplay. Konstruktor ini * membuat jam baru yang waktunya diatur * oleh parameter tertentu. */ public ClockDisplay (int hour, int minute) { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); setTime (hour, minute); } /** * Method ini harus dipanggil sekali tiap menit * Membuat tampilan jam maju satu menit. */ public void timeTick() { minutes.increment(); if (minutes.getValue() == 0) { // nilai menit kembali menjadi nol! hours.increment(); } updateDisplay(); } /** * Mengatur waktu tampilan ke jam * dan menit tertentu. */ public void setTime (int hour, int minute) { hours.setValue (hour); minutes.setValue (minute); updateDisplay(); } /** * Return waktu saat ini pada display dalam format * HH:MM. */ public String getTime() { return displayString; } /** * Update string internal yang mewakili * tampilan. */ private void updateDisplay() { displayString = hours.getDisplayValue() + ":" + minutes.getDisplayValue(); } }