Duy Do’s WebLog

Imagination is more important than knowledge

Bạn hiểu như thế nào về OOP (tiếp theo)

Trong phần này chúng ta sẽ tìm hiểu về các đối tượng (object) trong OOP. Nếu chưa đọc phần đầu của bài viết này thì các bạn có thể đọc ở đây

Đối tượng (object) là thành phân cơ bản nhất, là chìa khóa giúp chúng ta bước vào thế giới của các ngôn ngữ lập trình hướng đối tượng.

Các bạn thử nhìn xung quanh mình xem, có rất nhiều những vật thể như chiếc ghế, cái TV, con chó hay con mèo hoặc chiếc xe máy…Đây chính là những đối tượng trong thế giới thực của chúng ta, các đối tượng này đều có 2 tính chất: trạng thái (state) hành vi (behavior).

Ví dụ,

Con chó thì có:

  • thuộc tính (state): tên, màu sắc.
  • hành vi (behavior): sủa, đi, chạy.

Chiếc xe máy cũng có:

  • thuộc tính: tốc độ, số, màu sắc…
  • hành vi: đổi số, chạy…

Xác đinh các trạng thái và hành vi của các đối tượng trong thế giới thực là một trong những cách tốt nhất để chúng ta hiểu được thuật ngữ đối tượng (object) trong ngôn ngữ lập trình hướng đối tượng.

Đối với mỗi đối tượng, hãy tự hỏi mình 2 câu hỏi và trả lời nó:

  1. Những trạng thái (state) nào mà đối tượng có thể rơi vào?
  2. Những hành vi (behavior) nào mà đối tượng có thể thực hiện?

Các bạn cùng tôi xác định trạng thái và hành vi của một bóng đèn điện thử xem :-)

Chiếc đèn điện chỉ có 1 trong 2 trạng thái tắt (off) và mở (on), còn hành vi chỉ là bật đèn (turn on) và tắt đèn (turn off).

Còn chiếc radio thì sao? Nó có thêm một số trạng thái (on, off, âm lượng, kênh) và hành vi (bật, mở, tăng giảm âm lượng, thay đổi kênh).

Các bạn hãy để ý rằng các đối tượng trong thế giới thực có thể chứa một đối tượng khác, ví dụ bên trong căn nhà có rất nhiều đồ đạc như tivi, bàn ghế…

Tất cả những khái niệm về các đối tượng trong thế giới thực mà tôi nói với các bạn sẽ được đưa vào trong thế giới của các ngôn ngữ lập trình. Điều này có nghĩa là các đối tượng trong các ngôn ngữ lập trình cũng giồng như các đối tượng trong thế giới thực.

Đối tượng trong thế giới lập trình cũng có state và behavior. State ở đây là thuộc tính (field hay property), còn behavior chính là các phương thức (method hay function). Các phương thức được sử dụng để thay đổi các thuộc tính bên trong đối tượng, và dùng để giao tiếp với các đối tượng khác.

Các thuộc tính bên trong của đối tượng nên giấu đi, không cho các đối tượng bên ngoài nhìn thấy được. Mọi hành động tác động lên các thuộc tính này phải thông qua các phương thức của đối tượng, không tác động trực tiếp lên các thuộc tính này từ bên ngoại. Khái niệm này được gọi là tính đóng gói dữ liệu (data encapsulation) của đối tượng, là một nguyên lý cơ bản của lập trình hướng đối tượng (principle of oop).

Thật dễ hiểu phải không các bạn ;-)

Trong các bài viết sau chúng ta sẽ bàn về các nguyên lý trong lập trình hướng đối tượng.

Happy Coding

Duy Do

22/04/2008 - Đăng bởi Duy Do | Java, Software Engineering/Công Nghệ Phần Mềm | | 7 phản hồi

7 phản hồi »

  1. :^^
    Buồn buồn anh pingback tới website của em nha.

    Mà anh dịch từ trang của SUN về à. Cả cái ví dụ cũng y chang :P

    Comment bởi Shellingfox | 24/04/2008 | Trả lời

  2. Lúc trc học Java anh hay đọc tài liệu của Sun, những ví dụ này rất gần gũi và dễ hiểu với chúng ta nên a đưa vô.
    Siêng viết blog đi cho a qua đọc với :D

    Comment bởi Duy Do | 24/04/2008 | Trả lời

  3. Duy oi sao ko viet tiep the, dang doi de doc tiep ne` :D

    Comment bởi Thao | 15/05/2008 | Trả lời

  4. Xin lỗi đã spam, mình có 1 số thắc mắc bên phần này.
    http://doquocduy.wordpress.com/2008/04/01/design-patterns-l%e1%ba%adp-trinh-vien-c%e1%ba%a7n-ph%e1%ba%a3i-bi%e1%ba%bft/#comment-82

    Comment bởi nguoidalatcuoicung | 10/07/2008 | Trả lời

  5. :D

    Comment bởi B | 27/08/2008 | Trả lời

  6. Đây là những gì mính muốn đọc. Cách diễn giải của bạn cũng rất dễ hiểu và gần gũi. Rất mong những entry nói về OOP khác! Thank you! ^^

    Comment bởi Dat Truong | 03/10/2008 | Trả lời

  7. [...] Cập nhât: Phần 2 [...]

    Pingback bởi Bạn hiểu như thế nào về OOP? « Duy Do’s WebLog | 25/11/2008 | Trả lời


Để lại phản hồi