Nama : Erlangga Rizqi Dwi Raswanto
NRP : 5025241179
Kelas : PBO A
Saya mengimplementasikan jam digital sederhana menggunakan komposisi objek: ClockDisplay memiliki dua NumberDisplay (jam dan menit). Program menampilkan waktu dalam format HH:MM, mendukung kenaikan satu menit per “tik”, rollover menit (59→00) yang memicu penambahan jam, dan rollover jam (23→00). Pengujian dasar menunjukkan seluruh perilaku sesuai spesifikasi studi kasus “Interaksi Objek”.
Abstraksi & Desain
-
Kelas
NumberDisplay: menyimpan nilai saat ini (currValue) dan batas maksimum (maxValue), menyediakanincrement()(modulo),setValue(), dan tampilan dua digitgetDisplayValue(). -
Kelas
ClockDisplay: menyusunNumberDisplay hours(24)danminutes(60), menyajikan string waktuHH:MM, sertaminIncrement()(naikkan menit; saat menit kembali ke 0, jam bertambah). -
Kelas
ClockDemo: driver untuk menjalankan simulasi berkala.
NumberDisplay Class
public class NumberDisplay {
private int currValue;
private int maxValue;
public NumberDisplay(int max) {
maxValue = max;
currValue = 0;
}
public void setValue(int newValue) {
if (newValue >= 0 && newValue < maxValue) {
currValue = newValue;
}
}
public int getValue() {
return currValue;
}
public String getDisplayValue() {
if (currValue < 10)
return "0" + currValue;
else
return "" + currValue;
}
public void increment() {
currValue = (currValue + 1) % maxValue;
}
}
ClockDisplay Class
public class ClockDisplay {
private NumberDisplay hours;
private NumberDisplay minutes;
private String currTimeString;
public ClockDisplay() {
hours = new NumberDisplay(24);
minutes = new NumberDisplay(60);
setTimeString();
}
private void setTimeString() {
currTimeString = hours.getDisplayValue() + ":" + minutes.getDisplayValue();
}
public void setTime(int hour, int minute) {
hours.setValue(hour);
minutes.setValue(minute);
setTimeString();
}
public String getTime() {
return currTimeString;
}
public void minIncrement() {
minutes.increment();
if (minutes.getValue() == 0) {
hours.increment();
}
setTimeString();
}
}
ClockDemo Class
public class ClockDemo {
public static void main(String[] args) {
ClockDisplay clock = new ClockDisplay();
clock.setTime(11, 33);
while(true) {
clock.minIncrement();
System.out.println("this clock is ticking bro...");
System.out.println("Current time: " + clock.getTime());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
break;
}
}
}
}

