Python hướng đối tượng - Giới thiệu
Các ngôn ngữ lập trình đang xuất hiện liên tục và các phương pháp luận khác nhau cũng vậy. Lập trình hướng đối tượng là một trong những phương pháp luận đã trở nên khá phổ biến trong vài năm qua.
Chương này nói về các tính năng của ngôn ngữ lập trình Python khiến nó trở thành ngôn ngữ lập trình hướng đối tượng.
Lược đồ phân loại lập trình ngôn ngữ
Python có thể được mô tả theo phương pháp lập trình hướng đối tượng. Hình ảnh sau đây cho thấy các đặc điểm của các ngôn ngữ lập trình khác nhau. Quan sát các tính năng của Python làm cho nó hướng đối tượng.
Các lớp Langauage | Thể loại | Langauages |
---|---|---|
Mô hình lập trình | Thủ tục | C, C ++, C #, Objective-C, java, Go |
Viết kịch bản | CoffeeScript, JavaScript, Python, Perl, Php, Ruby | |
Chức năng | Clojure, Eralang, Haskell, Scala | |
Lớp tổng hợp | Tĩnh | C, C ++, C #, Objective-C, java, Go, Haskell, Scala |
Động | CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, Erlang | |
Loại lớp | Mạnh | C #, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala |
Yếu | C, C ++, C #, Objective-C, CoffeeScript, JavaScript, Perl, Php | |
Lớp bộ nhớ | Được quản lý | Khác |
Không được quản lý | C, C ++, C #, Objective-C |
Lập trình hướng đối tượng là gì?
Object Orientednghĩa là hướng về các đối tượng. Nói cách khác, nó có nghĩa là hướng về mặt chức năng đối với các đối tượng mô hình hóa. Đây là một trong nhiều kỹ thuật được sử dụng để mô hình hóa các hệ thống phức tạp bằng cách mô tả một tập hợp các đối tượng tương tác thông qua dữ liệu và hành vi của chúng.
Python, một lập trình hướng đối tượng (OOP), là một cách lập trình tập trung vào việc sử dụng các đối tượng và lớp để thiết kế và xây dựng ứng dụng. Các trụ cột chính của Lập trình hướng đối tượng (OOP) là Inheritance, Polymorphism, Abstraction, quảng cáo Encapsulation.
Phân tích hướng đối tượng (OOA) là quá trình xem xét một vấn đề, hệ thống hoặc nhiệm vụ và xác định các đối tượng và tương tác giữa chúng.
Tại sao nên chọn Lập trình hướng đối tượng?
Python được thiết kế với cách tiếp cận hướng đối tượng. OOP cung cấp những ưu điểm sau:
Cung cấp cấu trúc chương trình rõ ràng, giúp dễ dàng lập bản đồ các vấn đề trong thế giới thực và giải pháp của chúng.
Tạo điều kiện dễ dàng bảo trì và sửa đổi mã hiện có.
Nâng cao tính mô đun của chương trình vì mỗi đối tượng tồn tại độc lập và các tính năng mới có thể được thêm vào dễ dàng mà không làm ảnh hưởng đến các đối tượng hiện có.
Trình bày một khuôn khổ tốt cho các thư viện mã nơi các thành phần được cung cấp có thể dễ dàng điều chỉnh và sửa đổi bởi lập trình viên.
Cung cấp khả năng tái sử dụng mã
Lập trình hướng đối tượng so với thủ tục
Lập trình dựa trên thủ tục có nguồn gốc từ lập trình cấu trúc dựa trên các khái niệm functions/procedure/routines. Dễ dàng truy cập và thay đổi dữ liệu trong lập trình hướng thủ tục. Mặt khác, Lập trình hướng đối tượng (OOP) cho phép phân rã một vấn đề thành một số đơn vị được gọi làobjectsvà sau đó xây dựng dữ liệu và chức năng xung quanh các đối tượng này. Nó nhấn mạnh nhiều vào dữ liệu hơn là thủ tục hoặc hàm. Ngoài ra trong OOP, dữ liệu bị ẩn và không thể truy cập bằng thủ tục bên ngoài.
Bảng trong hình ảnh sau đây cho thấy sự khác biệt chính giữa phương pháp tiếp cận POP và OOP.
Sự khác biệt giữa Lập trình hướng thủ tục (POP) vs. Lập trình hướng đối tượng (OOP).
Lập trình hướng thủ tục | Lập trình hướng đối tượng | |
---|---|---|
Dựa trên | Trong Pop, toàn bộ trọng tâm là dữ liệu và chức năng | Oops dựa trên một kịch bản thế giới thực. Chương trình lỗ hổng được chia thành các phần nhỏ gọi là đối tượng |
Khả năng tái sử dụng | Sử dụng lại mã giới hạn | Sử dụng lại mã |
Tiếp cận | Phương pháp tiếp cận từ trên xuống | Thiết kế tập trung vào đối tượng |
Truy cập thông số kỹ thuật | Không có | Công khai, riêng tư và được bảo vệ |
Di chuyển dữ liệu | Dữ liệu có thể di chuyển tự do từ các chức năng này sang chức năng khác trong hệ thống | Trong Oops, dữ liệu có thể di chuyển và giao tiếp với nhau thông qua các hàm thành viên |
Truy cập dữ liệu | Trong pop, hầu hết các chức năng sử dụng dữ liệu chung để chia sẻ có thể được truy cập tự do từ chức năng này sang chức năng khác trong hệ thống | Trong Oops, dữ liệu không thể di chuyển tự do từ phương thức này sang phương thức khác, nó có thể được giữ ở chế độ công khai hoặc riêng tư để chúng tôi có thể kiểm soát việc truy cập dữ liệu |
Ẩn dữ liệu | Trong cửa sổ bật lên, cách cụ thể để ẩn dữ liệu, nên kém an toàn hơn một chút | Nó cung cấp khả năng ẩn dữ liệu, an toàn hơn nhiều |
Quá tải | Không thể | Chức năng và Người vận hành quá tải |
Ví dụ-Ngôn ngữ | C, VB, Fortran, Pascal | C ++, Python, Java, C # |
Trừu tượng | Sử dụng tính trừu tượng ở cấp độ thủ tục | Sử dụng tính trừu tượng ở cấp độ lớp và đối tượng |
Nguyên tắc lập trình hướng đối tượng
Lập trình hướng đối tượng (OOP) dựa trên khái niệm objects hơn là hành động, và datahơn là logic. Để một ngôn ngữ lập trình hướng đối tượng, nó cần có một cơ chế cho phép làm việc với các lớp và đối tượng cũng như việc thực thi và sử dụng các nguyên tắc và khái niệm hướng đối tượng cơ bản như kế thừa, trừu tượng, đóng gói và đa hình.
Hãy để chúng tôi hiểu ngắn gọn từng trụ cột của lập trình hướng đối tượng -
Đóng gói
Thuộc tính này ẩn các chi tiết không cần thiết và giúp quản lý cấu trúc chương trình dễ dàng hơn. Việc triển khai và trạng thái của mỗi đối tượng được ẩn sau các ranh giới được xác định rõ ràng và cung cấp một giao diện sạch sẽ và đơn giản để làm việc với chúng. Một cách để thực hiện điều này là đặt dữ liệu ở chế độ riêng tư.
Di sản
Kế thừa, còn được gọi là tổng quát hóa, cho phép chúng ta nắm bắt được mối quan hệ phân cấp giữa các lớp và đối tượng. Ví dụ, một 'trái cây' là sự khái quát của 'quả cam'. Kế thừa rất hữu ích từ góc độ tái sử dụng mã.
Trừu tượng
Thuộc tính này cho phép chúng tôi ẩn các chi tiết và chỉ hiển thị các tính năng cần thiết của một khái niệm hoặc đối tượng. Ví dụ, một người lái xe tay ga biết rằng khi nhấn còi, âm thanh sẽ phát ra, nhưng anh ta không biết âm thanh thực sự được tạo ra như thế nào khi nhấn còi.
Tính đa hình
Đa hình có nghĩa là nhiều dạng. Có nghĩa là, một sự vật hoặc hành động hiện diện dưới những hình thức hoặc cách thức khác nhau. Một ví dụ điển hình về tính đa hình là nạp chồng hàm tạo trong các lớp.
Python hướng đối tượng
Trung tâm của lập trình Python là object và OOP, tuy nhiên, bạn không cần hạn chế sử dụng OOP bằng cách sắp xếp mã của bạn thành các lớp. OOP bổ sung vào toàn bộ triết lý thiết kế của Python và khuyến khích một cách lập trình sạch sẽ và thực dụng. OOP cũng cho phép viết các chương trình lớn hơn và phức tạp.
Mô-đun so với Lớp và Đối tượng
Mô-đun giống như "Từ điển"
Khi làm việc trên Mô-đun, hãy lưu ý những điểm sau:
Mô-đun Python là một gói để đóng gói mã có thể sử dụng lại.
Các mô-đun nằm trong một thư mục có __init__.py tập tin trên đó.
Mô-đun chứa các hàm và lớp.
Các mô-đun được nhập bằng cách sử dụng import từ khóa.
Nhớ lại rằng từ điển là một key-valueđôi. Điều đó có nghĩa là nếu bạn có một từ điển có khóaEmployeID và bạn muốn truy xuất nó, thì bạn sẽ phải sử dụng các dòng mã sau:
employee = {“EmployeID”: “Employee Unique Identity!”}
print (employee [‘EmployeID])
Bạn sẽ phải làm việc trên các mô-đun với quy trình sau:
Mô-đun là một tệp Python với một số hàm hoặc biến trong đó.
Nhập tệp bạn cần.
Bây giờ, bạn có thể truy cập các hàm hoặc biến trong mô-đun đó bằng dấu '.' (dot) Nhà điều hành.
Hãy xem xét một mô-đun có tên employee.py với một chức năng trong nó được gọi là employee. Mã của hàm được đưa ra dưới đây:
# this goes in employee.py
def EmployeID():
print (“Employee Unique Identity!”)
Bây giờ nhập mô-đun và sau đó truy cập chức năng EmployeID -
import employee
employee. EmployeID()
Bạn có thể chèn một biến có tên là Age, như hình -
def EmployeID():
print (“Employee Unique Identity!”)
# just a variable
Age = “Employee age is **”
Bây giờ, truy cập biến đó theo cách sau:
import employee
employee.EmployeID()
print(employee.Age)
Bây giờ, hãy so sánh điều này với từ điển -
Employee[‘EmployeID’] # get EmployeID from employee
Employee.employeID() # get employeID from the module
Employee.Age # get access to variable
Lưu ý rằng có một mẫu phổ biến trong Python:
Đi một key = value hộp đựng phong cách
Lấy một cái gì đó ra khỏi nó bằng tên của khóa
Khi so sánh mô-đun với từ điển, cả hai đều tương tự, ngoại trừ những điều sau:
Trong trường hợp của dictionary, khóa là một chuỗi và cú pháp là [key].
Trong trường hợp của module, khóa là số nhận dạng và cú pháp là .key.
Các lớp học giống như Mô-đun
Mô-đun là một từ điển chuyên dụng có thể lưu trữ mã Python để bạn có thể truy cập nó bằng dấu '.' Nhà điều hành. Một lớp là một cách để nhóm các chức năng và dữ liệu và đặt chúng bên trong một vùng chứa để bạn có thể truy cập chúng bằng bộ điều hành '.'.
Nếu bạn phải tạo một lớp tương tự như mô-đun nhân viên, bạn có thể thực hiện bằng cách sử dụng mã sau:
class employee(object):
def __init__(self):
self. Age = “Employee Age is ##”
def EmployeID(self):
print (“This is just employee unique identity”)
Note- Các lớp học được ưu tiên hơn các mô-đun vì bạn có thể sử dụng lại chúng như cũ và không bị can thiệp nhiều. Trong khi với các mô-đun, bạn chỉ có một với toàn bộ chương trình.
Đối tượng giống như Nhập khẩu nhỏ
Một lớp học giống như một mini-module và bạn có thể nhập theo cách tương tự như cách bạn làm đối với các lớp, sử dụng khái niệm được gọi là instantiate. Lưu ý rằng khi bạn khởi tạo một lớp, bạn sẽ nhận đượcobject.
Bạn có thể khởi tạo một đối tượng, tương tự như việc gọi một lớp như một hàm, như minh họa:
this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class
print(this_obj.Age) # get variable Age
Bạn có thể thực hiện việc này bằng bất kỳ cách nào trong ba cách sau:
# dictionary style
Employee[‘EmployeID’]
# module style
Employee.EmployeID()
Print(employee.Age)
# Class style
this_obj = employee()
this_obj.employeID()
Print(this_obj.Age)