程序设计
手雷爆炸
"""
以面向对象思想,描述下列情景:
情景:手雷爆炸,可能伤害敌人(头顶爆字)或者玩家(碎屏)。
变化:还可能伤害房子、树、鸭子....
要求:增加新事物,不影响手雷.
"""
class Grenade:
def boom(self,target):
print("手雷爆炸")
target.struck()
class Target:
def __init__(self, name):
self.name = name
def struck(self):
pass
class Player(Target):
def struck(self):
print(self.name + "(碎屏)")
class House(Target):
def struck(self):
print(self.name+"(倒塌)")
g = Grenade()
player = Player("玩家")
house = House("房子")
g.boom(player)
g.boom(house)
员工管理器
"""
有一家公司有如下几种岗位:
-- 程序员:底薪 + 项目分红
-- 测试员:底薪 + Bug数*5
-- ...
创建员工管理器:
-- 记录所有员工
-- 计算所有员工总薪资
封装:程序员/测试员/员工管理器
继承:创建员工类,隔离员工管理器与程序员和测试员的变化
多态:程序员/测试员重写员工类的计算薪资方法
"""
class Staff:
def __init__(self,money):
self.money = money
def get_money(self):
return self.money
class Programmer(Staff):
def __init__(self,money,com):
super().__init__(money)
self.com = com
def get_money(self):
return super().get_money() + self.com
class Tester(Staff):
def __init__(self,money,num):
super().__init__(money)
self.num = num
def get_money(self):
return super().get_money() + self.num*5
class StaffController:
def __init__(self):
self.__clist = []
pass
def add_clist(self,staff):
if isinstance(staff,Staff):
self.__clist.append(staff)
def select(self):
return self.__clist
def get_all_money(self):
all_money = 0
for i in self.__clist:
all_money += i.get_money()
return all_money
staff = StaffController()
staff.add_clist(Programmer(5000, 3000))
staff.add_clist(Tester(3000, 3))
print(Programmer(5000,3000).get_money())
print(Tester(3000,3).get_money())
print(staff.get_all_money())
创建图形管理器
"""
创建图形管理器
-- 记录多种图形(圆形、矩形....)
-- 提供计算总面积的方法.
要求:增加新图形,不影响图形管理器.
测试:
创建图形管理器,存储多个图形对象。
通过图形管理器,调用计算总面积方法.
"""
class Graphical:
def __init__(self,name=''):
self.name = name
def get_area(self):
pass
class Rectangle(Graphical):
def __init__(self,name,l,w):
super().__init__(name)
self.l = l
self.w = w
def get_area(self):
return self.l * self.w
class Circular(Graphical):
def __init__(self,name,r):
super().__init__(name)
self.r = r
def get_area(self):
return 3.14 * self.r * self.r
class GraphicalController:
def __init__(self):
self.__glist = []
def add_glist(self,graphical):
if isinstance(graphical,Graphical):
self.__glist.append(graphical)
def get_all_area(self):
sum = 0
for i in self.__glist:
sum += i.get_area()
return sum
g = GraphicalController()
g.add_glist(Rectangle('矩形',3,3))
g.add_glist(Circular('圆形',3))
print(g.get_all_area())
最后一次更新于2022-10-25 15:34
0 条评论