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

Ch

ng 15: L p trình h

ng đ i

ươ

ướ

ố t ng

ượ

Tr v

ở ề M c l c

ụ ụ cu n sách

15.1 Các ngôn ng và phong cách l p trình

Có nhi u ngôn ng l p trình khác nhau, và không kém m y v s l

ng là các phong cách l p trình (còn

ữ ậ

ấ ề ố ượ

g i là m u hình). Nh ng ch

ng trình mà ta đã vi t đ n gi đ u thu c phong cách

ươ

ế ế

ờ ề

th t c

ủ ụ , b i chú ý

đ

c d n vào vi c quy đ nh các th t c tính toán.

ượ ồ

ủ ụ

Đa s các ch

ng trình Java đ u

ươ

h

ng đ i t

ng

ướ

ố ượ , có nghĩa là t p trung v nh ng đ i t ng và t ng

ố ượ

ươ

tác gi a chúng. Sau đây là m t s đ c tính c a l p trình h

ng đ i t

ng:

ộ ố ặ

ủ ậ

ướ

ố ượ

Đ i t

ng th

ng bi u di n cho nh ng th c th ngoài đ i. Trong ch

ng tr

c, vi c t o nên

ố ượ

ườ

ươ

ướ

ệ ạ

l p

ớ Deck là m t b c h ng t i l p trình h ng đ i t ng.

ộ ướ ướ

ớ ậ

ướ

ố ượ

Đa s các ph

ng th c là ph

ng th c đ i t

ng (nh nh ng ph

ng th c mà ta kích ho t lên

ươ

ươ

ứ ố ượ

ư

ươ

các Strings) thay vì các ph

ng th c l p (nh các ph

ng th c

ươ

ứ ớ

ư

ươ

ứ Math). Nh ng ph ng th c mà đ n gi

ươ

ế

ta đã vi t v n là ph

ng th c l p. ch

ng này ta s vi t m t s ph

ng th c đ i t

ng.

ế ẫ

ươ

ứ ớ Ở ươ

ẽ ế

ộ ố

ươ

ứ ố ượ

Các đ i t

ng cô l p kh i nhau b ng cách h n ch nh ng cách th c t

ng tác gi a chúng, đ c bi t

ố ượ

ế

ứ ươ

b ng cách ngăn không cho chúng truy c p các bi n th c th mà không kích ho t các ph

ng th c.

ế

ươ

Các l p đ

c t ch c trong cây gia đình, đó nh ng l p m i thì m r ng t l p cũ, qua vi c b sung

ượ ổ ứ

ở ộ

ừ ớ

ệ ổ

nh ng ph

ng th c m i và thay th ph

ng th c s n có.

ươ

ế

ươ

ứ ẵ

ch

ng này tôi chuy n ch

ng trình

Ở ươ

ươ

Card ch

ng tr

c, t phong cách th t c sang h

ng đ i

ở ươ

ướ

ủ ụ

ướ

t

ng. B n có th t i v mã l nh t ch

ng này t i

ượ

ể ả ề

ừ ươ

http://thinkapjava.com/code/Card3.java.

15.2 Các ph

ng th c đ i t

ng và ph

ng th c l p

ươ

ố ượ

ươ

ứ ớ

Có hai ki u ph

ng th c trong Java, g i là

ươ

ph

ng th c l p

ươ

ứ ớ ph ng th c đ i t ng

ươ

ố ượ . Ph ng

ươ

th c l p d nh n th y b i có t khóa

ứ ớ

ấ ở

static ngay trên dòng đ u. Còn b t kì ph

ng th c nào

ươ

không có t

khóa static này thì đ u là ph

ng th c đ i t

ng.

ươ

ứ ố ượ

Dù ch a vi t đ

c ph

ng th c đ i t

ng nào, song ta đã kích ho t m t s ph

ng th c nh v y. M i

ư

ế ượ

ươ

ứ ố ượ

ộ ố

ươ

ư ậ

khi b n kích ho t m t ph

ng th c “lên” m t đ i t

ng, thì đó chính là ph

ng th c đ i t

ng. Ch ng

ươ

ộ ố ượ

ươ

ứ ố ượ

h n,

ạ charAt và nh ng ph ng th c khác mà ta kích ho t lên nh ng đ i t ng

ươ

ố ượ String đ u là các ph ng

ươ

th c đ i t

ng.

ứ ố ượ

B t c th gì vi t đ

c là ph

ng th c l p cũng có th đ

c vi t thành ph

ng th c đ i t

ng, và

ấ ứ ứ

ế ượ

ươ

ứ ớ

ể ượ

ế

ươ

ứ ố ượ

ng

c l i. Song đôi khi, s có m t cách vi t t nhiên h n cách kia.

ượ ạ

ế ự

ơ

Ch ng h n, sau đây là

printCard vi t d

i d ng ph

ng th c l p:

ế ướ ạ

ươ

ứ ớ

public static void

printCard(Card c) {

System.out.println(ranks[c.rank] +

" of "

+ suits[c.suit]);

}

Còn sau đây, nó đ

c vi t l i thành ph

ng th c đ i t

ng:

ượ

ế ạ

ươ

ứ ố ượ

public void

print() {

System.out.println(ranks[rank] +

" of "

+ suits[suit]);

}