Tổng quan về Java: Lập trình hướng đối tượng

Bài viết này giới thiệu tổng quan về đặc điểm hướng đối tượng trong ngôn ngữ lập trình Java.
Tài liệu tham khảo:
Chapter 2, Patrick Naughton and Herbertz Schidt, “Java –2 The Complete Reference” , Fifth edition, Tata McGraw-Hill Publishing Company Limited.

Bản quyền:  88x31

Nguồn: Lê Bá Dũng’s Blog

———————————————————

Lập trình hướng đối tượng là cốt lõi của Java. Trên thực tế tất cả các chương trình viết bằng Java đều là hướng đối tượng chứ không phải là một tùy chọn như trong C++.

Hai mô hình lập trình
Tất cả các chương trình máy tính đều bao gồm hai thành phần: mã lệnhdữ liệu. Một vài chương trình được viết theo hướng quan tâm đến mã lệnh, nghĩa là quan tâm đến “Cái gì đang xảy ra”, và các chương trình khác có thể được viết theo hướng quan tâm đến dữ liệu, nghĩa là quan tâm đến “Cái gì đang bị tác động đến”. Hai mô hình này ảnh hưởng đến cách xây dựng chương trình. Cách đầu tiên gọi là mô hình hướng thủ tục. Theo cách tiếp cận này một chương trình được xem như là một dãy là bước tuần tự. Các ngôn ngữ lập trình cấu trúc như C sử dụng mô hình này. Tuy nhiên, vấn đề đối với cách tiếp cận này là kích thước lớn và tính phức tạp của chương trình. Cách tiếp cận thứ hai được gọi là lập trình hướng đối tượng. Lập trình hướng đối tượng tổ chức một chương trình theo xoay quanh dữ liệu của nó và một tập các giao tiếp được định nghĩa tác động đến dữ liệu đó.

Sự trừu tượng hóa
Một thành phần cơ bản của lập trình hướng đối tượng là sự trừu tượng hóa. Con người quản lý tính phức tạp thông qua sự trừu tượng hóa. Ví dụ, ta không nghĩ về chiếc xe hơi như là một tập gồm hàng ngàn chi tiết riêng biệt. Ta xem nó là một đối tượng cụ thể với các đặc điểm riêng của nó. Sự trừu tượng hóa này cho phép ta sử dụng chiếc xe hơi mà không bị rối rắm bởi sự phức tạp của các phần tạo nên chiếc xe.
Một cách hữu hiệu để quản lý sự trừu tượng hóa là sử dụng sự phân lớp. Điều này cho phép ta phân tầng sự phức tạp của hệ thống, chia nhỏ thành các phần có thể quản lý được. Ví dụ, xe hơi được xem là một đối tượng. Chi tiết hơn, xe hơi bao gồm nhiều hệ thống con như: tay lái, ghế ngồi, dàn âm thanh. Giàn âm thanh bao gồm máy nghe CD, băng đĩa …

Ba yếu tố cơ bản của lập trình hướng đối tượng
Tất cả các ngôn ngữ lập trình hướng đối tượng đều cung cấp các cơ chế cho phép bạn cài đặt mô hình hướng đối tượng. Đó là tính đóng gói, tính kế thừatính đa hình.

Tính đóng gói
Đây là cơ chế kết hợp giữa mã lệnh với dữ liệu mà nó xử lý, và tránh bị ảnh hưởng bởi sự can thiệp từ bên ngoài. Tính đóng gói được xem như là một lớp vỏ bọc bảo vệ mã lệnh và dữ liệu tránh khỏi sự truy cập tùy tiện từ các mã lệnh khác. Việc truy cập được điều khiển một cách chặt chẽ thông các các thủ tục đã được định nghĩa.

Tính kế thừa
Tính kế thừa là quá trình mà một đối tượng nhận được các tính chất từ một đối tượng khác. Thông thường, mỗi đối tượng cần được định nghĩa tất cả các tính chất của nó. Tuy nhiên, bằng cách sử dụng sự kế thừa, mỗi đối tượng chỉ cần được định nghĩa các tính chất riêng biệt của nó, các tính chất chung được định nghĩa ở trong đối tượng mà nó kế thừa.

Tính đa hình
Đây là đặc điểm cho phép một hình thức giao tiếp có thể được sử dụng cho nhiều hành động có tính chất giống nhau. Việc thực thi hành động cụ thể nào đó tùy thuộc vào tình huống xảy ra. Điều này làm giảm tính phức tạp của chương trình.

Kết hợp tính đóng gói, tính kế thừa và tính đa hình
Sự kết hợp các yếu tố này tạo ra một môi trường lập trình tốt hơn so với mô hình lập trình hướng thủ tục. Tính kế thừa giúp cho việc sử dụng lại mã lệnh đã được cài đặt và kiểm tra trước đó. Tính đóng gói cho phép bạn thay đổi sự cài đặt mà không phải quan tâm nhiều đến mã lệnh, bạn chỉ cần quan tâm đến sự giao tiếp với các lớp đã có. Tính đa hình cho phép bạn viết các chương trình rõ ràng, hợp lý, và linh hoạt.

