以下是一個聚合的例子,在類別圖中,1個課程一定要有1個教師。撰寫課程類別時,在建構元中要傳入一個教師物件(不在建構元生成),當課程物件從記憶體刪除時,教師物件並不會被刪除。
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}】'
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()}'
teacher = Teacher('資管系', '王小明') #生成一個教師物件
course = Course('Java', 3, teacher)
print(course.info())
Java, 3學分, 教師【資管系, 王小明】