4 trụ cột của oops trong Python là gì?

Phạm vi của bài viết này là để giúp bạn hiểu các khái niệm về oops một cách nhanh chóng và không phải là hướng dẫn chuyên sâu về viết mã với oops

Hệ thống lập trình hướng đối tượng hay còn gọi là OOPS là một trong những chủ đề nóng cho các cuộc phỏng vấn lập trình. Tôi đã nhiều lần được hỏi về khái niệm này [câu hỏi trực tiếp và gián tiếp] trong cuộc phỏng vấn, và thành thật mà nói, tôi đã không thể trả lời hầu hết các câu hỏi vì tôi chưa bao giờ hiểu rõ về nó. Nhưng khi tôi cố gắng nhìn kỹ những ưu điểm của nó và cố gắng hiểu chúng bằng ngôn ngữ lập trình yêu thích của mình, tôi cảm thấy như mình là một phiên bản cải tiến của chính mình khi viết mã và tôi hy vọng nó cũng giúp bạn cải thiện kỹ năng và kiến ​​thức của mình

Hãy bắt đầu tìm hiểu về OOPS

Có bốn trụ cột

  • đóng gói
  • Di sản
  • đa hình
  • trừu tượng

Chúng ta hãy xem xét từng người trong số họ

đóng gói

đóng gói [hành động bao bọc một cái gì đó trong hoặc như thể trong một viên nang. ]

Bây giờ, nếu bạn đã hiểu nghĩa của từ thì bạn có thể liên hệ tương tự với mã của mình, hãy xem ví dụ

class Cat:

    def __init__[self]:
        self.sound = "meow"

    def speak[self]:
        print["Cat says: {}".format[self.sound]]


c = Cat[]
c.speak[]

# change the price
c.sound = "bow-wow"
c.speak[]


#OUTPUT

Cat says: meow
Cat says: bow-wow

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Trong ví dụ trên, lớp cat có một biến sound được đặt thành giá trị mặc định trong hàm tạo, và sau đó chúng ta cũng thay đổi giá trị của biến i này. e. c.sound = "bow-wow", Bây giờ bạn đã biết ý nghĩa của đóng gói theo định nghĩa trên, hãy coi lớp là một viên nang, bạn có nghĩ mã này tuân theo quy tắc đóng gói không?

Để tránh điều này, chúng ta có thể khai báo các biến riêng tư, trong Python, chúng ta biểu thị các thuộc tính riêng tư bằng cách sử dụng dấu gạch dưới làm tiền tố i. e đơn _ hoặc đôi __

class Cat:

    def __init__[self]:
        self.__sound = "meow"

    def speak[self]:
        print["Cat says: {}".format[self.__sound]]


c = Cat[]
c.speak[]

# change the price
c.sound = "bow-wow"
c.speak[]


#OUTPUT

Cat says: meow
Cat says: meow

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ, nó đã được đóng gói. Vâng, đây là sự đóng gói.
Do đó, một số ví dụ thực tế về điều này là

  • Ứng dụng ngân hàng cấm [hạn chế] khách hàng thay đổi số dư của Tài khoản
  • Nó cũng được sử dụng để ẩn dữ liệu - giả sử bạn đăng nhập vào tài khoản email của mình, có rất nhiều quy trình trong phần phụ trợ mà bạn không kiểm soát được. Vì vậy, mật khẩu của bạn, có thể sẽ được truy xuất ở dạng mã hóa, được xác minh và chỉ khi đó bạn mới được cấp quyền truy cập. Bạn không có bất kỳ quyền kiểm soát nào đối với cách xác minh mật khẩu và điều này giúp mật khẩu an toàn khỏi bị lạm dụng. [nguồn. hỏi đáp]

Di sản

Kế thừa [để nhận được chất lượng, đặc tính, v.v.]. từ cha mẹ hoặc gia đình của bạn. ]

Như bạn thấy định nghĩa ở trên, Điều này cho phép chúng ta định nghĩa một lớp kế thừa các phương thức, thuộc tính từ lớp khác. Giả sử bạn cần một lớp mới với ít hoặc không cần sửa đổi thì bạn áp dụng khái niệm này

Lớp cơ sở được gọi là lớp cha và lớp dẫn xuất được gọi là lớp con. Đó là điều hiển nhiên, tôi biết. ]

Hãy để chúng tôi xem một ví dụ

class Family:
    def __init__[self, family_name, number_of_members, country]:
        self.family_name = family_name
        self.number_of_members = number_of_members
        self.country=country


    def member_says[self]:
        print[f"Hey, I am from {self.family_name} family and there are {self.number_of_members} members in family"]


