Tính đóng gói t c là quy t c yêu c u tr ng thái bên trong c a m t đ i ứ ắ ầ ạ ủ ộ ố
t ng đ c b o v và tránh truy c p đ c t code bên ngoài (t c là code ượ ượ ả ệ ậ ượ ừ ứ
bên ngoài không th tr c ti p nhìn th y và thay đ i tr ng thái c a đ i ể ự ế ấ ổ ạ ủ ố
t ng đó). B t c truy c p nào t i tr ng thái bên trong này b t bu c ph i ượ ấ ứ ậ ớ ạ ắ ộ ả
thông qua m t public API đ đ m b o tr ng thái c a đ i t ng luôn h p lộ ể ả ả ạ ủ ố ượ ợ ệ
b i vì các public API ch u trách nhi m th c hi n ki m tra tính h p l cũng ở ị ệ ự ệ ể ợ ệ
nh trình t c p nh t tr ng thái c a đ i t ng đó.ư ự ậ ậ ạ ủ ố ượ
Nói chung tr ng thái đ i t ng không h p l th ng do: ch a đ c ki m ạ ố ượ ợ ệ ườ ư ượ ể
tra tính h p l , các b c th c hi n không đúng trình t ho c b b qua nên ợ ệ ướ ự ệ ự ặ ị ỏ
trong OOP có m t quy t c quan tr ng c n nh đó là ph i luôn khai báo các ộ ắ ọ ầ ớ ả
tr ng thái bên trong c a đ i t ng là private và ch cho truy c p qua các ạ ủ ố ượ ỉ ậ
public/protected method/property. Khi s d ng các đ i t ng ta không c n ử ụ ố ượ ầ
bi t bên trong nó làm vi c nh th nào, ta ch c n bi t các public API là gì ế ệ ư ế ỉ ầ ế
và đi u này đ m b o nh ng gì thay đ i đ i t ng s đ c ki m tra b i ề ả ả ữ ổ ố ượ ẽ ượ ể ở
các quy t c logic bên trong, tránh đ i t ng b s d ng không chính xác.ắ ố ượ ị ử ụ
Nguyên lý đóng gói nh th này đâu ta cũng có th b t g p ví d nh ư ế ở ể ắ ặ ụ ư
thi t k viên thu c, chúng ta ch bi t nó ch a b nh này, b nh kia và m t sế ế ố ỉ ế ữ ệ ệ ộ ố
thành ph n chính còn c th bên trong nó có nh ng gì thì hoàn toàn không ầ ụ ể ữ
bi t.ế
Tính k th a (Inheritance)ế ừ
Khi b t đ u xây d ng ng d ng chúng ta s b t đ u vi c thi t k các l p, ắ ầ ự ứ ụ ẽ ắ ầ ệ ế ế ớ
thông th ng chúng ta s th y có tr ng h p m t s l p d ng nh có ườ ẽ ấ ườ ợ ộ ố ớ ườ ư
quan h v i nh ng l p khác, chúng có nh ng đ c tính khá gi ng nhau. VD: ệ ớ ữ ớ ữ ặ ố
3 l p AndroidPhone, IPhone, WindowsPhoneớ
M i l p đ u đ i di n cho m t lo i smartphone khác nhau nh ng l i có ỗ ớ ề ạ ệ ộ ạ ư ạ
nh ng thu c tính gi ng nhau. Thay vì sao chép nh ng thu c tính này, s ữ ộ ố ữ ộ ẽ
hay h n n u ta đ t chúng m t n i có th dùng b i nh ng l p khác. Đi u ơ ế ặ ở ộ ơ ể ở ữ ớ ề
này đ c th c hi n b i tính k th a trong OOP: chúng ta có th đ nh nghĩaượ ự ệ ở ế ừ ể ị
l p cha – base class (trong tr ng h p này là Smartphone ) và có nh ng l p ớ ườ ợ ữ ớ
con k th a t nó (derived class), t o ra m t m i quan h cha/con.ế ừ ừ ạ ộ ố ệ