17 thoughts on “Tổng quan về Java: Lập trình hướng đối tượng

  1. Chao thay : ve java co ban em co 1 so van de chua hieu mong thay chi giup : lam sao ta co the truu tuong hoa du lieu mot cach chinh xac de khi chung ta viet code cho dung ? Xin cam on thay

  2. Hien nay em dang can 1 ngan hang trac nghiem Java co ban bang tieng viet . Neu tieng anh thi em load tren net cung nhieu , nhung co ngan hang cau hoi nao bang tieng viet chuan thi thay co the share giup dum em duoc ko ? Cam on thay nhieu va bai tap kham khao java co ban

  3. chao thay a!em ten Van Cuong!
    thua thay!em co 1 so viec can su giup do cua thay!
    neu co the duoc xin thay bot chut thoi jan jup dum em 1 chut!
    hien nay em dang tim hieu ve Java,nhung chua co kien thuc lam,em muon thu viet 1 chuong trinh “QUAN LY DANH BA”,DANH BA do co the nhap thong tin vao,Edit thong tin,xoa thong tin,hien hinh anh nguoi trong DANH BA,em da suy nghi rat nhieu nhung voi kien thuc ve JAVA cua em con rat yeu, nen mong thay co the jup do dum cho em!Co the chi cho em cach viet giao dien cua chuong trinh nay duoc ko ah?
    Xin cam on thay!

  4. Chào các bạn, rất vui khi các bạn ghé thăm blog của mình.

    @ho thi da thao: Vấn đề trừu tượng hóa dữ liệu là vấn đề cơ bản của lập trình hướng đối tượng (chứ không phải chỉ riêng ngôn ngữ lập trình java). Kết quả của trừu tượng hóa dữ liệu không phải là duy nhất mà tùy thuộc vào người thiết kế. Bạn chỉ có thể tuân theo một số quy tắc nhất định để có thể đạt được kết quả tốt nhất đảm bảo không mất mát và không dư thừa thông tin sau khi trừu tượng hóa dữ liệu.
    Mình không có ngân hàng trắc nghiệm Java bằng tiếng việt.

    @Van Cuong: Mình sẽ gửi cho bạn ebook cơ bản về Java trong đó có vấn đề bạn quan tâm.
    Nếu có gì cần hỏi các bạn gửi vào email của mình nhé.

  5. Chào thẩy . Hiện nay em đang theo học ngành lập trình viên .
    em có 1 số bài tập rất khó . Em mong thầy có thể chỉ giúp em

  6. Chào thầy , em vừa tập tành lập trình và đang tìm hiểu về java. Thầy có tài liệu về java và ngân hàng câu hỏi trắc nghiệm về java ,thầy có thể cho em xin làm tư liệu tìm hiểu .Thầy gởi qua mail dùm em .Cám ơn thầy trước

  7. Thua thay em dang on thi mon lap trinh huong doi tuong. Lay Java de nghien cuu. Thua thay, thay co the gui cho em mot so de thi trac nghiem Java duoc khong a. Em cam on thay.

  8. chao thay em dang lam bai tap lon ve lap trinh huong doi tuong cua java.thua thay, thay co the gui cho em tai lieu ve lap trinh huong doi tuong trong java ko ah?Em cam on thay.

  9. Em dang hoc java ma em thay kho qua khong lam duoc?Mong Thay Dung giup do em voi!Em chan thanh cam on thay.

  10. Em đang tìm hiểu về Java. Thầy có thể gửi cho em tài liệu ji` về lập trình hướng đối tượng Java ko ạ?

  11. em đang học về java nhưng có rất nhiều cái mới mẻ với em,Thầy có thể chỉ em một số cấu trúc lệnh trong java ko ạ hay là tài liệu cũng được thầy ạ.Em cảm ơn thầy nhiều

  12. Chào thầy. Em đang nghiên cứu về Java. Có người khuyên em đọc cuốn Thinking In Java trước. Em đang nghiên cứu chương 10 trong cuốn đó. Thầy có giải thích cho em hiểu rõ hơn về chương 10… Em có đọc qua được phần đầu nhưng chưa hiểu về RTTI lắm. Mong thầy có thể giúp em !!!

  13. Thay co the add nick cua em duoc ko thay? em co mot bai tap java kho’ qua ma em giai hoai ko duoc thay a`. Mong thay giup em de tai nay duoc ko? e se gui noi dung cho thay khi co hoi am va su cho phep cua thay

  14. em đang học java nhưng em chưa hiểu hết về các cấu trúc ngử pháp trong java( các cấu trúc lệnh đả được hổ trợ trong java và công dụng của từng cấu trúc) , thầy có tài liệu nào hướng dẩn có thể cho em kham khảo với:
    mail :tatanphap@yahoo.com

  15. chao thay! em sap thi roi nhung truong em lai cho thi tren giay nhung that su em k biet hoc gi nua ?thay co the cho em loi khuyen nha! em nghi java ma ngoi viet ra chac tui em chet wa sau ma nho cau lenh noi?

  16. tôi mới bắt đầu học từ đầu, xin cho biết cần những phần mềm gì và cài đặt như thế nào để có thể học 1 cách căn bản nhất

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s