THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 106

60! S giây,

second, là hàng đ n v , s phút,

ơ

ị ố

minute, là hàng 60, còn s gi ,

ố ờ hour, là hàng 3600.

Khi ta vi t

ế addTime và increment, th c ch t là ta đang tính c ng h 60; đó là lý do t i sao ta ph i

ở ệ

“nh ” t hàng này sang hàng khác.

ớ ừ

M t cách ti p c n khác đ i v i t ng th bài toán là chuy n

ế ậ

ố ớ ổ

ể Time thành double r i l i d ng kh năng

ồ ợ ụ

tính toán c a máy đ i v i

ố ớ double. Sau đây là m t ph ng th c chuy n đ i

ươ

ổ Time thành double:

public static double

convertToSeconds(Time t) {

int

minutes = t.hour * 60 + t.minute;

double

seconds = minutes * 60 + t.second;

return

seconds;

}

Bây gi t t c nh ng gì ta c n là cách chuy n t

ờ ấ ả

ể ừ double sang đ i t ng

ố ượ Time. Ta có th vi t m t ph ng

ể ế

ươ

th c đ th c hi n đi u này, song có l h p lý h n la vi t m t constructor th ba:

ứ ể ự

ẽ ợ

ơ

ế

public

Time(

double

secs) {

this

.hour =(

int

)(secs / 3600.0);

secs -=

this

.hour * 3600.0;

this

.minute =(

int

)(secs / 60.0);

secs -=

this

.minute * 60;

this

.second = secs;

}

Constructor này h i khác nh ng constructor khác; nó bao g m nh ng tính toán bên c nh phép gán cho

ơ

các bi n th c th .

ế

Có th b n ph i suy nghĩ đ t thuy t ph c b n thân r ng kĩ thu t mà tôi dùng đ chuy n t h c s

ể ạ

ể ự

ế

ụ ả

ể ừ ệ ơ ố

này sang c s kia là đúng. Nh ng m t khi b n đã b thuy t ph c r i, ta có th dùng nh ng ph

ng th c

ơ ố

ư

ế

ụ ồ

ươ

này đ vi t l i

ể ế ạ addTime:

public static

Time addTime(Time t1, Time t2) {

double

seconds = convertToSeconds(t1) + convertToSeconds(t2);

return new

Time(seconds);

}

Mã l nh trên ng n h n phiên b n g c, và d th y h n h n r ng mã l nh này đúng đ n (v i gi thi t

ơ

ễ ấ

ơ

ẳ ằ

ế

th

ng l r ng nh ng ph

ng th c nó kích ho t cũng đ u đúng). Vi c vi t l i

ườ

ệ ằ

ươ

ế ạ increment theo cách

t

ng t đ

c dành cho b n nh m t bài t p.

ươ

ự ượ

ư ộ

11.12 Khái quát hóa

Trong ch ng m c nào đó, vi c chuy n đ i qua l i gi a các h c s 60 và 10 khó h n vi c x lý th i gian

ệ ơ ố

ơ

ệ ử

đ n thu n. Vi c chuy n h c s thì tr u t

ng h n, còn tr c giác c a ta x lý th i gian t t h n.

ơ

ệ ơ ố

ừ ượ

ơ

ố ơ

Nh ng n u ta có hi u bi t sâu đ coi th i gian nh các s trong h 60, và đ u t công s c vi t nh ng

ư

ế

ế

ư

ầ ư

ế

ph

ng th c chuy n đ i

ươ

ổ (convertToSeconds và constructor th ba), ta s thu đ c m t ch ng trình

ượ

ươ

ng n h n, d đ c và g l i, đ ng th i đáng tin c y h n.

ơ

ễ ọ

ỡ ỗ

ơ

Vi c b sung các đ c tính sau này cũng d dàng h n. Hãy t

ng t

ng ta c n tr hai đ i t

ng

ệ ổ

ơ

ưở

ượ

ố ượ Time đ

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.