class Visitor_Forms(Form): # Visitor::ObjectStructure
def __init__(self, **args):
self.InitializeComponent()
self.init()
def init(self):
self.empls = # Employee
for e in [
Employee("Susan Bear", 55000, 12, 1),
Employee("Adam Gehr", 150000, 9, 0),
Employee("Fred Harris", 50000, 15, 2),
Employee("David Oakley", 57000, 12, 2),
Employee("Larry Thomas", 100000, 20, 6),
Boss("Leslie Susi", 175000, 16, 4, bonusDays=12),
Boss("Laurence Byerly", 35000, 17, 6, bonusDays=17),
]:
self.empls.append(e)
def InitializeComponent(self):
self.lsVac = self._lsVac()
self.btCompute = self._btCompute()
self._Controls()
def _lsVac(self):
return ListBox(
Location = Point(32, 32),
Size = Size(216, 186),
)
def _btCompute(self):
e = Button(
Location = Point(88, 232),
Size = Size(72, 24),
Text = "Compute",
)
e.Click += self.btCompute_Click
return e
def _Controls(self):
self.ClientSize = Size(292, 273)
for e in self.lsVac, self.btCompute:
self.Controls.Add(e)
self.Text = "Visitor demo"
- Controls に各コントロール e を追加します。
def btCompute_Click(self, sender, e):
vac = VacationVisitor()
bvac = bVacationVisitor()
for e in self.empls:
e.accept(vac)
e.accept(bvac)
self.lsVac.Items.Add("Total vacation days=%s" %vac.totalDays)
self.lsVac.Items.Add("Total boss vacation days=%s"%bvac.totalDays)