Giới thiệu lập trình hướng đối tượng OOPs trong Python. Python là một ngôn ngữ lập trình hướng đối tượng. Nó cho phép chúng ta phát triển các ứng dụng bằng cách sử dụng phương pháp hướng đối tượng. Trong Python, chúng ta có thể dễ dàng tạo và sử dụng các lớp và các đối tượng.
Các nguyên tắc chính của hệ thống lập trình hướng đối tượng được đưa ra dưới đây.
Nội dung chính
Các khái niệm OOPs trong Python
- Đối tượng (object)
- Lớp (class)
- Phương thức (method)
- Kế thừa
- Đa hình
- Trừu tượng
- Đóng gói
Lập trình hướng đối tượng có 4 tính chất:
Đối tượng (object)
Đối tượng là một thực thể có trạng thái và hành vi. Nó có thể là bất kỳ đối tượng trong thế giới thực như chuột, bàn phím, ghế, bàn, bút, v.v.
Mọi thứ trong Python là một đối tượng và hầu hết mọi thứ đều có thuộc tính và phương thức. Tất cả các hàm đều có thuộc tính __doc__ tích hợp, trả về chuỗi doc được xác định trong mã nguồn của hàm.
Lớp (class)
Lớp có thể được định nghĩa là một tập hợp các đối tượng. Nó là một thực thể logic có một số thuộc tính và phương thức cụ thể. Ví dụ: nếu bạn có một lớp nhân viên thì nó phải chứa một thuộc tính và phương thức, tức là một địa chỉ, tên, tuổi, lương, v.v.
Phương thức
Phương thức là một hàm được liên kết với một đối tượng. Trong Python, một phương thức không phải là duy nhất cho các thể hiện của lớp. Bất kỳ kiểu đối tượng nào cũng có thể có phương thức.
Kế thừa (Inheritance)
Kế thừa là khía cạnh quan trọng nhất của lập trình hướng đối tượng, mô phỏng khái niệm thừa kế trong thế giới thực. Nó xác định rằng đối tượng con có được tất cả các thuộc tính và hành vi của đối tượng cha.
Bằng cách sử dụng tính kế thừa, chúng ta có thể tạo một lớp sử dụng tất cả các thuộc tính và hành vi của lớp khác. Lớp mới được biết đến như là một lớp dẫn xuất hoặc lớp con và lớp còn lại gọi là lớp cơ sở hoặc lớp cha.
Kế thừa giúp tái sử dụng lại mã nguồn.
Đa hình (Polymorphism)
Đa hình chứa hai từ "poly" và "morphs". Poly có nghĩa là nhiều và Morphs có nghĩa là hình thức, hình dạng. Bằng đa hình, chúng ta hiểu rằng một nhiệm vụ có thể được thực hiện theo những cách khác nhau. Ví dụ: Bạn có một lớp động vât và tất cả các con vật đều biết kêu. Nhưng chúng kêu khác nhau. Ở đây, hành vi "kêu" là đa hình theo nghĩa và phụ thuộc vào động vật. Vì vậy, khái niệm "động vật" trừu tượng không thực sự "nói", nhưng các động vật cụ thể (như chó và mèo) có một triển khai cụ thể của hành động "kêu".
Đóng gói (Encapsulation)
Đóng gói cũng là một khía cạnh quan trọng của lập trình hướng đối tượng. Nó được sử dụng để hạn chế quyền truy cập vào các phương thức và biến. Trong đóng gói, mã và dữ liệu được gói cùng nhau trong một đơn vị.
Trừu tượng (Abstraction)
Trừu tượng hóa dữ liệu và đóng gói cả hai thường được sử dụng như từ đồng nghĩa. Cả hai đều gần như đồng nghĩa vì sự trừu tượng hóa dữ liệu đạt được thông qua việc đóng gói.
Trừu tượng được sử dụng để ẩn chi tiết nội bộ và chỉ hiển thị các chức năng. Trừu tượng hóa một cái gì đó có nghĩa là đặt tên cho những thứ để cái tên nắm bắt cốt lõi của những gì một chức năng hoặc toàn bộ chương trình làm.
Ngôn ngữ lập trình hướng đối tượng và hướng thủ tục
Lập trình hướng đối tượng | Lập trình hướng thủ tục | |
---|---|---|
1. | Lập trình hướng đối tượng là cách tiếp cận giải quyết vấn đề và được sử dụng trong đó tính toán được thực hiện bằng cách sử dụng các đối tượng. | Lập trình thủ tục sử dụng một danh sách các hướng dẫn để thực hiện tính toán từng bước. |
2. | Giúp phát triển và bảo trì dễ dàng hơn. | Trong lập trình thủ tục, khó đẻ bảo trì khi dự án mở rộng. |
3. | Trong lập trình thủ tục, không dễ để duy trì các mã khi dự án trở nên dài. | Nó không mô phỏng thế giới thực. Nó hoạt động theo từng bước hướng dẫn được chia thành các phần nhỏ gọi là hàm. |
4. | Nó cung cấp dữ liệu ẩn. Vì vậy, nó an toàn hơn các ngôn ngữ thủ tục. Bạn không thể truy cập dữ liệu riêng tư từ bất cứ đâu. | Ngôn ngữ thủ tục không cung cấp bất kỳ cách thích hợp nào để liên kết dữ liệu, vì vậy nó kém an toàn hơn. |
5. | Ví dụ về các ngôn ngữ lập trình hướng đối tượng là C++, Java, .Net, Python, C #, v.v. | Ví dụ về các ngôn ngữ thủ tục là: C, Fortran, Pascal, VB, v.v. |