Thành phần trong python với ví dụ

Như tên ngụ ý, Trong thành phần, một trong các lớp được "tạo thành" từ một hoặc nhiều thể hiện của các lớp khác

Nói cách khác, một lớp là vùng chứa và lớp khác là nội dung và nếu bạn xóa đối tượng vùng chứa thì tất cả các đối tượng nội dung của nó cũng bị xóa

Thành phần mô hình mối quan hệ "có" giữa "Tổng hợp" và "Thành phần"

Thành phần được thể hiện thông qua một đường có hình thoi tại lớp tổng hợp trỏ đến lớp thành phần. Mặt tổng hợp có thể thể hiện bản chất của mối quan hệ. Số lượng cho biết số lượng hoặc phạm vi hợp lệ của các đối tượng Thành phần mà lớp Tổng hợp sẽ chứa

Trong sơ đồ ở trên, 1 biểu thị rằng lớp Composite chứa một đối tượng thuộc loại Thành phần. Cardinality có thể được thể hiện theo những cách sau

  1. Một số cho biết số lượng phiên bản Thành phần có trong Phiên bản tổng hợp
  2. Biểu tượng * cho biết rằng lớp Composite có thể chứa một số lượng khác nhau các phiên bản Thành phần
  3. Một phạm vi 1. 4 cho biết rằng lớp Tổng hợp có thể chứa một loạt các phiên bản Thành phần. Phạm vi được biểu thị bằng số lượng phiên bản tối thiểu và tối đa hoặc tối thiểu và nhiều phiên bản như trong 1. *

Đừng nhầm lẫn Composition với Inheritance. Thành phần có nghĩa là một đối tượng biết một đối tượng khác và ủy thác rõ ràng một số nhiệm vụ cho nó. Nói một cách đơn giản, Kế thừa mở rộng [kế thừa] một lớp, trong khi Thành phần sử dụng một thể hiện của lớp

Ví dụ: trong ví dụ bên dưới, chúng tôi đã khởi tạo lớp Mức lương bằng cách sử dụng self. obj_salary rồi sử dụng self. obj_salary  trong phương thức total_salary bên trong lớp Nhân viên

>>> class Salary:
        def __init__[self, pay, bonus]: 
            self.pay=pay 
            self.bonus=bonus
        def annual_salary[self]:
            return [self.pay*12] + self.bonus 
>>>  class Employee:  
         def __init__[self, name, age, pay, bonus]: 
             self.name=name
             self.age=age  
             self.obj_salary=Salary[pay, bonus]
         def total_salary[self]: 
             return self.obj_salary.annual_salary[]  
>>>  emp = Employee['max', 25, 15000, 10000]
>>>  print[emp.total_salary[]]  
output:-
    190000
 

Trong ví dụ của chúng tôi, lớp Nhân viên đóng vai trò như Lớp chứa và lớp Lương bên trong lớp Nhân viên đóng vai trò như nội dung trong đó. Thành phần đại diện cho một phần của mối quan hệ. trong ví dụ của chúng tôi. Tiền lương là một phần của nhân viên

Thành phần là một trong những khái niệm quan trọng của lập trình hướng đối tượng [OOPs]. Thành phần về cơ bản cho phép chúng tôi tạo các đối tượng kiểu phức tạp bằng cách kết hợp các loại đối tượng khác trong chương trình. Thành phần đại diện cho loại 'có mối quan hệ' hoặc chúng ta có thể gọi thành phần là 'có mối quan hệ' trong khái niệm OOP. Nó có nghĩa là một lớp tổng hợp hiện diện trong chương trình có thể chứa các đối tượng từ các thành phần của lớp khác và loại mô hình quan hệ này được gọi là có một mối quan hệ

  • Ghi chú. Các lớp chứa các đối tượng từ các lớp khác trong chương trình được gọi là các lớp tổng hợp trong khi các lớp mà chúng ta sử dụng để tạo các kiểu mô hình quan hệ phức tạp hơn được gọi là các thành phần

Nhìn vào sơ đồ UML sau để hiểu về thành phần hoặc có một mô hình quan hệ

tổng hợp

Trong sơ đồ UML ở trên, chúng ta đã biểu diễn hai loại lớp khác nhau. e. , composite và linh kiện. Mối quan hệ giữa vật liệu tổng hợp và các thành phần là thành phần. Như chúng ta có thể thấy rằng chúng ta đã biểu diễn thành phần thông qua một đường trong đó viên kim cương từ lớp tổng hợp hướng về phía lớp thành phần biểu thị mối quan hệ thành phần

Trong quan hệ thành phần, phía lớp tổng hợp đại diện cho lực lượng. Về cơ bản, số lượng có nghĩa là số phạm vi hoặc đối tượng hợp lệ của lớp thành phần mà một lớp tổng hợp chứa trong đó. Như chúng ta có thể thấy trong sơ đồ trên, số 1 trong lớp tổng hợp chỉ đại diện cho đối tượng của loại thành phần lớp có mặt trong lớp tổng hợp thông qua thành phần

