Assalamu’alaikum.
Pada topik kali ini, saya akan
membahas suatu masalah Pemrograman Java yaitu Clock Display. Yang mana
permasalahannya adalah, kita akan membuat sebuah program yang dapat menampilkan
waktu dengan nilai tampilan jam pada interval 0 – 23, sedangkan nilai tampilan
menit pada interval 0 – 59.
Dalam pembuatan program ini
sendiri, inti dari programnya hanya membutuhkan 2 class saja, yang nanti akan
kita sebut ClockDisplay, yang mana class ini untuk menampilkan waktunya,
sedangkan ada satu class lagi yang akan kita sebut NumberDisplay, yang mana
class ini untuk memproses input dari user dan output ke ClockDisplay.
Sebenarnya jika digabung dalam satu buah class yang sama itu boleh-boleh saja,
hanya saja dengan memisahkan inti program menjadi 2 class yang berbeda diharapkan
dapat mempermudah pemahaman seorang newbie Java Programmer (seperti saya), dan
supaya dalam peng-edit-an program dapat dilakukan dengan mudah tanpa perlu
mengganti banyak source code. Jadi, langsung saja ini dia source code dari inti
programnya.
public class
ClockDisplay
{
private NumberDisplay hours;
private NumberDisplay minutes;
private String DisplayString; // Simulates the actual display
/**
* Constructor for ClockDisplay objects.
This constructor
* creates a new clock set at 00:00
*/
public ClockDisplay(){
hours = new NumberDisplay(24);
minutes = new NumberDisplay(60);
UpdateDisplay();
}
/**
* Constructor for ClockDisplay objects.
This constructor
* creates a new clock set at the time
specified by the
* parameters.
*/
public ClockDisplay(int hour, int minute){
hours = new NumberDisplay(24);
minutes = new NumberDisplay(60);
SetTime(hour, minute);
}
/**
* This method should get called once every
minute - it
* makes the clock display go one minute
forward
*/
public void TimeTick(){
minutes.increment();
if(minutes.GetValue() == 0){
// It just rolled over!
hours.increment();
}
UpdateDisplay();
}
/**
* Set the time of the display to the
specified hour and minute
*/
public void SetTime(int hour, int minute){
hours.SetValue(hour);
minutes.SetValue(minute);
UpdateDisplay();
}
/**
* Return the current time of this display
in the format
* HH:MM
*/
public String GetTime(){
return DisplayString;
}
/**
* Update the internal string that
represents the display
*/
private void UpdateDisplay(){
DisplayString = hours.GetDisplayValue()
+ ":" + minutes.GetDisplayValue();
}
}
Kemudian untuk source code pada
class NumberDisplay nya ada dibawah ini.
public class
NumberDisplay
{
private int limit;
private int value;
/**
* Constructor for objects of class
NumberDisplay
*/
public NumberDisplay(int RollOverLimit){
limit = RollOverLimit;
value = 0;
}
/**
* Return the current value
*/
public int GetValue(){
return value;
}
/**
* Set the value of the display to the new
specified
* value. If the new value is less than
zero or over the limit,
* do nothing
*/
public void SetValue(int ReplacementValue){
if((ReplacementValue >= 0)
&& (ReplacementValue < limit)){
value = ReplacementValue;
}
}
/**
* Return the display value (that is, the
current value
* as two digit String. If the value is
less than ten,
* it will be padded with a leading zero)
*/
public String GetDisplayValue(){
if(value < 10){
return "0" + value;
}
else{
return "" + value;
}
}
/**
* Increment the display value by one,
rolling over to zero if
* the limit is reached.
*/
public void increment(){
value = (value + 1) % limit;
}
}
Dengan cukup 2 class itu saja,
kita sudah mendapatkan program penunjuk jam kita sendiri. Hanya saja dalam
melihat proses inputnya dapat dibilang lebih memakan waktu jika digunakan dalam
banyak test-case.
Untuk gambar dibawah, abaikan dulu class Test_ClockDisplay karena nanti akan saya bahas lebih lanjut.
Dan akan terlihat tampilan jam yang dimasukkan dalam object clockDis1.
Tapi seperti yang saya jelaskan sebelumnya, jika digunakan untuk Test Case dalam jumlah yang lebih banyak, akan sangat memakan waktu. Sehingga dalam pengecekan output, perlu dilakukan secara instant dan efektif, sehingga tidak perlu memanggil fungsi GetTime() dalam ClockDisplay dengan manual. Cukup dipanggil dalam console pun juga sebenarnya tidak masalah. Maka dari itu, saya mendefinisikan sebuah class baru yang berikutnya akan saya beri nama Test_ClockDisplay
Isi dari Test_ClockDisplay adalah sebagai berikut.
public class Test_ClockDisplay
{
public Test_ClockDisplay(){
}
public void test_clock(int hour, int minute){
ClockDisplay clock = new ClockDisplay();
clock.SetTime(hour, minute);
System.out.println(clock.GetTime());
}
}
{
public Test_ClockDisplay(){
}
public void test_clock(int hour, int minute){
ClockDisplay clock = new ClockDisplay();
clock.SetTime(hour, minute);
System.out.println(clock.GetTime());
}
}
Dimana jika ingin menggunakan program ini, cukup memanggil lewat constructor Test_ClockDisplay(), dan dengan memasukkan nilai jam dan menit, dan Foila! akan langsung muncul tampilan jam dan menit dalam console tanpa perlu memanggil fungsi GetTime() secara manual.
Selanjutnya, nama instance yang akan saya berikan adalah Test1, sehingga akan muncul objek merah pada bagian kiri bawah BlueJ di sebelah clockDis1
Langsung akan secara otomatis muncul tampilan console BlueJ menunjukkan jam dan menit yang dimasukkan.
Jika ada saran atau kritik untuk bahasan ini, silahkan isi di kolom komentar. Terima kasih.. :D
Wassalamu'alaikum.