类的定义
类的定义
回顾:对象 ·对象的构成: -一组相关信息 人存储在实例变量中 一处理该信息的一组方法 人对象内的函数 0 类决定了对象具有哪些信息和方法 一对象是类的实例 一通过类的构造子创建新对象 ·定义自己的类:即以O0方法来组织自己程序要 处理的数据 Lu Chaojun,SJTU 2
Lu Chaojun, SJTU 2 回顾:对象 • 对象的构成: – 一组相关信息 ©存储在实例变量中 – 处理该信息的一组方法 ©对象内的函数 • 类决定了对象具有哪些信息和方法 – 对象是类的实例 – 通过类的构造子创建新对象 • 定义自己的类:即以OO方法来组织自己程序要 处理的数据
编程实例:炮弹模拟 ·程序规格 -输入:发射角,初速度,初始高度 -输出:射程 注:不用微积分,只用一些基本知识来算法化解决. 算法 输入模拟参数:角度,速度,高度,计算位置变化的时间间隔 计算炮弹初始位置xpos,ypos 计算炮弹初始水平和垂直速度xveL,yvel 当炮弹还在飞行,循环: 更新一个时间间隔之后的xpos,ypos,yvel 输出xpos Lu Chaojun,SJTU 3
Lu Chaojun, SJTU 3 编程实例:炮弹模拟 • 程序规格 – 输入:发射角,初速度,初始高度 – 输出:射程 注:不用微积分,只用一些基本知识来算法化解决. • 算法 输入模拟参数:角度,速度,高度,计算位置变化的时间间隔 计算炮弹初始位置xpos,ypos 计算炮弹初始水平和垂直速度xvel, yvel 当炮弹还在飞行,循环: 更新一个时间间隔之后的xpos, ypos, yvel 输出xpos Lu Chaojun, SJTU
编程实例:炮弹模拟(续) def main(): angle input("...(in degrees)") vel input ("...(in meters/sec") ho input ("...(in meters)") time input ("...(in seconds)") xpos,ypos 0,h0 theta angel math.pi /180.0 才 xvel vel math.cos(theta) velocity yvel=velocity*sin(theta) yvel vel math.sin(theta) theta while ypos >0.0: xvel velocity cos(theta) 更新 print"Distance:号0.1f meters."号(pos) Lu Chaojun,SJTU 4
Lu Chaojun, SJTU 4 编程实例:炮弹模拟 (续) def main(): angle = input("...(in degrees)") vel = input("...(in meters/sec") h0 = input("...(in meters)") time = input("...(in seconds)") xpos, ypos = 0, h0 theta = angel * math.pi / 180.0 xvel = vel * math.cos(theta) yvel = vel * math.sin(theta) while ypos >= 0.0: 更新 print "Distance: %0.1f meters." % (xpos) Lu Chaojun, SJTU
编程实例:炮弹模拟(续) ·算法核心部分:更新各值 xposxpos xvel time yvel new yvel -9.8 time ypos ypos time (yvelyvel new)/2 yvelyvel new 模块化设计: def main(): angle,vel,h0,time getInput ( xpos,ypos =0,h0 xvel,yvel getxYComponents(vel,angle) while ypos >0.0: xpos,ypos,yvel updatePos(time,xpos,ypos,xvel,yvel) print"Distance:号0.1f meters."号(xpos) -变量theta和vyel newl呢?-这是自顶向下逐步求精的SoC带来的好处 - 但updateData()似乎不太好? Lu Chaojun,SJTU 5
Lu Chaojun, SJTU 5 编程实例:炮弹模拟(续) • 算法核心部分:更新各值 xpos = xpos + xvel * time yvel_new = yvel 9.8 * time ypos = ypos + time * (yvel + yvel_new) / 2 yvel = yvel_new • 模块化设计: def main(): angle, vel, h0, time = getInput() xpos, ypos = 0, h0 xvel, yvel = getXYComponents(vel, angle) while ypos >= 0.0: xpos,ypos,yvel = updatePos(time,xpos,ypos,xvel,yvel) print "Distance: %0.1f meters." % (xpos) – 变量theta和vyel_new呢? --这是自顶向下逐步求精的SoC带来的好处 – 但updateData()似乎不太好?