Chúng ta có thể thể hiện cardinality của thành phần thông qua các cách sau

  • Bằng cách sử dụng một số [1, 2, 3, v.v. ]
  • Bằng cách sử dụng biểu tượng *
  • Bằng cách xác định một phạm vi trong hỗn hợp [1. 3, 2. 5, v.v. ]

Thành phần cho phép chúng tôi sử dụng lại mã của mình bằng cách thêm các đối tượng với các đối tượng mới khác, tính năng không có trong khái niệm thừa kế

Thành phần trong Python

Chúng tôi biết rằng Python là ngôn ngữ lập trình hướng đối tượng nên nó cũng tuân theo phương pháp thành phần. Trong Python, thành phần cho phép chúng ta sử dụng lại việc triển khai đối tượng lớp thành phần trong các lớp tổng hợp. Chúng ta phải nhớ rằng lớp tổng hợp không thực sự kế thừa giao diện của lớp thành phần mà nó đang điều chỉnh giao diện của các thể hiện của lớp thành phần

Mối quan hệ thành phần trong Python giữa lớp tổng hợp và lớp thành phần được coi là liên kết lỏng lẻo. Điều đó có nghĩa là nếu chúng ta thay đổi lớp thành phần thì nó sẽ hiếm khi ảnh hưởng đến lớp tổng hợp và nếu chúng ta thay đổi lớp tổng hợp thì nó sẽ không bao giờ ảnh hưởng đến lớp thành phần. Tính năng sáng tác này trong Python cung cấp cho chúng tôi khả năng thích ứng tốt hơn với những thay đổi. Nó cũng cho phép chúng tôi giới thiệu các thay đổi mới trong ứng dụng theo yêu cầu mà không ảnh hưởng đến mã hiện có

Đầu tiên, chúng ta sẽ hiểu điều này thông qua một ví dụ cơ bản nơi chúng ta sẽ sử dụng khái niệm cơ bản về thành phần trong chương trình Python của mình và sau đó chúng ta sẽ tiếp tục với việc sử dụng thành phần

Thí dụ

 # create a component class in program
 class ComponentClass:
 # create the composite class constructor in component
             def __init__[self]:
                         print['An object for the Component class is created ...']
             # using the composite class instance method
             def mk1[self]:
                         print['The Component class method mk1[] is executed successfully ...']
 # create a composite class in program
 class CompositeClass:
             # create a class constructor for composite class
             def __init__[self]:
                         # creating an instance for the component class
                         self.inst1 = ComponentClass[]                   
                         print['An object for the Composite class is also created ...']
             # creating a class instance method for composite class
             def mk[self]:             
                         print['The Composite class method mk[] is also successfully executed ...']
                         # calling the mk1[] method of component class in composite class
                         self.inst1.mk1[]
 # creating an instance for the composite class
 inst2 = CompositeClass[]
 # calling out mk[] method from the composite class
 inst2.mk[] 

đầu ra

 An object for the Component class is created ...
 An object for the Composite class is also created ...
 The Composite class method mk[] is also successfully executed ...
 The Component class method mk1[] is executed successfully .. 

Giải trình. Trong chương trình đã cho ở trên, chúng ta đã tạo hai lớp i. e. , lớp tổng hợp và lớp thành phần và đặt tên cụ thể cho chúng. ComponentClass và CompositeClass chia sẻ mối quan hệ 'có một loại' giữa chúng tôi. e. , quan hệ thành phần. Chúng tôi cũng đã tạo một đối tượng cho cả hai lớp. Để sử dụng thành phần giữa các lớp, chúng tôi đã tạo một hàm tạo cho lớp thành phần. Chúng ta có thể thấy rằng chúng ta cũng đã định nghĩa hai phương thức vào các lớp tương ứng. e. , mk[] & mk1[]. Chúng ta đã gọi phương thức mk1[] của lớp thành phần bên trong phương thức mk[] của lớp tổng hợp. Vì vậy, bất cứ khi nào chúng ta gọi mk1[] trong chương trình, phương thức mk[] cũng sẽ được gọi ra. Chúng ta cũng có thể thấy điều này trong đầu ra của chương trình

  • Đó là cách chúng tôi sử dụng quan hệ thành phần giữa lớp tổng hợp và lớp thành phần trong chương trình Python của chúng tôi. Bây giờ, hãy tiếp tục với việc sử dụng bố cục trong Python

Sử dụng Thành phần trong Python

Như chúng ta đã thảo luận rằng với sự trợ giúp của thành phần, chúng ta có thể sử dụng giao diện của các đối tượng lớp thành phần trong lớp tổng hợp. Chúng tôi cũng có thể sử dụng lại mã cho ví dụ và giao diện của nó. Bằng cách này, chúng tôi có thể tiết kiệm rất nhiều thời gian và viết mã cho nó. Hãy cùng tìm hiểu cách bố cục trong Python sẽ thực sự hữu ích cho chúng ta trong cuộc sống hàng ngày thông qua chương trình ví dụ sau

  • Đầu tiên tạo một tệp chương trình Python bằng cách viết chương trình sau vào đó
 # create an address class in the program
 class AddressClass:
     # define the components of the address class with default function
     def __init__[self, Street1, LiveinCity, LiveinState, PostalCode, Country, Street2 = '']:
         # defining components of address class as variables
         self.Street1 = Street1
         self.Street2 = Street2
         self.LiveinCity = LiveinCity
         self.LiveinState = LiveinState
         self.PostalCode = PostalCode
         self.Country = Country
     # define the properties of the address class with default function
     def __str__[self]:
         TotalLines = [self.Street1]
         # using the if method to append the lines
         if self.Street2:
             lines.append[self.Street2]
         # printing following components in next line
         TotalLines.append[f'{self.LiveinCity}, {self.LiveinState} {self.PostalCode} {self.Country}']
         return '\n'.join[TotalLines] # appending the lines for output 