class Family_detailed:
    def __init__[self, family_name, number_of_members, country]:
        self.family_name = family_name
        self.number_of_members = number_of_members
        self.country=country

    def member_says[self]:
        print[f"Hey, I am from {self.family_name} family and there are {self.number_of_members} members in family"]

    def which_country[self]:
        print[f"The {self.family_name} family has roots from {self.country}" ]


a = Family["Rodrigues",5,"Peru"]
b = Family_detailed["Bezos",15,"United States of America"]

a.member_says[]
b.member_says[]
b.which_country[]

#Output

Hey, I am from the Rodrigues family and there are 5 members in the family
Hey, I am from the Bezos family and there are 15 members in the family
The Bezos family has roots in the United States of America

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Mục đích của lớp đầu tiên là hiển thị tên gia đình và số lượng thành viên nhưng lớp thứ hai muốn hiển thị thông tin tương tự cùng với quốc gia. Như bạn thấy có rất nhiều mã phổ biến ở đây, hãy sử dụng tính kế thừa để làm cho nó đơn giản hơn

class Family:
    def __init__[self, family_name, number_of_members, country]:
        self.family_name = family_name
        self.number_of_members = number_of_members
        self.country=country

    def member_says[self]:
        print[f"Hey, I am from {self.family_name} family and there are {self.number_of_members} members in family"]


class Family_detailed[Family]:

    def which_country[self]:
        print[f"The {self.family_name} family has roots from {self.country}" ]


a = Family["Rodrigues",5,"Peru"]
b = Family_detailed["Bezos",15,"United States of America"]

a.member_says[]
b.member_says[]
b.which_country[]

#Output

Hey, I am from the Rodrigues family and there are 5 members in the family
Hey, I am from the Bezos family and there are 15 members in the family
The Bezos family has roots in the United States of America

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Wow, như bạn thấy mã đã giảm đáng kể. Vì vậy, đây là tài sản thừa kế, hãy chuyển sang trụ cột tiếp theo

trừu tượng

Trừu tượng [Một ý tưởng chung hơn là một ý tưởng liên quan đến một đối tượng, con người hoặc tình huống cụ thể. ]

Để hiểu rõ hơn, hãy lấy một ví dụ về một chiếc ô tô, mọi người không coi chiếc ô tô là hàng ngàn bộ phận riêng lẻ, thay vào đó, họ xem nó như một đối tượng được xác định rõ ràng với hành vi độc đáo. Họ không cần hiểu sự phức tạp của những phần đó và cách cộng tác với nhau. Điều tương tự cũng xảy ra với máy bán hàng tự động, bạn chỉ muốn bỏ tiền vào và lấy món ăn vặt yêu thích của mình và không cần hiểu hệ thống hoạt động như thế nào

nói một cách đơn giản, Trừu tượng tập trung vào việc ẩn các triển khai bên trong của một quy trình hoặc phương thức khỏi người dùng. Bằng cách này, người dùng biết họ đang làm gì nhưng không biết công việc đang được thực hiện như thế nào

Đây là một chút khác biệt so với các trụ cột khác. Python không cấp các lớp trừu tượng theo mặc định. Thay vào đó, Python đi kèm với một mô-đun phù hợp với cơ sở cho các lớp Cơ sở Trừu tượng [ABC] và tên mô-đun đó là ABC. Một phương thức trở nên trừu tượng khi được trang trí bằng từ khóa @abstractmethod

Hãy lấy một ví dụ đơn giản

from abc import ABC, abstractmethod
class Company[ABC]:

    def work[self]:
        pass

class Manager[Company]:

    def work[self]:
        print["I assign work to and manage team"]

class Employee[Company]:

    def work[self]:
        print["I complete the work assigned to me"]

# Driver code
R = Manager[]
R.work[]

K = Employee[]
K.work[]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

đa hình

đa hình [điều kiện xảy ra ở một số dạng khác nhau]

Một trong những ví dụ tuyệt vời về sự hiểu biết này sẽ là Ben 10. Anh ấy là một người nhưng anh ấy có thể phục vụ thế giới dưới nhiều hình thức

Quay lại lập trình, nó đề cập đến việc sử dụng một phương thức/toán tử duy nhất để biểu diễn các loại khác nhau trong các tình huống khác nhau

4 trụ cột của OOP là gì?

OOPS Bốn trụ cột .
trừu tượng
đóng gói
Di sản
đa hình

Có bao nhiêu nguyên tắc OOP trong Python?

Tất cả bốn khía cạnh cốt lõi của khung OOP chung đều được hỗ trợ bởi hệ thống lập trình hướng đối tượng của Python. đóng gói, trừu tượng hóa, kế thừa và đa hình.

Khái niệm OOP trong Python là gì?

Khái niệm OOP của Python là gì? . Class, Object, Method, Inheritance, Polymorphism, Data Abstraction, and Encapsulation.

Chủ Đề