trình ng d ng, đ s d ng. Hãy
ứ
ụ
ể ử ụ
xemhttp://en.wikipedia.org/wiki/Application_programming_interface.
16.3 public và private
Hãy nh l i t Ch
ng
ớ ạ ừ
ươ 1, tôi đã nói r ng tôi s gi i thích t i sao ph ng th c
ằ
ẽ ả
ạ
ươ
ứ main l i có t
ạ
ừ
khóa public ch ? R t cu c, đã đ n lúc c n gi i thích r i.
ứ
ố
ộ
ế
ầ
ả
ồ
public nghĩa là ph
ng th c đ
c xét có th đ
c kích ho t t nh ng ph
ng th c khác. L a ch n còn
ươ
ứ ượ
ể ượ
ạ ừ
ữ
ươ
ứ
ự
ọ
l i là
ạ
private, có nghĩa là ph
ng th c đang xét ch có th kích ho t đ
c trong l p mà nó đ
c đ nh
ươ
ứ
ỉ
ể
ạ ượ
ớ
ượ ị
nghĩa.
Các bi n th c th cũng có th là
ế
ự
ể
ể public ho c
ặ private, v i k t qu t ng t : m t bi n th c th private ch
ớ ế
ả ươ
ự
ộ
ế
ự
ể
ỉ
có th truy c p đ
c t bên trong l p mà nó đ
c đ nh nghĩa.
ể
ậ
ượ ừ
ớ
ượ ị
Lý do c b n cho vi c đ t nh ng ph
ng th c và bi n th c th d
i d ng private là nh m h n ch s
ơ ả
ệ ặ
ữ
ươ
ứ
ế
ự
ể ướ ạ
ằ
ạ
ế ự
t
ng tác gi a các l p đ có th gi m c đ ph c t p m c ch p nh n đ
c.
ươ
ữ
ớ
ể
ể ữ ứ ộ
ứ ạ ở ứ
ấ
ậ
ượ
Ch ng h n, l p Location gi các bi n th c th d
i d ng private. Nó có các ph
ng th c truy
ẳ
ạ
ớ
ữ
ế
ự
ể ướ ạ
ươ
ứ
c p
ậ getRow là getCol, nh ng l i không cung c p ph ng th c nào đ s a đ i các bi n th c th . H qu
ư
ạ
ấ
ươ
ứ
ể ử
ổ
ế
ự
ể
ệ
ả
là, các đ i t
ng Location đ u không th bi n đ i, theo nghĩa r ng chúng đ u có th đ
c chia s mà ta
ố ượ
ề
ể ế
ổ
ằ
ề
ể ượ
ẻ
không lo chúng b c l đ ng thái không mong đ i do xu t hi n bí danh (alias).
ộ ộ ộ
ợ
ấ
ệ
Vi c đ t các ph
ng th c d
i d ng private giúp ta gi cho API đ
c đ n gi n. Các l p th
ng kèm
ệ ặ
ươ
ứ ướ ạ
ữ
ượ ơ
ả
ớ
ườ
theo nh ng ph
ng th c tr giúp v n đ
c dùng đ th c hi n các ph
ng th c khác, song n u đ cho
ữ
ươ
ứ
ợ
ố
ượ
ể ự
ệ
ươ
ứ
ế
ể
nh ng ph
ng th c này tham gia vào trong API public có th s không c n thi t và d gây l i.
ữ
ươ
ứ
ể ẽ
ầ
ế
ễ
ỗ
Các ph
ng th c và bi n th c th private là đ c đi m ngôn ng giúp cho l p trình viên đ m b o đ
c
ươ
ứ
ế
ự
ể
ặ
ể
ữ
ậ
ả
ả
ượ
s
ự bao b c d li u
ọ
ữ ệ , theo nghĩa là các đ i t ng thu c l p này thì đ c cô l p kh i nh ng l p khác.
ố ượ
ộ ớ
ượ
ậ
ỏ
ữ
ớ
16.4 Trò ch i Life
ơ
Nhà toán h c John Conway đã phát minh ra “Trò ch i Life,” mà ông g i là m t “trò ch i không ng
i”
ọ
ơ
ọ
ộ
ơ
ườ
vì ch ng c n có ng
i ch i đ l a ch n chi n thu t hay ra quy t đ nh. Sau khi thi t l p đi u ki n ban
ẳ
ầ
ườ
ơ ể ự
ọ
ế
ậ
ế ị
ế ậ
ề
ệ
đ u, b n ch vi c xem trò ch i t nó phát tri n. Nh ng đi u này hóa ra còn hay h n so v i tho t nghe;
ầ
ạ
ỉ ệ
ơ ự
ể
ư
ề
ơ
ớ
ạ
b n có th đ c thêm
ạ
ể ọ
ở http://en.wikipedia.org/wiki/Conways_Game_of_Life.
M c đích c a bài t p này là th c hi n trò ch i Life trong GridWorld. “Bàn c ” chính là là l
i ô, và
ụ
ủ
ậ
ự
ệ
ơ
ờ
ướ
nh ng “quân c ” chính là đ i t
ng Rock (viên đá).
ữ
ờ
ố ượ
Trò ch i đ
c ti n hành theo t ng l
t, hay t ng
ơ ượ
ế
ừ
ượ
ừ b c th i gian
ướ
ờ
. lúc b t đ u m t b
c th i gian,
Ở
ắ ầ
ộ ướ
ờ
t ng viên đá có tr ng thái “s ng” ho c “ch t”. Trên màn hình, màu s c c a viên đá này th hi n tr ng
ừ
ạ
ố
ặ
ế
ắ ủ
ể ệ
ạ
thái c a nó. Tr ng thái c a t ng viên đá l i ph thu c vào tr ng thái c a nh ng viên
ủ
ạ
ủ ừ
ạ
ụ
ộ
ạ
ủ
ữ
lân c n
ậ v i nó.
ớ
M i viên đá có 8 viên lân c n, tr nh ng viên n m d c theo c nh c a l
i ô. Sau đây là lu t ch i:
ỗ
ậ
ừ
ữ
ằ
ọ
ạ
ủ ướ
ậ
ơ
•
N u m t viên đá ch t có đúng 3 viên lân c n, thì nó s s ng l i! N u không, thì nó v n ch t.
ế
ộ
ế
ậ
ẽ ố
ạ
ế
ẫ
ế
•
N u m t viên đá s ng có 2 ho c 3 viên lân c n, thì nó v n s ng. Còn không thì nó ch t đi.
ế
ộ
ố
ặ
ậ
ẫ ố
ế
T quy t c này s có m t vài h qu : N u t t c viên đá đ u ch t r i, thì ch ng có viên nào s ng l i. N u
ừ
ắ
ẽ
ộ
ệ
ả
ế ấ ả
ề
ế ồ
ẳ
ố
ạ
ế
lúc đ u b n có m i m t viên đá s ng, thì nó s ch t đi. Nh ng n u có 4 viên c nh nhau x p thành hình
ầ
ạ
ỗ
ộ
ố
ẽ ế
ư
ế
ạ
ế
vuông thì chúng s gi cho nhau còn s ng, b i v y đây là m t c u trúc b n v ng.
ẽ ữ
ố
ở ậ
ộ ấ
ề
ữ
Đa s các c u hình đ n gi n lúc đ u s nhanh chóng ch đi, ho c đ t đ n m t c u hình n đ nh. Song
ố
ấ
ơ
ả
ầ ẽ
ế
ặ ạ ế
ộ ấ
ổ
ị