Đ 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;
}
}