Friday, December 16, 2011

Latihan 1 - Buat Class Time (part 2)

Ini salah satu cadangan jawapan untuk latihan ni:

java class time


Ok, walaupun nampak panjang tapi sebenarnya simple je.

Sekarang kita boleh nampak instance variable kita,

private int hour;
private int minute;
private int second;


Kemudian kita buat satu method untuk set setiap instance variable tu:

public void setTime(int h, int m, int s) {
     setHour(h);
     setMinute(m);
     setSecond(s);
}


Oh, nampaknya kat sini dia guna method lain pulak untuk set setiap instance variable. Setiap instance variable tu ada cara yang tersendiri untuk di-set-kan.

Jadi, bila kita guna method setTime(), dia akan cari setHour() untuk parameter h, setMinute() untuk parameter m, dan setSecond() untuk parameter s.

Kita tengok pulak method setHour():

public void setHour(int h) {
     if (h >= 0 && h <= 23)
          hour = h;
     else
          hour = 0;
}


Kat sini bila h dalam lingkungan 0 sampai 23, kita akan set instance variable hour jadi h, kalau tak kita set jadi 0.

Untuk method setMinute() dengan setSecond() lebih kurang sama, cuma lingkungan dia je yang berbeza:

public void setMinute(int m) {
     if (m >= 0 && m <= 59)
          minute = m;
     else
          minute = 0;
}


public void setSecond(int s) {
     if (s >= 0 && s <= 59)
          second = s;
     else
          second = 0;
}


Sekarang kita tengok method untuk lihat masa yang kita set, iaitu toMilitary() dengan toString().

Military time ni bermaksud masa dalam format sistem 24 jam, ini untuk info saja.

toString tu takde kaitan dengan istilah untuk sistem 12 jam, dia ada keistimewaannya yang tersendiri. Nanti kita akan tengok dalam tutorial yang akan datang.

Buat masa ni kita cuma kena tau method toString() ni untuk format dalam sistem 12 jam.

Kita tengok method toMilitary() dulu:

public String toMilitary() {
     return String.format("%02d:%02d:%02d", hour, minute, second);
}


Method ni nanti akan return data jenis string, maksudnya dia akan menghasilkan string yang kita tetapkan.

Kat sini kita akan return hour, minute, dan second dalam bentuk string, jadi macam 12:30:45 misalnya.

String.format() ni benda baru. Dia sama macam System.out.printf() tapi dia bukan terus display, dia cuma format-kan saja, belum diguna lagi.



Sekarang kita tengok pulak method toString(), untuk format sistem 12 jam, kat sini kita kena buat benda pelik sikit:

public String toString() {
     int h;
     String meridiem;

     if (hour == 0 || hour == 12)
          h = 12;
     else
          h = hour % 12;

     if (hour < 12)
          meridiem = "AM";
     else
          meridiem = "PM";

     return String.format("%d:%02d:%02d %s", h, minute, second, meridiem);
}


Kat dalam ni, kita akan declare variable h dan meridiem.

h untuk tukar nombor jadi sistem 12 jam, meridiem untuk tentukan masa tu AM atau PM.

if (hour == 0 || hour == 12)
     h = 12;
else
     h = hour % 12;


Kat sini kalau nilai hour 0 atau 12, kita letak 12, kalau tak kita letak baki bila hour bahagi 12.

Kita kena buat macam ni sebab mana wujud pukul 0.30 petang dalam sistem 12 jam kan?

Yang modulus tu pulak contoh kalau kita nak tukar jam 15.00(sistem 24 jam) jadi 3.00(sistem 12 jam). 15 bahagi 12 baki 3 kan?

if (hour < 12)
     meridiem = "AM";
else
     meridiem = "PM";


Kat sini kalau hour kurang daripada 12 maksudnya pagi lah kan? Jadi, kita letak AM, kalau tak kita letak PM.

Dan last sekali, kita return dalam bentuk string sama macam method toMilitary().


Oh, kalau nak lagi lawa boleh buat constructor untuk class ni.


Nak tengok class ni boleh jalan ke tak boleh tengok kat sini >>> Test Class Time

0 comments:

Post a Comment

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Hot Sonakshi Sinha, Car Price in India