OOP – Lập trình hướng đối tượng là gì? Hầu hết các ngôn ngữ lập trình hiện nay như Java, PHP, Python,… đều hỗ trợ OOP. Vậy lập trình hướng đối tượng là gì? Ưu điểm và các thuộc tính của nó như thế nào? Cùng tìm hiểu qua bài viết dưới đây nhé.
OPP – Lập trình hướng đối tượng là gì?
OOP – Lập trình hướng đối tượng là gì? OOP là viết tắt của cụm từ trong tiếng Anh Object-Oriented Programming, được gọi là lập trình hướng đối tượng. Đây là một phương pháp mới trên bước đường tiến hóa của việc lập trình máy tính, nhắm làm cho chương trình trở nên linh hoạt, tin cậy và dễ phát triển.
Lập trình hướng đối tượng là một mẫu hình lập trình dựa trên khái niệm “công nghệ đối tượng”, là một kỹ thuật lập trình cho phép lập trình viên tạo ra các đối tượng trong code trừu tượng hóa các đối tượng thực tế trong cuộc sống.
Các khái niệm trong lập trình hướng đối tượng
1.Đối tượng (Object)
Đối tượng ở đây có thể là con người, máy tính, điện thoại, leesin,… và điểm chung là đều gồm 2 thông tin:
Thuộc tính (Attribute): là những thông tin, đặc điểm của đối tượng. Ví dụ: Điện thoại thì có bộ nhớ, màu sắc, kích thước, hãng, các thông số khác, …
Phương thức (Method): là những thao tác, hành động mà đối tượng đó có thể thực hiện. Ví dụ: Điện thoại có thể dùng để nghe, gọi, nhắn tin, …
2.Lớp (Class)
Một lớp là một kiểu dữ liệu bao gồm các thuộc tính và các phương thức được định nghĩa từ trước. Khác với các kiểu dữ liệu thông thường, đây là một đơn vị (trừu tượng) bao gồm sự kết hợp giữa các phương thức và các thuộc tính. Có nghĩa là, khi một đối tượng có những đặc tính như nhau sẽ được gom lại thành một lớp đối tượng. Lớp đối tượng này cũng bao gồm 2 thành phần là thuộc tính và phương thức.
Như ví dụ điện thoại trên, ta hiểu lớp điện thoại có:
- Các thuộc tính: bộ nhớ, màu sắc, kích thước, các thông số kỹ thuật khác,…
- Các phương thức: nghe, gọi, nhắn tin,…
Và đối tượng (object) có thể là các dòng: Iphone, Samsung, Nokia,… đều mang đặc tính lớp của điện thoại.
Các thuộc tính cơ bản của OPP
OPP – lập trình hướng đối tượng có 4 tính chất đặc trưng sau:
1.Tính kế thừa (Inheritance)
Cho phép xây dựng một lớp mới dựa trên các định nghĩa của lớp đã có. Có nghĩa là lớp con có thể kế thừa, tái sử dụng thuộc tính, phương thức của lớp cơ sở, thừa hưởng những gì lớp cha có và cho phép.
Với ví dụ là lớp dienthoai, lớp này sẽ có các thuộc tính: bonho, mausac, kichthuoc. Một lớp dienthoaiIphone, dienthoaiSamsung cũng có các thuộc tính tương tự: bonho, mausac, kichthuoc. Thay vì việc sao chép các thuộc tính này, ta nên đặt chúng vào một lớp chung gọi là lớp cha – trong trường hợp này là dienthoai và có những lớp con là dienthoaiIphone, dienthoaiSamsung kế thừa các thuộc tính, phương thức từ nó, tạo ra mối quan hệ cha-con.
2.Tính đóng gói (Encapsulation)
Để đảm bảo tính vẹn toàn của đối tượng, tính chất này không cho phép nguời dùng tác động trực tiếp đến dữ liệu bên trong đối tượng mà phải thông qua phương thức đối tượng cung cấp.
Các dữ liệu và phương thức có liên quan với nhau được đóng gói thành các lớp để tiện cho việc quản lý và sử dụng. Nghĩa là mỗi lớp được xây dựng để thực hiện một nhóm chức năng đặc trưng của riêng lớp đó. Việc đóng gói này còn giúp che giấu một số thông tin và chi tiết cài đặt nội bộ mà bên ngoài không thể nhìn thấy.
Nhìn vào ví dụ trên, có thể thấy: tính đóng gói được thể hiện qua các thuộc tính mausac, chieudai, chieurong và phương thức input(), output() vào trong lớp mayvitinh. Nhìn vào đoạn code, có thể hiểu được rằng bạn không thể truy cập đến các private data hoặc gọi đến private methods của lớp từ bên ngoài lớp đó.
3.Tính trừu tượng (Abstraction)
Trừu tượng ở đây có nghĩa là tổng quát hóa một điều gì đó lên, không cần chú ý những chi tiết bên trong. Không cần đến những chi tiết bên trog ấy, người ta vẫn có thể hiểu nó là gì khi nghe về nó.
Trong lập trình OOP, tính trừu tượng nghĩa là chọn ra các thuộc tính, phương thức của đối tượng cần cho việc giải quyết bài toán đang lập trình. Lí do là một đối tượng có rất nhiều thuộc tính phươn thức, nhưng không nhất thiết phải lựa chọn tất cả đối với từng bài toán cụ thể.
Ví dụ:Bài toán quản lý sinh viên chúng ta chỉ cần quản lý tất cả các thông tin như:
- Họ tên
- Giới tính
- Chiều cao
- Ngày tháng năm sinh
Mà lại không cần quản lý thêm các thông tin khác nếu chúng không cần hiết:
Chiều dài, chiều rộng, cân nặng, màu da,…
4.Tính đa hình (Pylymorphism)
Đây là một tính chất có thể nói là chứa đựng hầu hết sức mạnh của lập trình hướng đối tượng. Tính đa hình là một hành động có thể được thực hiện bằng nhiều cách khác nhau. Hiểu đơn giản, chính là hai hoặc nhiều lớp có những phương thức giống nhau nhưng có thể thực thi theo những cách thức khác nhau.
Ví dụ như dienthoai, mỗi một smartphone sẽ được kế thừa từ lớp smartphone là có thể lưu trữ dữ liệu, nhưng chúng lưu trữ theo cách khác nhau. Như Iphone thì lưu trữ trên Icloud còn Androidphone lưu trữ bằng Google Drive.
Vì các loại điện thoại này đều là smartphone nên nếu ta viết một hàm dùng kiểu smartphone làm tham số thì khi gọi hàm ta có thể truyền vào một đối tượng kiểu Iphone hoặc AndroidPhone bới vì chúng đều kế thừa từ lớp Smartphone nên được chấp nhận (bởi dù là Iphone hay AndroidPhone thì đây cùng là một Smartphone). Hàm này cũng không cần quan tâm smartphone nào đang được truyền vào vì nó chỉ cần hiểu đối tượng đang xử lý ở đây là smartphone với những public method đã được định nghĩa.
Đây là một tính rất mạnh mẽ bởi nó mang lại cho code khả năng tổng quát hóa cao.
Các ưu điểm của lập trình hướng đối tượng
- Đảm bảo rút ngắn thời gian xây dựng hệ thống và tăng năng suất thực hiện.
- Có thể loại bỏ những chương trình bị lặp, dư trong quá trình mô tả các lớp dựa trên nguyên lý kế thừa. Hơn nữa, còn có thể mở rộng khả năng sử dụng các lớp mà không cần thực hiện lại. Tối ưu và tái sử dụng code hiệu quả.
- Đặc trưng của phương pháp lập trình hướng đối tượng với 2 khái niệm mới lớp và đối tượng đã giải quyết được các khuyết điểm của phương pháp lập trình hướng cấu trúc để lại. Hai khái niệm này cũng giúp biểu diễn tốt hơn thế giới thực trên máy tính.
OOP – Lập trình hướng đối tượng là gì? Thông qua bài viết hy vọng quý vị đã giải đáp được những thắc mắc về kiến thức.
Qúy vị có thể tham khảo thêm những kiến thức liên quan tới OOP
Tham khảo thêm bài viết: Học lập trình hướng đối tượng cần chú ý những gì?