پایتون

جلسه ۶۲: Aggregation در پایتون

در این درس شما با یک روش دیگر از ارتباط بین کلاس‌ها آشنا میشوید.Aggregation براساس مدل Has-a ساخته‌شده است. یک رابطه بین parent‌ و ‌child  بین دو کلاس وحود دارد. که یک کلاس دارای شی از کلاس دیگر است.اما چه چیزی Aggregation را منحصر به فرد میکند؟

Lifetime  مستقل

(در aggregation طول عمر شی‌ای که متعلق به جای دیگری است، به مکان ارجاع بستگی ندارد)شی اصلی میتواند حذف شود اما شی‌ای که متعلق به آن بوده‌است همچنان در برنامه میتواند وجود داشته باشد. در aggregation کلاس‌های parent فقط به کلاس‌های child اشاره‌ای دارند که این اتفاق وابستگی را از بین میبرد.

شما میتوانید از تصویر بالا حدس بزنید که ما برای پیاده‌سازی aggregation  به اشیای رفرنس نیاز داریم.

مثال

یک مثالی را میزنیم از مردم و کشورشان. هر شخص مرتبط است با یک کشور، اما یک کشور نیز میتواند بدون وجود یک فرد هم وجود داشته باشد.
class Country:
    def __init__(self, name=None, population=0):
        self.name = name
        self.population = population

    def printDetails(self):
        print("Country Name:", self.name)
        print("Country Population", self.population)


class Person:
    def __init__(self, name, country):
        self.name = name
        self.country = country

    def printDetails(self):
        print("Person Name:", self.name)
        self.country.printDetails()


c = Country("Wales", 1500)
p = Person("Joe", c)
p.printDetails()

# deletes the object p
del p
print("")
c.printDetails()
همانطور که ملاحظه میشود، شی کلاس Country یعنی C، هنوز بعد از حذف‌شدن شی Person یعنی P وجود دارد. این موضوع یک ارتباط ضعیفی بین دو کلاس به وجود میآورد.در درس بعدی یک تکنیک دیگر در ارتباط بین اشیا در پایتون یادخواهید گرفت: یعنی composition.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا