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

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

ơ

ầ ẽ

ế

ặ ạ ế

ộ ấ