Lập trình hướng đối tượng (tiếng Anh Object-Oriented Programming) là phương pháp lập trình đặt trọng tâm vào các đối tượng. Mỗi đối tượng bao gồm hai thành phần: (1) dữ liệu, bao gồm các thuộc tính mô tả thông tin, đặc điểm của đối tượng và (2) các phương thức (còn gọi là các hàm) thao tác trên dữ liệu nhằm mô tả các hành vi của đối tượng.
Các khái niệm thành phần[sửa]
Đối tượng[sửa]
Đối tượng là những thực thể được chương trình xử lý. Thực tế, đối tượng có thể là người, vật, bảng dữ liệu, danh sách hay vector. Lập trình viên cần phải phân tích bài toán thực tế để xác định các đối tượng sẽ được sử dụng trong chương trình và mối quan hệ giữa chúng. Đối tượng cần được lựa chọn sao cho biểu diễn được một cách trung thực nhất các thực thể trong thế giới thực.
Lớp[sửa]
Lớp là kiểu dữ liệu đại diện cho một tập hợp các đối tượng có những đặc trưng giống nhau, nghĩa là có cùng các thuộc tính và phương thức. Do vậy, lớp có thể coi là khuôn mẫu chung của các đối tượng, còn mỗi đối tượng là một cá thể, thể hiện cụ thể của lớp.
Các nguyên lý cơ bản của lập trình hướng đối tượng[sửa]
Tính đóng gói[sửa]
Tính đóng gói thể hiện ở việc gộp cả dữ liệu và các phương thức thao tác trên dữ liệu trong đối tượng. Nhờ vậy, lập trình viên có thể phát triển chương trình dễ dàng hơn, khi phân tách chương trình thành một tập các lớp, mỗi lớp có một đặc trưng riêng. Ngoài ra, việc đóng gói này còn giúp che giấu thông tin và các chi tiết cài đặt bên trong đối tượng để đối tượng khác không thấy được. Lập trình viên có thể khai báo phần dữ liệu và phương thức của đối tượng là riêng (private), công khai (public) hay được bảo vệ (protected), để tránh các đối tượng khác truy cập không hợp lệ.
Tính kế thừa[sửa]
Tính kế thừa cho phép xác định dữ liệu và phương thức của lớp mới (còn gọi là lớp con) từ dữ liệu và phương thức của lớp đã có (còn gọi là lớp cha), nghĩa là lớp cha có thể truyền lại dữ liệu và phương thức của mình cho lớp con. Tuy vậy, lớp con có thể mở rộng, không chỉ gồm các thành phần kế thừa, mà có thể bổ sung thêm thành phần mới. Thực tế, có một số cách kế thừa thường gặp: đơn kế thừa (kế thừa từ một lớp cha) và đa kế thừa (kế thừa từ nhiều lớp cha).
Tính đa hình[sửa]
Tính đa hình cho phép đối tượng xử lý theo nhiều phương thức khác nhau với cùng một thông điệp gửi tới. Nguyên lý này giúp tăng khả năng tái sử dụng mã nguồn và sự mềm dẻo, linh hoạt trong xử lý đối tượng. Ví dụ, hình tam giác, hình tròn, hình chữ nhật là các lớp con của lớp hình. Phương thức vẽ, khai báo trong lớp hình, có tính đa hình, tùy theo đối tượng sử dụng: khi gọi hàm vẽ với đối tượng hình tam giác thì sẽ vạch ra ba cạnh của tam giác; gọi hàm vẽ với đối tượng hình tròn thì sẽ vạch ra đường tròn bao.
Tính trừu tượng[sửa]
Trừu tượng hoá là nguyên lý biểu diễn chỉ giữ lại các đặc điểm chính, bỏ qua những chi tiết không quan trọng. Trong lập trình hướng đối tượng, lập trình viên phải sử dụng nguyên lý này do đối tượng trong thế giới thực có thể có nhiều dữ liệu và phương thức. Trong phạm vi bài toán được giải quyết, chỉ những đặc điểm chính, quan trọng, liên quan đến bài toán mới cần được quan tâm. Ví dụ, hệ thống quản lý sinh viên thường chỉ quan tâm đến các thông tin họ tên, ngày sinh, quê quán, v.v. Các thông tin khác như màu tóc, màu da, cân nặng là không cần thiết.
Lịch sử hình thành[sửa]
Lập trình hướng đối tượng ra đời sau lập trình cấu trúc. Theo cách tiếp cận có cấu trúc, dữ liệu và các hàm xử lý tách rời lẫn nhau. Dữ liệu được tổ chức theo cấu trúc dữ liệu trừu tượng kèm theo các thao tác, được thiết kế sao cho tốn ít tài nguyên (thời gian xử lý, không gian bộ nhớ). Lập trình có cấu trúc sử dụng cách triển khai chương trình từ trên xuống dưới (top-down) hướng theo chức năng; phân tách chức năng chính của chương trình thành các chức năng nhỏ hơn. Nếu sử dụng kỹ thuật lập trình cấu trúc để xây dựng các hệ thống lớn và phức tạp, lập trình viên gặp nhiều khó khăn khi xây dựng và bảo trì chương trình. Mỗi khi có sự thay đổi về dữ liệu, phải thực hiện thay đổi ở mọi chỗ sử dụng dữ liệu. Điều này được khắc phục thành công và hiệu quả trong lập trình hướng đối tượng.
Các khái niệm trong lập trình hướng đối tượng bắt đầu được giới thiệu vào những năm 1960 với sự ra đời của ngôn ngữ lập trình Simula. Sau đó, nhiều ngôn ngữ lập trình hướng đối tượng đã được ra đời như Smalltalk vào những năm 1970, C++ vào những năm 1980, Java vào những năm 1990.
Lập trình hướng đối tượng là phương pháp lập trình được sử dụng phổ biến hiện nay. Chương trình được xây dựng trên nền tảng đối tượng, mỗi đối tượng được mô tả trong chương trình đúng như biểu diễn và thao tác trong thế giới thực. Do vậy việc xây dựng, quản lý, bảo trì chương trình dễ dàng hơn nhiều so với các phương pháp lập trình có cấu trúc. Hiện nay phương pháp lập trình hướng đối tượng được sử dụng rộng rãi trong xây dựng các phần mềm, hệ thống thuộc nhiều lĩnh vực khác nhau.
Xu thế lập trình hướng đối tượng trong tương lai nhằm xây dựng chương trình trên nhiều nền tảng khác nhau. Trong thực tế, ngôn ngữ lập trình Java được sử dụng phổ biến trong xây dựng các chương trình ứng dụng.
Tài liệu tham khảo[sửa]
- Dimitrios Kalemis, The Fundamental Concepts of Object-Oriented Programming, CreateSpace Independent Publishing Platform (2013).
- Kindler, E.; Krivy, I., "Object-Oriented Simulation of systems with sophisticated control". International Journal of General Systems: 313–343 (2011).
- Đoàn Văn Ban, Lập trình hướng đối tượng với Java, Nhà xuất bản Khoa học và Kỹ thuật (2005)