1. 範例一

以下是一個聚合的例子,在類別圖中,1個課程一定要有1個教師。撰寫課程類別時,在建構元中要傳入一個教師物件(不在建構元生成),當課程物件從記憶體刪除時,教師物件並不會被刪除。

(1) 以下是「Teacher」類別:

class Teacher():
    def __init__(self, dept, name):
        self.dept = dept
        self.name = name

    @property
    def dept(self): return self.__dept

    @dept.setter
    def dept(self, dept): self.__dept = dept

    @property
    def name(self): return self.__name

    @name.setter
    def name(self, name): self.__name = name

    def info(self):
        return f'【{self.dept}, {self.name}】'

(2) 以下是「Course」類別

class Course():
    def __init__(self, name, credit, teacher):
        self.name = name
        self.credit = credit
        self.teacher = teacher  #設定Teacher的參照, 沒有生成Teacher物件

    @property
    def name(self): return self.__name

    @name.setter
    def name(self, name): self.__name = name

    @property
    def credit(self): return self.__credit

    @credit.setter
    def credit(self, credit): self.__credit = credit

    @property
    def teacher(self): return self.__teacher

    @teacher.setter
    def teacher(self, teacher): self.__teacher = teacher

    def info(self):
        return f'{self.name}, {self.credit}學分, 教師{self.teacher.info()}'    

(3) 測試

teacher = Teacher('資管系', '王小明') #生成一個教師物件
course = Course('Java', 3, teacher)

print(course.info())

(4) 執行結果

Java, 3學分, 教師【資管系, 王小明】

Last updated