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

// sắp xếp các phần bài này bằng mergesort

// trộn ghép lại hai nửa rồi trả lại kết quả

}

Nh th

ng l , có hai cách nghĩ v ch

ng trình đ quy: B n có th nghĩ qua toàn b lu ng th c thi,

ư ườ

ề ươ

ộ ồ

hay b n có th d a vào “ni m tin” (xem M c

ể ự

ụ 6.9). Tôi đã xây d ng ví d này đ khuy n khích b n t

ế

ạ ư

duy theo ni m tin nh v y.

ư ậ

Khi d d ng

ử ụ sortDeck đ s p x p các ph n bài, b n không th y b thôi thúc ph i theo lu ng th c thi,

ể ắ

ế

ấ ị

ph i không? B n ch vi c gi s r ng nó ho t đ ng đ

c vì b n đã g l i cho nó r i. , t t c nh ng đi u

ỉ ệ

ả ử ằ

ạ ộ

ượ

ỡ ỗ

ồ Ồ ấ ả

mà b n đã làm cho

mergeSort tr nên đ quy là thay th m t thu t toán s p x p này v i thu t toán

ế ộ

ế

khác. Không có lý do gì đ đ c ch

ng trình khác đi c .

ể ọ

ươ

Th c ra, b n ph i nghĩ m t chút m i l p đ

c tr

ng h p c s đúng đ n và đ m b o r ng cu i cùng

ớ ậ

ượ

ườ

ợ ơ ở

ả ằ

b n s đ t đ n tr

ng h p c s này. Song ngoài đi u đó ra, vi c vi t nên phiên b n đ quy h n s

ạ ẽ ạ ế

ườ

ợ ơ ở

ế

ẳ ẽ

không còn v n đ n a. Chúc b n may m n!

ề ữ

14.7 Bi n l p

ế ớ

Đ n gi ta đã th y nh ng bi n đ a ph

ng, v n đ

c khai báo bên trong ph

ng th c, và bi n th c th ,

ế

ế

ươ

ượ

ươ

ế

v n đ

c khai báo l i đ nh nghĩa l p, th

ng đi tr

c các đ nh nghĩa ph

ng th c.

ượ

ở ờ ị

ườ

ướ

ươ

Các bi n đ a ph

ng đ

c t o nên khi m t ph

ng th c đ

c kích ho t và phá h y khi ph

ng th c k t

ế

ươ

ượ ạ

ươ

ứ ượ

ươ

ứ ế

thúc. Các bi n th c th đ

c t o nên khi b n t o nên m t đ i t

ng; các bi n này b phá h y khi đ i

ế

ể ượ ạ

ạ ạ

ộ ố ượ

ế

t

ng b thu h i rác b nh .

ượ

Bây gi là lúc bi t v

ế ề bi n l p

ế ớ . Gi ng nh bi n th c th , bi n l p đ c đ nh nghĩa trong m t l i đ nh

ư ế

ế ớ

ượ ị

ộ ờ ị

nghĩa l p tr

c nh ng đ nh nghĩa ph

ng th c, song chúng đ

c nh n di n b ng t khóa

ướ

ươ

ượ

static. Chúng

đ

c t o nên khi ch

ng trình kh i đ u và còn t n t i đ n t n khi ch

ng trình k t thúc.

ượ ạ

ươ

ở ầ

ồ ạ ế ậ

ươ

ế

B n có th tham chi u t i biên th c th t b t kì đâu bên trong l i khai báo l p. Nh ng bi n l p th

ng

ế ớ

ể ừ ấ

ế ớ

ườ

đ

c dùng đ l u các giá tr h ng s c n thi t nhi u ch .

ượ

ể ư

ị ằ

ố ầ

ế ở

L y ví d , sau đây là m t phiên b n c a

ả ủ Card trong đó suits và ranks là nh ng bi n l p:

ế ớ

class

Card {

int

suit, rank;

static

String[] suits = {

"Clubs"

,

"Diamonds"

,

"Hearts"

,

"Spades"

};

static

String[] ranks = {

"narf"

,

"Ace"

,

"2"

,

"3"

,

"4"

,

"5"

,

"6"

,

"7"

,

"8"

,

"9"

,

"10"

,

"Jack"

,

"Queen"

,

"King"

};

public static void

printCard(Card c) {

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

" of "

+ suits[c.suit]);

}

}

Bên trong printCard ta có th tham chi u t i

ế ớ suits và ranks nh th chúng là các bi n đ a ph ng.

ư ể

ế

ươ