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

Đ bi u di n ti p kĩ thu t bao b c, ta hãy l y đo n mã l nh cu i m c tr

c r i b c nó vào trong m t

ể ể

ế

ở ố

ướ ồ ọ

ph

ng th c:

ươ

public static void

printMultTable() {

int

i = 1;

while

(i <= 6) {

printMultiples(i); i = i + 1;

}

}

Quá trình mà tôi hi n đang gi i thi u đ

c g i là

ượ ọ

bao b c và khái quát hóa

. Ta phát tri n mã l nh

b ng cách vi t riêng nh ng dòng l nh vào

ế

main ho c vào ph

ng th c khác. Khi mã l nh này th c hi n

ươ

đ

c, ta l y l i nó r i b c vào m t ph

ng th c. R i b n khái quát hóa ph

ng th c b ng cách b sung

ượ

ấ ạ

ồ ọ

ươ

ồ ạ

ươ

ứ ằ

các tham s .

Lúc m i l p trình, đôi khi b n không bi t cách chia ch

ng trình thành các ph

ng th c. Quy trình trên

ớ ậ

ế

ươ

ươ

giúp b n thi t k trong khi l p trình.

ế ế

7.7 Các bi n đ a ph

ng

ế

ươ

Có th b n t h i b ng cách nào mà ta dùng đ

c cùng m t bi n,

ể ạ ự ỏ ằ

ượ

ế i, c

trong printMultiples l n

ẫ printMultTable. Ch ng ph i nó s gây r c r i khi m t trong hai ph ng th c

ắ ố

ươ

thay đ i giá tr c a bi n sao?

ị ủ

ế

L i gi i đáp cho c hai câu h i trên đ u là không,

vì i trong printMultiples và i trong printMultTable không ph i cùng m t bi n. Chúng có cùng tên g i,

ế

nh ng không tham chi u đ n cùng v trí l u tr , và vi c thay đ i m t bi n này s không nh h

ng gì

ư

ế

ế

ư

ế

ưở

t i bi n kia.

ế

Nh ng bi n đ

c t o ra bên trong ph n đ nh nghĩa ph

ng th c đ

c g i là

ế

ượ ạ

ươ

ứ ượ ọ

bi n đ a ph

ng

ế

ươ , vì

chúng ch t n t i bên trong ph

ng th c đó. B n không th truy c p bi n đ a ph

ng t ngoài ph

ng

ỉ ồ ạ

ươ

ế

ươ

ươ

th c “ch ” c a nó, và b n có th tùy ý đ t nhi u bi n cùng tên, mi n là chúng không ph i trong cùng

ủ ủ

ế

m t hàm.

M c dù đi u này có th gây nh m l n, song có nh ng lí do thích đáng đ s d ng l i các tên g i. Ch ng

ể ử ụ

h n, các tên

i, j và k th

ng đ

c dùng làm bi n l p. N u b n tránh dùng chúng trong m t ph

ng th c

ườ

ượ

ế ặ

ế

ươ

ch vì b n đã dùng chúng n i khác, thì ch

ng trình vi t ra s khó đ c h n.

ở ơ

ươ

ế

ọ ơ

7.8 Nói thêm v khái quát hóa

Xét m t ví d khác v khái quát hóa. Hãy hình dung r ng b n

ạ mu n có m t ch ng trình đ in ra b ng

ươ

tính nhân v i kích th

c b t kì, ch không ch 6 ×

ướ ấ

6. B n có th thêm m t tham s vào

printMultTable:

public static void

printMultTable(

int

high) {

int

i = 1;

while

(i <= high) {

printMultiples(i);

i = i + 1;

}

}