Sau khi viết chương trình trên, hãy lưu tệp Python này vào đĩa [Chúng tôi đã lưu nó bằng cách thay đổi. tên py trong thiết bị]

  • Sau đó, mở một tệp chương trình Python khác và viết chương trình sau vào đó
 # import the python program script for the address class
 from changing import AddressClass
 # define the elements for the address class
 Address1 = AddressClass['55 Main St.', 'Concord City', 'NH25', '03301', 'Mexico']
 Address2 = AddressClass['36 Side St.', 'New Mexico City', 'NH67', '033207', 'Mexico']
 # print the address elements in the output
 print['The first address element we added is: ']
 print[Address1]
 print['The second address element we added is: ']
 print[Address2] 

đầu ra

 The first address element we added is:
 55 Main St.
 Concord City, NH25 03301 Mexico
 The second address element we added is:
 36 Side St.
 New Mexico City, NH67 033207 Mexico 

Giải trình

Trong chương trình trên, chúng ta đã sử dụng quan hệ thành phần trong lớp địa chỉ mà chúng ta đã định nghĩa trong phần thay đổi. tập tin kịch bản py

Trong lớp địa chỉ, chúng ta cũng đã định nghĩa các thành phần của nó. Sau đó, chúng ta đặt các thành phần của lớp địa chỉ thành các biến để nó có thể lưu trữ các giá trị trong đó. Sau đó, chúng tôi đã sửa đổi các thành phần và nối thêm các dòng cho các thành phần trong đầu ra

Chúng tôi đã sử dụng câu lệnh if cho nó. Sau đó, chúng tôi đã lưu tệp script trong thiết bị. Chúng tôi đã mở một tệp Python khác sau đó như chúng tôi có thể thấy ở trên. Trong tệp thứ hai, chúng tôi đã nhập lớp địa chỉ từ tệp đang thay đổi. tập tin kịch bản py. Chúng tôi đã sử dụng addressclass[] để thêm các thành phần của địa chỉ trong đó. Sau đó, các yếu tố chúng tôi đã thêm vào, chúng tôi lưu trữ chúng dưới dạng biến. Sau đó, chúng tôi đã in các thành phần địa chỉ được lưu trữ trong các biến ở đầu ra

Chúng tôi đã triển khai hàm __str[]__ trong lớp địa chỉ để sửa đổi các thành phần của lớp địa chỉ i. e. , cách chúng được hiển thị và nối thêm dòng vào đầu ra. Trong khi chúng ta sử dụng các thành phần của lớp địa chỉ, nó cũng sẽ gọi hàm __str[]__ để gọi ra. Điều này là do hàm quan hệ tổng hợp mà chúng ta đã sử dụng trong lớp địa chỉ. Nó sẽ giúp chúng ta sử dụng lại code đã viết và giao diện của hàm __str[]__

Đó là một ví dụ tốt về thành phần?

Ví dụ: Lớp 'Người' là thành phần của Tim và phổi . Khi đối tượng con người chết, không có bộ phận nào tồn tại. Thành phần là một hình thức tổng hợp bị hạn chế. Trong Thành phần, một lớp bao gồm một lớp khác và phụ thuộc vào nó để nó không thể tồn tại về mặt chức năng nếu không có lớp khác.

Thành phần được triển khai như thế nào trong Python?

Triển khai Bố cục trong Python . Trong ví dụ trên, tham chiếu lớp Car has-A Engine. Ở đây bên trong lớp Car chúng ta cũng có thể tạo các biến và phương thức khác nhau. By using the class names or by creating an object we can access the member of one class inside another class. In these above example class Car has-A Engine class reference. Here inside class Car also we can create different variables and methods.

Thành phần và tập hợp trong Python giải thích bằng ví dụ là gì?

Thành phần là một loại Tập hợp trong đó hai thực thể cực kỳ phụ thuộc vào nhau . Nó chỉ ra một thành phần quan hệ. Cả hai thực thể đều phụ thuộc vào nhau trong thành phần. Đối tượng tổng hợp không thể tồn tại mà không có thực thể khác khi có một thành phần giữa hai thực thể.

một thành phần trong mã là gì?

Thông thường, các lập trình viên, những người thích viết mã "ngắn gọn", sẽ kết hợp nhiều thao tác vào một dòng mã duy nhất . Đây được gọi là "sáng tác". Lúc đầu có thể khó hiểu, nhưng khi bạn đã quen với nó, chương trình sẽ ngắn hơn.

Chủ Đề