class Rect():
def __init__(self, w, h):
self.w = w
self.h = h
def calcArea(self):
return self.w * self.h
class Circle():
def __init__(self, r):
self.r = r
def calcArea(self):
return self.r * self.r * 3.14
class AreaCalc:
def __init__(self, shapes):
self.shapes = shapes
self.outputer = AreaOutput()
self.sumArea()
def sumArea(self):
self.sum_ = sum([area.calcArea() for area in self.shapes])
def output(self, type):
if type == 'sum':
self.outputer.outputSum(self.sum_)
else:
self.outputer.outputSumRound(self.sum_)
class AreaOutput:
def outputSum(self, sum_):
print(sum_)
def outputSumRound(self, sum):
print(round(sum))
circle = Circle(2)
rect = Rect(4, 2)
areaCalc = AreaCalc([circle, rect])
areaCalc.output('sum')
areaCalc.output('sumRound')
Y2xhc3MgUmVjdCgpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHcsIGgpOgogICAgICAgIHNlbGYudyA9IHcKICAgICAgICBzZWxmLmggPSBoCgogICAgZGVmIGNhbGNBcmVhKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLncgKiBzZWxmLmggIAoKY2xhc3MgQ2lyY2xlKCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgcik6CiAgICAgICAgc2VsZi5yID0gcgoKICAgIGRlZiBjYWxjQXJlYShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5yICogc2VsZi5yICogMy4xNAoKICAgICAgCmNsYXNzIEFyZWFDYWxjOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoYXBlcyk6CiAgICAgICAgc2VsZi5zaGFwZXMgPSBzaGFwZXMKICAgICAgICBzZWxmLm91dHB1dGVyID0gQXJlYU91dHB1dCgpCiAgICAgICAgc2VsZi5zdW1BcmVhKCkKCiAgICBkZWYgc3VtQXJlYShzZWxmKToKICAgICAgICBzZWxmLnN1bV8gPSBzdW0oW2FyZWEuY2FsY0FyZWEoKSBmb3IgYXJlYSBpbiBzZWxmLnNoYXBlc10pCgogICAgZGVmIG91dHB1dChzZWxmLCB0eXBlKToKICAgICAgICBpZiB0eXBlID09ICdzdW0nOgogICAgICAgICAgICBzZWxmLm91dHB1dGVyLm91dHB1dFN1bShzZWxmLnN1bV8pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5vdXRwdXRlci5vdXRwdXRTdW1Sb3VuZChzZWxmLnN1bV8pCgpjbGFzcyBBcmVhT3V0cHV0OgogICAgZGVmIG91dHB1dFN1bShzZWxmLCBzdW1fKToKICAgICAgICBwcmludChzdW1fKQoKICAgIGRlZiBvdXRwdXRTdW1Sb3VuZChzZWxmLCBzdW0pOgogICAgICAgIHByaW50KHJvdW5kKHN1bSkpCgpjaXJjbGUgPSBDaXJjbGUoMikKcmVjdCA9IFJlY3QoNCwgMikKYXJlYUNhbGMgPSBBcmVhQ2FsYyhbY2lyY2xlLCByZWN0XSkKYXJlYUNhbGMub3V0cHV0KCdzdW0nKQphcmVhQ2FsYy5vdXRwdXQoJ3N1bVJvdW5kJykKCg==