Mô hình lập trình Python được gọi là lập trình hướng đối tượng [OOP] sử dụng các đối tượng và lớp. Nó tìm cách kết hợp các khái niệm trong thế giới thực lập trình như kế thừa, đa hình, đóng gói, v.v. Ý tưởng cơ bản đằng sau OOP là liên kết dữ liệu và các chức năng sử dụng nó sao cho không phần nào khác của mã có thể truy cập được.
Trong bài viết này chúng ta sẽ thảo luận về các nguyên tắc cơ bản của lập trình hướng đối tượng
Tầng lớp
Định nghĩa của một lớp là một nhóm các mục. Nó là một thực thể logic với một vài thuộc tính và phương thức duy nhất. Ví dụ: nếu bạn có một lớp dành cho môn Cricket, thì lớp đó phải có thuộc tính và phương thức như người chơi, giải đấu, tung, chạy, đánh bóng, trận đấu, v.v.
Thí dụ
Xem xét sử dụng ví dụ dưới đây để xây dựng một lớp có tên Cricket có hai trường. id người chơi và người chơi. Lớp này cũng có một hàm gọi là display[] được sử dụng để hiển thị thông tin về Cricket –
class Cricket: id = 10 player = "Sachin Tendulkar" def display [self]: print[self.id,self.player] print['Class created Successfully']
đầu ra
Sau đây là một đầu ra của đoạn mã trên
Class created Successfully
Mục tiêu
Một đối tượng là một thể hiện của một lớp. Nó là một thực thể có trạng thái và hành vi. Nói một cách đơn giản, nó là một thể hiện của lớp có quyền truy cập vào dữ liệu. Nó có thể là bất kỳ đối tượng nào trong thế giới thực, chẳng hạn như chuột, bàn phím, ghế, bàn, bút, v.v.
Python coi mọi thứ là một đối tượng và hầu hết các đối tượng đều có thuộc tính và phương thức. Thuộc tính tích hợp __doc__ của tất cả các hàm trả về chuỗi tài liệu được chỉ định trong mã nguồn của hàm
Thí dụ
Sau đây là một ví dụ để tạo một đối tượng -
đầu ra
Sau đây là một đầu ra của đoạn mã trên
ID: 10 Player: Sachin Tendulkar
Phương pháp
Một hàm được kết nối với một đối tượng là phương thức. Một phương thức không dành riêng cho các thể hiện của lớp trong Python. Bất kỳ loại đối tượng có thể có phương pháp
Thí dụ
Trong ví dụ sau, hai phương thức, plant[] và animals[], được định nghĩa. Bởi vì 'Pen' là một đối tượng thể hiện, nên chúng được gọi là các phương thức thể hiện
đầu ra
Sau đây là đầu ra của đoạn mã trên -
Pen plants 'Coding' Pen animals
Di sản
Bằng cách sử dụng các chi tiết của một lớp hiện có mà không thay đổi nó, một lớp mới có thể được tạo thông qua kế thừa. Lớp mới tạo là lớp dẫn xuất [hoặc lớp con]. Lớp hiện tại là một lớp cơ sở [hoặc lớp cha] theo cách tương tự
Thí dụ
Sau đây là một ví dụ về thừa kế trong Python
đầu ra
Chúng tôi đã thiết lập hai lớp trong đoạn mã trên. Động vật [lớp cha] và Sư tử [lớp con]. Các hàm của lớp cha được kế thừa bởi lớp con. Điều này thể hiện rõ ràng từ phương thức Run[]
Một lần nữa, hành vi của lớp cha đã được sửa đổi bởi lớp con. Phương thức WhatIstheClass[] tiết lộ điều này. Bằng cách thêm một phương thức run[] mới, chúng ta cũng mở rộng chức năng của lớp cha
Trong phương thức __init__[], chúng ta cũng sử dụng hàm super[]. Điều này cho phép chúng ta gọi phương thức __init__[] của lớp cha từ lớp con
Animal is there Lion is there Lion Runs in speed Runs in speed
đóng gói
Chúng ta có thể giới hạn quyền truy cập vào các phương thức và biến trong Python bằng cách sử dụng OOP. Đóng gói là quá trình ngăn chặn sửa đổi dữ liệu trực tiếp. Trong Python, chúng tôi sử dụng tiền tố gạch dưới để biểu thị các thuộc tính riêng tư, chẳng hạn như single_or double__
Thí dụ
Sau đây là một ví dụ về đóng gói dữ liệu trong Python -
đầu ra
Lớp Thể thao được định nghĩa trong đoạn mã trên. Tên trò chơi của Thể thao được lưu trữ bằng phương thức __init__[]. Nhìn vào mã dưới đây
s.__sportsName = 'Hockey'
Ở đây, chúng tôi đã cố gắng thay đổi giá trị __sportsName bên ngoài lớp. Vì __sportsName là một biến riêng nên đầu ra không phản ánh sửa đổi này. Chúng ta phải sử dụng hàm setter, Player Name[], chấp nhận sportsName làm tham số, để điều chỉnh giá trị
The game is: Cricket The game is: Cricket The game is: Hockey
đa hình
"Poly" và "morphs" là hai từ tạo nên tính đa hình. Các từ poly và morp lần lượt có nghĩa là nhiều và hình dạng. Chúng tôi hiểu tính đa hình có nghĩa là một hoạt động đơn lẻ có thể được thực hiện theo nhiều cách khác nhau
Giả sử chúng ta muốn tô màu một hình dạng; . Tuy nhiên, chúng ta có thể tô màu bất kỳ hình dạng nào bằng cùng một phương pháp. Khái niệm này được gọi là đa hình
Thí dụ
Sau đây là một ví dụ về Đa hình trong Python
đầu ra
Hai lớp, Lion và Dog, được định nghĩa trong đoạn mã trên. Tất cả đều dùng chung phương thức Roar[]. Tuy nhiên, vai trò của họ là khác biệt
Để tận dụng tính đa hình, chúng tôi đã xây dựng một giao diện chung có tên là sound test[], giao diện này chấp nhận bất kỳ đối tượng nào và gọi phương thức Roar[] của nó. Kết quả là chức năng sound test[] hoạt động như mong đợi khi chúng tôi chuyển vật nuôi và đồ vật trên đường phố cho nó
Lion can roar Dog can't roar
Trừu tượng dữ liệu
Cả trừu tượng hóa và đóng gói dữ liệu đều là những từ đồng nghĩa thường được sử dụng. Vì sự trừu tượng hóa dữ liệu đạt được bằng cách đóng gói, nên hai thuật ngữ này gần như đồng nghĩa
Khi sử dụng tính trừu tượng, các chi tiết bên trong bị ẩn và chỉ các chức năng được hiển thị. Đặt tên cho những thứ nắm bắt được cốt lõi của chức năng hoặc toàn bộ chương trình thực hiện là quá trình trừu tượng hóa một thứ gì đó