composition and aggregation in python

:Concept of Inheritanceوراثت مکانیزمی است که به ما امکان می دهد تمام ویژگی های یک کلاس دیگر را بگیریم و آنها را در کلاس خود اعمال کنیم. کلاس والد کلاسی است که ویژگی ها و توابع از آن مشتق می شوند (به عنوان کلاس پایه نیز نامیده می شود). کلاس فرزند به کلاسی اطلاق می شود که از ویژگی های کلاس دیگری (که به عنوان کلاس مشتق نیز شناخته می شود) استفاده می کند. یک رابطه Is-A نام دیگری برای وراثت است.Syntax: #Parent classclass Parent: # Constructor # Variables of Parent class #Methods ...#Child class inheriting Parent class class Child(Parent): #constructor of child class # variables of child class #methods of child class ... :Concept of Compositionترکیب نوعی تجمع است که در آن دو موجودیت به شدت به یکدیگر وابسته هستند.1- این یک جزء رابطه را نشان می دهد.2- هر دو موجودیت در ترکیب به یکدیگر وابسته هستند.3- هنگامی که ترکیبی بین دو نهاد وجود دارد، شیء تشکیل‌شده نمی‌تواند بدون موجودیت دیگر وجود داشته باشد. #Code to demonstrate Composition #Class Salary in which we are #declaring a public method annual salary class Salary: def __init__(self, pay, bonus): self.pay = pay self.bonus = bonus def annual_salary(self): return (self.pay*12)+self.bonus #Class EmployeeOne which does not # inherit the class Salary yet we will # use the method annual salary using # Composition class EmployeeOne: def __init__(self, name, age, pay, bonus): self.name = name self.age = age #Making an object in which we are #calling the Salary class #with proper arguments self.obj_salary = Salary(pay, bonus) # composition #Method which calculates the total salary # with the help of annual_salary() method # declared in the Salary class def total_sal(self): return self.obj_salary.annual_salary() #Making an object of the class EmployeeOne #and providing necessary arguments emp = EmployeeOne('Geek', 25, 10000, 1500) #calling the total_sal method using #the emp object print(emp.total_sal())Output:121500اکنون همانطور که در کد بالا می بینیم، با موفقیت متد یک کلاس کاملاً متفاوت را در کلاس دیگری که کلاس را به ارث نمی برد با استفاده از مفهوم Composition فراخوانی کرده ایم. :Concept of Aggregationتجمیع مفهومی است که در آن یک شیء از یک کلاس می تواند شیء مستقل دیگری از کلاس دیگر را داشته باشد یا به آن دسترسی داشته باشد.- نشان دهنده رابطه Has-A است.- این یک ارتباط یک طرفه است، یعنی یک رابطه یک طرفه. به عنوان مثال، یک بخش می تواند دانشجو داشته باشد، اما برعکس امکان پذیر نیست و در نتیجه ماهیت یک طرفه دارد.- در تجمیع، هر دو ورودی می توانند به صورت جداگانه باقی بمانند، به این معنی که پایان دادن به یک موجودیت بر موجودیت دیگر تأثیری نخواهد داشت.#Code to demonstrate Aggregation #Salary class with the public method #annual_salary() class Salary: def __init__(self, pay, bonus): self.pay = pay self.bonus = bonus def annual_salary(self): return (self.pay*12)+self.bonus # EmployeeOne class with public method# total_sal()class EmployeeOne: # Here the salary parameter reflects #upon the object of Salary class we # will pass as parameter later def __init__(self, name, age, sal): self.name = name self.age = age # initializing the sal parameter self.agg_salary = sal # Aggregation def total_sal(self): return self.agg_salary.annual_salary() #Here we are creating an object #of the Salary class #in which we are passing the #required parameters salary = Salary(10000, 1500) #Now we are passing the same #salary object we created #earlier as a parameter to #EmployeeOne class emp = EmployeeOne('Geek', 25, salary) print(emp.total_sal())Output:121500از کد بالا، همان خروجی را خواهیم داشت که در قسمت Composition دریافت کرده بودیم. اما تفاوت این است که در اینجا ما یک شی از کلاس Salary در کلاس EmployeeOne ایجاد نمی کنیم.به جای اینکه یک شی از کلاس Salary در خارج ایجاد کنیم و آن را به عنوان پارامتری از کلاس EmployeeOne ارسال کنیم که همان نتیجه را به همراه دارد.