B NH STACK VÀ NH HEAP (JAVA) Ớ
CÁC NGUYÊN TC TR CTCA LP TRÌNH HẮ ỦẬ ƯỚNG Đ IỐ TƯỢNG
đ kh i t o giá tr cho các thu c tính c a đ i tể ở ạ ị ộ ủ ố ượng. K t đĩ, đ i tể ừ ố ượng b t đ u t n t i, nĩ g i và nh n các thơng đi p, và cu i cùng thì nĩ b h yắ ầ ồ ạ ử ậ ệ ố ị ủ
đi khi khơng cịn c n đ n n a. Trong khi đ i tầ ế ữ ố ượng t n t i, nĩ gi đ nhồ ạ ữ ị
danh và tr ng thái c a mình. M i đ i tạ ủ ỗ ố ượng cĩ m t đ nh danh riêng và cĩộ ị
b thu c tính riêng, đ c l p v i các đ i tộ ộ ộ ậ ớ ố ượng khác thu c cùng m t l p.ộ ộ ớ
Trong th c t , m i đ i tự ế ỗ ố ượng cĩ v trí riêng trong b nh .ị ộ ớ
Các đ i tố ượng dùng các thơng đi p (message) đ liên l c v i nhau.ệ ể ạ ớ
Nhìn t phừ ương di n l p trình, vi c g i m t thơng đi p t i m t đ i tệ ậ ệ ử ộ ệ ớ ộ ố ượng chính là g i m t phọ ộ ương th c c a đ i tứ ủ ố ượng đĩ, cịn vi c m t đ i tệ ộ ố ượng nh n đậ ược m t thơng đi p chính là vi c m t phộ ệ ệ ộ ương th c c a nĩ đứ ủ ược m t đ i tộ ố ượng khác g i. Chọ ương trình khi ch y là m t t p các đ i tạ ộ ậ ố ượng, m i đ i tỗ ố ượng g i thơng đi p cho các đ i tử ệ ố ượng khác trong h th ng vàệ ố
đáp ng các thơng đi p mà mình nh n đứ ệ ậ ược. Thơng thường, m t thơngộ
đi p đệ ược g i b ng m t l i g i phử ằ ộ ờ ọ ương th c trong chứ ương trình. Tuy nhiên, các thơng đi p cĩ th xu t phát t h đi u hành ho c mơi trệ ể ấ ừ ệ ề ặ ường ch y chạ ương trình. Ch ng h n khi ngẳ ạ ười dùng click chu t vào m t nútộ ộ
b m t i m t c a s chấ ạ ộ ử ổ ương trình, m t thơng đi p sẽ độ ệ ược g i đ n đ iử ế ố
tượng đi u khi n nút b m đĩ thơng báo r ng cái nút đĩ đã b nh n.ề ể ấ ằ ị ấ
CÁC NGUYÊN T C TR C T C A L P TRÌNH HẮ Ụ Ộ Ủ Ậ ƯỚNG Đ IỐTƯỢNG TƯỢNG
L p trình hậ ướng đ i tố ượng cĩ ba nguyên t c tr c t: đĩng gĩi, th aắ ụ ộ ừ
k và đa hình, cịn tr u tế ừ ượng hĩa là khái ni m n n t ng.ệ ề ả
Tr u từ ượng hĩa (abstraction) là m t c ch cho phép bi u di n m tộ ơ ế ể ễ ộ
tình hu ng ph c t p trong th gi i th c b ng m t mơ hình đố ứ ạ ế ớ ự ằ ộ ược đ n gi nơ ả
hĩa. Nĩ bao g m vi c t p trung vào các tính ch t quan tr ng c a m t đ iồ ệ ậ ấ ọ ủ ộ ố
tượng khi ph i làm vi c v i lả ệ ớ ượng l n thơng tin. Ví d , đ i v i m t conớ ụ ố ớ ộ
mèo trong ng c nh m t c a hàng bán thú c nh, ta cĩ th t p trung vàoữ ả ộ ử ả ể ậ
gi ng mèo, màu lơng, cân n ng, tu i, đã tiêm phịng d i hay ch a, và bố ặ ổ ạ ư ỏ
qua các thơng tin khác nh dung tích ph i, n ng đ đư ổ ồ ộ ường trong máu, huy t áp, cịn đ i v i m t con mèo trong ng c nh b nh vi n thú y thì l iế ố ớ ộ ữ ả ệ ệ ạ
là m t chuy n khác. Các đ i tộ ệ ố ượng ta thi t k trong chế ế ương trình OOP sẽ là các tr u từ ượng hĩa theo nghĩa đĩ, ta b qua nhi u đ c đi m c a đ i tỏ ề ặ ể ủ ố ượng th c và ch t p trung vào các thu c tính quan tr ng cho vi c gi i m t bàiự ỉ ậ ộ ọ ệ ả ộ
tốn c th . Ngụ ể ười ta g i m t tr u tọ ộ ừ ượng hĩa là m t mơ hình c a m t đ iộ ủ ộ ố
tượng ho c khái ni m trong th gi i th c.ặ ệ ế ớ ự
Tr u từ ượng hĩa là m t trong nh ng cơng c c b n c a t t c cácộ ữ ụ ơ ả ủ ấ ả
phương pháp l p trình, khơng ch l p trình hậ ỉ ậ ướng đ i tố ượng. Khi vi t m tế ộ
chương trình gi i m t bài tốn c a th gi i th c, tr u tả ộ ủ ế ớ ự ừ ượng hĩa là m tộ
cách đ mơ hình hĩa bài tốn đĩ.ể
Ví d , khi ta vi t m t chụ ế ộ ương trình qu n lý s đ a ch , ta sẽ dùng cácả ổ ị ỉ
tr u từ ượng hĩa nh tên, đ a ch , s đi n tho i, th t b ng ch cái, và cácư ị ỉ ố ệ ạ ứ ự ả ữ
khái ni m liên quan t i m t s đ a ch . Ta sẽ đ nh nghĩa các thao tác đ xệ ớ ộ ổ ị ỉ ị ể ử
lý d li u ch ng h n nh thêm m t m c tên m i ho c s a m t đ a ch .ữ ệ ẳ ạ ư ộ ụ ớ ặ ử ộ ị ỉ
Trong ng c nh l p trình, tr u tữ ả ậ ừ ượng hĩa là mơ hình hĩa th gi i th cế ớ ự
theo cách mà nĩ cĩ th để ược cài đ t dặ ướ ại d ng m t chộ ương trình máy tính. Phương pháp hướng đ i tố ượng tr u từ ượng hĩa th gi i th c thànhế ớ ự
các đ i tố ượng và tương tác gi a chúng v i các đ i tữ ớ ố ượng khác. Vi c mơệ
hình hĩa tr thành mơ hình hĩa các đ i tở ố ượng tham gia bài tốn – m t cáiộ
nhi t k , m t ngệ ế ộ ười ch tài kho n ngân hàng, m t s đ a ch … m i đ iủ ả ộ ổ ị ỉ ỗ ố
tượng c n cĩ đ các thu c tính và phầ ủ ộ ương th c đ th c hi n đứ ể ự ệ ượ ấ ảc t t c các d ch v mà nĩ đị ụ ược yêu c u.ầ
Đĩng gĩi (encapsulation): Các tr u từ ượng hĩa c a nh ng gì cĩ liênủ ữ
quan đ n nhau đế ược đĩng gĩi vào trong m t đ n v duy nh t. Các tr ngộ ơ ị ấ ạ
thái và hành vi c a các tr u tủ ừ ượng hĩa được b c l i trong m t kh i g i làọ ạ ộ ố ọ
l p. C th , sau khi đã xác đ nh đớ ụ ể ị ược các đ i tố ượng, r i đ n các thu c tínhồ ế ộ
và hành đ ng c a m i đ i tộ ủ ỗ ố ượng, m c tiêu là đĩng gĩi trong m i đ i tụ ỗ ố ượng các tính năng c n thi t đ nĩ cĩ th th c hi n đầ ế ể ể ự ệ ược vai trị c a mình trongủ
chương trình. Thí d , m t đ i tụ ộ ố ượng nhi t k c n cĩ nh ng gì c n thi t đệ ế ầ ữ ầ ế ể
cĩ th đo nhi t đ , l u tr s li u c a các l n đo nhi t đ trể ệ ộ ư ữ ố ệ ủ ầ ệ ộ ước và cho phép truy v nấ các số li uệ này. Đ nh nghĩa l p là cơng c l p trình chính y u cho vi c th c hi n nguyênị ớ ụ ậ ế ệ ự ệ
t c đĩng gĩi. M t l p là mơ t v m t t p h p các đ i tắ ộ ớ ả ề ộ ậ ợ ố ượng cĩ cùng các thu c tính, hành vi.ộ
Thu c tính (attribute)ộ dùng đ l u tr thơng tin tr ng thái c a m tể ư ữ ạ ủ ộ
đ i tố ượng. M t thu c tính cĩ th ch đ n gi n là m t bi n Boolean l u trộ ộ ể ỉ ơ ả ộ ế ư ữ
tr ng thái t t ho c b t, hay ph c t p h n khi chính nĩ l i là m t đ iạ ắ ặ ậ ứ ạ ơ ạ ộ ố
tượng khác. Các thu c tính độ ược khai báo trong đ nh nghĩa l p và đị ớ ược g iọ
là các bi n c a th c th (instance variable), g i t t là bi n th c th . Chúngế ủ ự ể ọ ắ ế ự ể
cịn đượ ọc g i là các thành viên d li u (data member), hay trữ ệ ường (field). Tr ng thái (state)ạ ph n ánh các giá tr hi n t i c a các thu c tính c aả ị ệ ạ ủ ộ ủ
Hành vi (behavior) là ho t đ ng c a m t đ i tạ ộ ủ ộ ố ượng mà cĩ th nhìnể
th y đấ ượ ừc t bên ngồi. Trong đĩ cĩ vi c đ i tệ ố ượng thay đ i tr ng thái raổ ạ
sao ho c vi c nĩ tr v thơng tin tr ng thái khi nĩ đặ ệ ả ề ạ ược thơng đi p yêuệ
c u.ầ
Phương th c (method) là m t thao tác hay d ch v đứ ộ ị ụ ược th c hi n đ i v iự ệ ố ớ
đ i tố ượng khi nĩ nh n thơng đi p tậ ệ ương ng. Các phứ ương th c cài đ tứ ặ
hành vi c a đ i tủ ố ượng và được đ nh nghĩa trong đ nh nghĩa l p. Phị ị ớ ương th c cịn đứ ược g i b ng các cái tên khác nh : hàm thành viên (memberọ ằ ư
function) – g i t t là 'hàm', thao tác (operation), d ch v (service).ọ ắ ị ụ
Khái ni m đĩng gĩi cịn đi kèm v i khái ni m che gi u thơng tinệ ớ ệ ấ
(information hiding) nghĩa là che gi u các chi ti t bên trong c a m t đ iấ ế ủ ộ ố
tượng kh i th gi i bên ngồi. Ch ng h n khi dùng m t cái c u dao đi n,ỏ ế ớ ẳ ạ ộ ầ ệ
đ i v i ngố ớ ườ ử ụi s d ng, nĩ ch là m t cái h p mà khi g t c n sẽ cĩ tác d ngỉ ộ ộ ạ ầ ụ
ng t và n i đi n và cái h p cĩ kh năng t ng t đi n khi quá t i. Ngắ ố ệ ộ ả ự ắ ệ ả ười dùng khơng bi t và khơng c n bi t các m ch đi n bên trong đế ầ ế ạ ệ ược thi t kế ế
ra sao, c ch phát hi n quá t i nh th nào. Nh ng chi ti t đĩ đơ ế ệ ả ư ế ữ ế ược gi uấ
bên trong, cịn t bên ngồi ta ch nhìn th y c u dao là m t cái h p cĩ c nừ ỉ ấ ầ ộ ộ ầ
g t.ạ
Nĩi theo phương di n l p trình, nhìn t bên ngồi m t mơ-đun chệ ậ ừ ộ ỉ
th y đấ ược các giao di n. Các l p trình viên t do cài đ t chi ti t bên trong,ệ ậ ự ặ ế
v i ràng bu c duy nh t là tuân theo giao di n đã đớ ộ ấ ệ ược quy ướ ừ ước t tr c. Ta cĩ th th c hi n nguyên t c đĩng gĩi v i t t c các ngơn ng l p trìnhể ự ệ ắ ớ ấ ả ữ ậ
hướng đ i tố ượng cũng nh các ngơn ng th t c. Tuy nhiên, ch các ngơnư ữ ủ ụ ỉ
ng hữ ướng đ i tố ượng m i cung c p c ch cho phép che gi u thơng tin,ớ ấ ơ ế ấ
ngăn khơng cho bên ngồi truy nh p vào chi ti t bên trong c a mơ-đun.ậ ế ủ
Th a k (inheritance)ừ ế là quan h mang tính phân c p mà trong đĩệ ấ
các thành viên c a m t l p đủ ộ ớ ược k th a b i các l p đế ừ ở ớ ược d n xu t tr cẫ ấ ự
ti p ho c gián ti p t l p đĩ. Đây là c ch cho phép đ nh nghĩa m t l pế ặ ế ừ ớ ơ ế ị ộ ớ
m i d a trên đ nh nghĩa c a m t l pớ ự ị ủ ộ ớ cĩ s n, sao cho t t c các thành viênẵ ấ ả
c a l p "cũ" (l p c s hay l p cha) cũng cĩ m t trong l p m i (l p d nủ ớ ớ ơ ở ớ ặ ớ ớ ớ ẫ
xu t hay l p con) và các đ i tấ ớ ố ượng thu c l p m i cĩ th độ ớ ớ ể ược s d ngử ụ
thay cho đ i tố ượng c a l p cũ b t c đâu. Th a k là m t hình th c táiủ ớ ở ấ ứ ừ ế ộ ứ
sử d ng ph n m m, trong đĩ m t l p m i đụ ầ ề ộ ớ ớ ược xây d ng b ng cách h pự ằ ấ
th các thành viên c a m t l p cĩ s n và b sung nh ng tính năng m iụ ủ ộ ớ ẵ ổ ữ ớ
ho c s a tính năng cĩ s n.ặ ử ẵ Nĩi cách khác, xu t phát t m t l p mơ hìnhấ ừ ộ ớ
hĩa m t khái ni m t ng quát h n, ch ng h n Shape, ta cĩ th dùng quanộ ệ ổ ơ ẳ ạ ể
h th a k đ xây d ng các l p mơ hình hĩa các khái ni m c th h n,ệ ừ ế ể ự ớ ệ ụ ể ơ
ch ng h n Circle, Triangle. B ng cách này, ta cĩ th sẳ ạ ằ ể ử d ng giao di n cũngụ ệ
Đa hình (polymorphism), theo nghĩa t ng quát, là kh năng t n t i ổ ả ồ ạ ở
nhi u hình th c. Trong hề ứ ướng đ i tố ượng, đa hình đi kèm v i quan h th aớ ệ ừ
k và nĩ cĩ nghĩa r ng cùng m t cái tên cĩ th đế ằ ộ ể ược hi u theo các cáchể
khác nhau tùy t ng tình hu ng.ừ ố Các đ i tố ượng thu c các l p d n xu t khácộ ớ ẫ ấ
nhau cĩ th để ược đ i x nh nhau, nh th chúng là các đ i tố ử ư ư ể ố ượng thu cộ
l p c s , ch ng h n cĩ th đ t các đ i tớ ơ ở ẳ ạ ể ặ ố ượng Triangle và Circle trong cùng m t c u trúc d li u dành cho Shape, ho c dùng cùng m t l i g i hàmộ ấ ữ ệ ặ ộ ờ ọ
rotate cho các đ i tố ượng Triangle hay Circle. Và khi nh n đậ ược cùng m tộ
thơng đi p đĩ, các đ i tệ ố ượng thu c các l p khác nhau hi u nĩ theo nh ngộ ớ ể ữ
cách khác nhau. Ví d , khi nh n đụ ậ ược thơng đi p "rotate", các đ i tệ ố ượng Triangle và Amoeba th c hi n các phự ệ ương th c rotate() khác nhau.ứ
CÁC KỸ THU T PCR VÀ NGẬ Ứ D NGỤKỸ THU T RFLPẬ