PDA

View Full Version : OOP 2 Service Pack 1 : Review & Relax



danceswithwolves
24-09-2002, 08:06
Review & Relax

[Khẩu hiệu : Relax today is more important than Review]

Ôn lại một chút, bạn phân biệt được class và object hay không ? Hy vọng bạn còn nhớ class giống như một bản thiết kế mô tả các tính năng và thông số yêu cầu; còn object chính là sự hiện sinh của bản thiết kế ấy. Với class trong tay, người ta có thể sinh ra bao nhiêu object cũng được (lúc đó object sinh ra được gọi là instance* của class). Các object có tương ứng các thuộc tính/tính chất (properties) và phương thức/hành vi (methods). Một cách ngắn gọn, class là trừu tượng (abstract), còn object là cụ thể (concrete). Sau đây là các ví dụ :

* instance thường được các dịch giả Ngọc Anh Thư Press (sắp bị FPT-Aptech đại diện Aptech khởi kiện về việc ăn cắp tác quyền quyển OOP with Java - Aptech) dịch là minh dụ. Tớ thấy ngớ ngẩn làm sao ấy nhưng lại cũng không tìm được từ tiếng Việt thích hợp nên xin phép không dịch từ này.

1. Các nhà thiết kế ôtô đưa ra một bản thiết kế loại xe LOOF mui trần tuyệt đẹp, nhà sản xuất Tlik dựa trên bản thiết kế ấy xuất xưởng hai chiếc Katrina (màu xanh) và Phoenix (màu đỏ). Nếu như bản thiết kế có mô tả rằng loại xe LOOF này ngoài các chức năng bình thường còn có thể chạy Twin Turbo mode (TTM) thì thề có Chúa, chắc chắn cả Katrina lẫn Phoenix đều chạy được TTM. Dễ thấy, bản thiết kế xe là một class (được đặt tên là LOOF), còn hai chiếc Katrina và Phoenix là 2 objects được sinh ra từ class LOOF, tuân theo những tiêu chuẩn được mô tả bởi mẫu LOOF. Tuy nhiên đừng cho rằng 2 object này giống hệt nhau mà lầm, vì giá trị các thuộc tính của ‘họ’ khác nhau (ví dụ : màu xe).

2. Chúa sau khi thiết kế (design) class Male và khởi tạo (initialize) một object Adam, đã thiết kế ra một class khác hấp dẫn sinh động hơn nhiều. Người gọi lớp này là Female, và khởi tạo ngay một object Eva. Chúng ta chẳng hơi đâu mà xem xét đến ông Adam lẫn class Male của ổng, hãy để sức mà quan tâm đến class Female, cụ thể là bản thiết kế rút gọn sau :



Class Female
(properties)
Height
Weight
Hair
SkinColor
Mood
VoiceTone
VoiceRange
SensType
...
(methods)
Scream
Shout
Cry
Moan
Smile
...
(events - cái này sẽ được nói về sau,
nôm na là các biến cố)
BeUnderSunShine
BeCriticized
BeBrokenUp
...
End Class


Chúa tạo ra hàng tỷ tỷ phụ nữ trên trái đất, và mỗi phụ nữ dù ở đâu hay thuộc dân tộc gì cũng đều là... phụ nữ (ý tớ là thuộc class Female). Mấy chị châu Phi có property SkinColor = Black trong khi các cô châu Âu có property SkinColor = White. Ca sĩ Ánh Tuyết có property VoiceTone = VeryHigh nên giọng mới cao như vậy. Giả sử cô Candy nhà ta (cũng thuộc class Female) mà rơi vào 'biến cố' bị kick thì event BeBrokenUp sẽ được raise, từ đó có thể phát sinh ra các methods Moan hay Cry tuỳ giá trị property SensType. Nếu các cô các chị đi nắng thì event BeUnderSunShine sẽ được raise lên, dẫn đến kết quả là màu da giảm độ sáng (SkinColor = SkinColor - 1).

Kết luận : với các objects được sinh ra từ cùng một class thì các tính chất và hành vi tổng thể là như nhau, nhưng được phân biệt bởi các giá trị thuộc tính đặc thù của mỗi object.

Old Shark
26-09-2002, 00:37
Man, lớp Female đó có cái method Moan hấp dẫn quá. Khi nào thì dùng phương thức đó vậy? :D

vikhoa
26-09-2002, 00:58
Đọc xong bài này, muốn kiếm DWW vặt trụi lông mấy con sói đi cho SkinColor = BloodColor luôn !

Và event BeBeaten cũng sẽ được áp dụng cho DWW :D hè hè

danceswithwolves
27-09-2002, 06:17
a di đà phật ! ông già mập (old shark - dịch thế chuẩn chưa ?) nghĩ xa xôi quá. Còn bác vikhoa@, bác mà dọa nữa thì tớ sẽ cho bác thường trú dài hạn trong các bài sắp tới (đe dọa lại :)).... hehehe....

Quý
15-10-2002, 18:11
Một bài học hấp dẫn