đ 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 và 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à
ứ
ươ
ư
ố
ươ
ứ ề