以下のスクリプトをオブジェクト指向を使ったものに書き換えてください。
def hello(num):
if num == 1:
print 'Hello World'
elif num == 2:
print 'Goodby World'
hello(1)
hello(2)
(解答例)
class HelloWorld(object):
def __init__(self, num):
self.message = MessageCreate(num)
def hello(self):
self.message.printMessage()
class Message(object):
def __init__(self):
self.message = ""
def printMessage(self):
print self.message
class HelloMessage(Message):
def __init__(self):
self.message = "Hello World"
class GoodbyMessage(Message):
def __init__(self):
self.message = "Goodby World"
class MessageList(object):
def __init__(self):
self.messages = {1:HelloMessage(), 2:GoodbyMessage()}
def get(self, num):
return self.messages.get(num, Message())
class MessageCreate(object):
def __init__(self, num):
mlist = MessageList()
self.messages = mlist.get(num)
def printMessage(self):
self.messages.printMessage()
obj1 = HelloWorld(1)
obj1.hello()
obj2 = HelloWorld(2)
obj2.hello()
以下のスクリプトは、午前と午後で表示する文字列を変更するものです。
これをオブジェクト指向を使ったものに書き換えてください。
import datetime
def greeting():
if isam():
print 'Good morning Mr.Abe'
return
print 'Good afternoon Mr.Abe'
def isam():
t = datetime.date.today()
d1 = datetime.datetime(t.year, t.month, t.day ,12)
d2 = datetime.datetime.now()
return d1 > d2
greeting()
(解答例)
import sys
import datetime
class GreentingService(object):
def __init__(self):
self.output = Output()
def printGreeting(self):
greeting = Greeting()
self.output.outGreeting(greeting.getGreeting())
class Greeting(object):
def __init__(self):
self.user = 'Abe'
self.format = Format()
def getGreeting(self):
message = messageCreate()
return self.format.format(self.user, message.getString())
class Format(object):
def __init__(self):
self.form = '{1} Mr.{0}\n'
def format(self, user, mes):
return self.form.format(user, mes)
class GreetingDict(object):
def __init__(self):
self.mlist = {}
def add(self, key, val):
self.mlist[key] = val
def get(self, key):
return self.mlist.get(key, '')
class GreetingCreate(object):
def __init__(self):
self.ampm = Ampm()
self.message = GreetingDict()
self.message.add('am', 'Good morning')
self.message.add('pm', 'Good afternoon')
def getString(self):
ampm = self.ampm.get()
return self.message.get(ampm)
class Output(object):
def __init__(self):
self.fp = sys.stdout
def outGreeting(self, mes):
self.fp.write(mes)
class Ampm(object):
def __init__(self):
self.ampm = {True:'am', False:'pm'}
def get(self):
t = datetime.date.today()
d1 = datetime.datetime(t.year, t.month, t.day ,12)
d2 = datetime.datetime.now()
return self.ampm[d1 > d2]
obj = GreentingService()
obj.printGreeting()