1. Các khái niệm trong lập trình hướng đối tượng
  2. Đối tượng là gì?
  3. Lớp là gì?
  4. Kế thừa là gì?
  5. Giao diện là gì?
  6. Gói là gì?
  7. Câu hỏi và bài tập

Đối tượng là gì?

Các đối tượng là điểm cốt lõi để hiểu về công nghệ hướng đối tượng. Bây giờ hãy nhìn xung quanh và bạn sẽ thấy được rất nhiều ví dụ về đối tượng của thế giới thực: con chó, cái bàn, ti vi, xe đạp.

>> Xem thêm: TÀI LIỆU LẬP TRÌNH CĂN BẢN – ĐƠN GIẢN, DỄ HỌC!

Đối tượng trong thế giới thực có chung hai đặc điểm: Tất cả đều có trạng tháihành vi. Chó có trạng thái (tên, màu sắc, loại, tình trạng đói hay no) và hành vi (sủa, tha đồ vật đến, vẫy đuôi). Xe đạp cũng có trạng thái (bánh răng, nhịp bàn đạp hiện tại, tốc độ hiện tại) và hành vi (thay đổi bánh răng, thay đổi nhịp bàn đạp, sử dụng phanh). Việc xác định trạng thái và hành vi của các đối tượng trong thế giới thực là một cách tuyệt vời để bắt đầu nghĩ đến các khái niệm của lập trình hướng đối tượng.

Bây giờ ta hãy dành ra một vài phút để quan sát các đối tượng của thế giới thực xung quanh bạn. Đối với mỗi đối tượng mà bạn nhìn thấy, hãy tự đặt ra cho mình hai câu hỏi: “Đối tượng này có thể ở trong những trạng thái nào?” và “Đối tượng này có thể thưc hiện những hành vi nào?” Hãy chắc chắn rằng bạn đã ghi lại những quan sát của mình. Khi làm thế, bạn sẽ nhận thấy rằng các đối tượng trong thế giới thực có sự khác nhau về độ phức tạp; chiếc đèn bàn có thể chỉ có 2 trạng thái (đang bật và đang tắt) và hai hành vi (bật và tắt), nhưng chiếc radio có thể có thêm các trạng thái khác (đang bật, đang tắt, âm lượng hiện tại, kênh hiện tại) và hành vi (bật, tắt, tăng âm lượng, giảm âm lượng, tìm kiếm, dò kênh và điều chỉnh). Bạn cũng sẽ nhận thấy rằng một số đối tượng này có thể chứa các đối tượng khác. Những quan sát về thế giới thực này đều được chuyển vào trong thế giới của lập trình hướng đối tượng.

Một đối tượng phần mềm.

Về mặt khái niệm thì các đối tượng phần mềm cũng tương tự như các đối tượng trong thế giới thực: Nó cũng bao gồm các trạng thái và hành vi liên quan. Một đối tượng lưu trữ trạng thái của nó trong các trường (có thể được gọi là biến trong một số ngôn ngữ lập trình) và thể hiện các hành vi của mình ra bên ngoài thông qua các phương thức (có thể được gọi là hàm ở trong một số ngôn ngữ lập trình). Các phương thức thao tác trên các trạng thái bên trong của một đối tượng và được dùng như là cơ chế chính cho sự giao tiếp giữa đối tượng-với-đối tượng. Việc ẩn đi
trạng thái bên trong và bắt buộc tất các các tương tác đều phải được thực hiện thông qua các phương thức của một đối tượng được biết đến như là sự bao gói dữ liệu (data encapsulation) – một nguyên lý cơ bản của lập trình hướng đối tượng.

Hãy lấy một chiếc xe đạp làm ví dụ:


Chiếc xe đạp được mô hình hóa như là một đối tượng phần mềm.

Bằng cách mô tả các trạng thái (tốc độ hiện tại, nhịp đạp hiện tại, bánh răng hiện tại) và cung cấp các phương thức để thay đổi các trạng thái đó, thì một đối tượng vẫn kiểm soát được cách thức mà thế giới bên ngoài được phép sử dụng nó. Ví dụ, nếu chiếc xe đạp chỉ có 6 bánh răng, một phương thức để thay đổi bánh răng có thể từ chối bất cứ giá trị nào nhỏ hơn 1 hoặc lớn hơn 6.

Việt gói các đoạn mã vào trong từng đối tượng phần mềm riêng lẻ sẽ mang lại một số lợi ích, bao gồm:

  1. Mô-đun hóa: Mã nguồn của một đối tượng có thể được viết và duy trì độc lập với mã nguồn của các đối tượng khác. Một khi được tạo ra thì một đối tượng có thể dễ dàng được truyền đi bên trong hệ thống.
  2. Che giấu thông tin: Bằng cách chỉ tương tác với các phương thức thì các chi tiết được triển khai bên bên trong của một đối tượng sẽ được ẩn đi đối với thế giới bên ngoài.
  3. Tái sử dụng mã: Nếu một đối tượng đã tồn tại (có thể được viết bởi một nhà phát triển phần mềm khác), bạn có thể sử dụng đối tượng đó trong chương trình của mình. Điều này cho phép các chuyên gia triển khai/ kiểm thử/ gỡ lỗi các đối tượng phức tạp và có nhiệm vụ riêng biệt, rồi sau đó bạn có thể tin tưởng để chạy trong mã riêng của mình.
  4. Ghép nối và gỡ lỗi một cách dễ dàng: Nếu một đối tượng cụ thể phát sinh vấn đề, đơn giản bạn chỉ cần loại bỏ nó khỏi ứng dụng của mình và cắm một đối tượng khác vào để thay thế. Điều này cũng tương tự như khi sửa các vấn đề cơ khí trong thế giới thực. Nếu một chốt bị vỡ, hãy thay thế nó, không phải toàn bộ bộ phận máy.

Bài được dịch từ nguồn  docs.oracle.com

Trans-team: PhúDĐ, NgọcNT, ĐạtDĐ, SơnĐH, HàĐT, ChàmNM

Sinh viên FPT Aptech Hà Nội