编程实例:炮弹模拟(续) ·函数updateData()的弊端 -过多参数:5个参数,3个返回值 一函数参量过多通常意味着有更好的组织方式 ·OO设计:设计一个抛物体类Projectile.从而: def main(): angle,vel,h0,time getInput ( cball Porjectile(angle,vel,h0) while cball.gety()>=0.0: cball.update(time) print "Distance:$0.1f meters."(cball.getx()) - 隐藏了对炮弹的描述信息xpos,ypos,xvel,yvel Lu Chaojun,SJTU 6
Lu Chaojun, SJTU 6 编程实例:炮弹模拟(续) • 函数updateData()的弊端 – 过多参数: 5个参数,3个返回值. – 函数参量过多通常意味着有更好的组织方式 • OO设计:设计一个抛物体类Projectile.从而: def main(): angle, vel, h0, time = getInput() cball = Porjectile(angle,vel,h0) while cball.getY() >= 0.0: cball.update(time) print "Distance: %0.1f meters." % (cball.getX()) – 隐藏了对炮弹的描述信息:xpos, ypos, xvel, yvel
类的定义 ·语法 c1ass<类名>: <方法定义> 一方法定义:同函数定义 人方法是依附于类的函数.一般函数则是独立的. 人方法的第一个参量是专用的:指向方法的作用对 象. +传统上习惯用self这个名字 一回忆:对象是数据和操作的结合. 人上面的类定义中,方法对应于操作.但数据呢? Lu Chaojun,SJTU 7
类的定义 • 语法 class <类名>: <方法定义> – 方法定义:同函数定义. ©方法是依附于类的函数.一般函数则是独立的. ©方法的第一个参量是专用的:指向方法的作用对 象.ª传统上习惯用self这个名字. – 回忆:对象是数据和操作的结合. ©上面的类定义中,方法对应于操作.但数据呢? Lu Chaojun, SJTU 7
例:类定义 ·多面骰子 #msdie.py from random import randrange class MSDie: def init (self,s): self.sides s self.value 1 def roll(self): self.value randrange(1,self.sides+1) def getvalue(self): return self.value def setvalue(self,v): self.value v Lu Chaojun,SJTU 8
Lu Chaojun, SJTU 8 例:类定义 • 多面骰子 #msdie.py from random import randrange class MSDie: def __init__(self,s): self.sides = s self.value = 1 def roll(self): self.value = randrange(1,self.sides+1) def getValue(self): return self.value def setValue(self,v): self.value = v