:Concept of Inheritance
وراثت مکانیزمی است که به ما امکان می دهد تمام ویژگی های یک کلاس دیگر را بگیریم و آنها را در کلاس خود اعمال کنیم. کلاس والد کلاسی است که ویژگی ها و توابع از آن مشتق می شوند (به عنوان کلاس پایه نیز نامیده می شود). کلاس فرزند به کلاسی اطلاق می شود که از ویژگی های کلاس دیگری (که به عنوان کلاس مشتق نیز شناخته می شود) استفاده می کند. یک رابطه Is-A نام دیگری برای وراثت است.
Syntax:
#Parent class
class 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 ارسال کنیم که همان نتیجه را به همراه دارد.