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

đ n l

t nó m r ng

ế ượ

ở ộ Object. B t k chu i này có dài nh th nào thì

ấ ể

ư ế

Object v n là “t tiên” chung c a

t t c các l p.

ấ ả

Cây gia đình” c a các l p đ

c g i là th a k l p.

ượ ọ

ừ ế ớ Object th ng xu t hi n trên cùng, và t t c nh ng

ườ

ệ ở

ấ ả

l p “con” thì đ

c x p d

i. Ch ng h n, n u b n nhìn vào tài l u c a

ượ ế

ướ

ế

ệ ủ JFrame, b n s th y r ng ph n

ạ ẽ ấ ằ

c a s th a k cho ra

ủ ự ừ ế

JFrame.

15.8 Thi t k h

ng đ i t

ng

ế ế ướ

ố ượ

Th a k là m t đ c đi m quan tr ng. Có nh ng ch

ng trình s tr nên r t ph c t p n u không di n

ừ ế

ộ ặ

ươ

ẽ ở

ứ ạ

ế

đ t đ

c m t cách g n gàng, đ n gi n b ng đ c đi m nói trên. H n n a, th a k có th giúp t n d ng

ạ ượ

ơ

ơ

ừ ế

l i mã l nh, vì b n có th ch nh l i theo ý thích cách ng x c a nh ng l p s n có mà không c n s a đ i

ể ỉ

ử ủ

ớ ẵ

ầ ử

chúng.

M t khác, th a k có th làm cho ch

ng trình r t khó đ c. Khi b n th y m t l i kích ho t ph

ng

ừ ế

ươ

ộ ờ

ươ

th c, th t khó đ hình dung ra ph

ng th c nào đ

c kích ho t.

ươ

ượ

Ngoài ra, nhi u th có th th c hi n b ng cách th a k cũng có th làm đ

c ho c th m chí t t h n mà

ể ự

ừ ế

ượ

ố ơ

không dùng cách này. Cách làm thay th th

ng g p là

ế ườ

t ng h p

, trong đó các đ i t ng đ c k t h p

ố ượ

ượ ế ợ

t nh ng đ i t

ng có s n, qua đó b sung thêm tính năng mà không c n th a k .

ố ượ

ừ ế

Vi c thi t k nên nh ng đ i t

ng và m i liên h gi a chúng là ch đ nghiên c u c a

ế ế

ố ượ

ệ ữ

ủ ề

ứ ủ thi t k h

ng

ế ế ướ

đ i t

ng

ố ượ , m t lĩnh v c n m ngoài ph m vi cu n sách này. Song n u b n quan tâm, tôi s g i ý b n

ự ằ

ế

ẽ ợ

đ c quy n

Head First Design Patterns, c a nhà xu t b n O’Reilly Media.

ấ ả

15.9 Thu t ng

ph

ng th c đ i t

ng:

ươ

ố ượ

M t ph ng th c đ c kích ho t lên m t đ i t ng, đ ng th i ho t đ ng trên đ i t ng đó. Các

ươ

ứ ượ

ộ ố ượ

ạ ộ

ố ượ

ph ng th c đ i t ng thì không có ch a t khóa

ươ

ứ ố ượ

ứ ừ

static.

ph

ng th c l p:

ươ

ứ ớ

M t ph ng th c có t khóa

ươ

static. Ph ng th c l p không đ c kích ho t trên đ i t ng và

ươ

ứ ớ

ượ

ố ượ

chúng không có đ i t

ng hi n hành.

ố ượ

đ i t

ng hi n hành:

ố ượ

Đ i t

ng mà trên đó m t ph ng th c đ i t

ng đ c kích ho t. Bên trong ph ng th c, đ i

ố ượ

ươ

ứ ố ượ

ượ

ươ

t ng hi n hành đ

c tham chi u đ n b ng

ượ

ượ

ế

ế

ằ this.

ng m:

Th đ c l

t qua không nói đ n, hay đ

c ng ý. Bên trong m t ph ng th c đ i t

ng, b n có th

ứ ượ ướ

ế

ượ

ươ

ứ ố ượ

tham chi u đ n nh ng bi n th c th m t cách ng m (nghĩa là không nh c đ n tên đ i t ng).

ế

ế

ế

ể ộ

ắ ế

ố ượ

t

ng minh:

ườ

Th đ c ghi rõ ra. Bên trong m t ph ng th c l p, t t c nh ng tham chi u đ n bi n th c th

ứ ượ

ươ

ứ ớ

ấ ả

ế

ế

ế

ph i đ c vi t t

ng minh.

ả ượ

ế ườ

15.10 Bài t p

Bài t p 1

T i v các

ả ề

file http://thinkapjava.com/code/CardSoln2.java http://thinkapjava.com/code/CardSoln3.java.
File CardSoln2.java ch a l i gi i nh ng bài t p c a ch

ng tr

c. Nó ch dùng các ph

ng th c l p (tr

ứ ờ

ậ ủ

ươ

ướ

ươ

ứ ớ

các constructor). CardSoln3.java cũng ch a ch

ng trình này, nh ng đa s các ph

ng th c đ u là

ươ

ư

ươ

ứ ề