683-类的定义.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
画圆 方法调用 调用程序挂起(暂停),解释器在对象的类中找到对应的方法 方法中的形参赋值为调用者的实参 self的实参就是对象名,不同于其他实参的给出方式 执行方法体 控制权返回调用者,执行下条指令 编程实例: 掷骰子 图形化模拟掷两个骰子,程序显示投掷结果. 提供两个按钮:一个用来投掷,一个用来退出程序. 显然需要两个GUI部件:按钮和骰子. 作业 按钮方法实现例:activate 按钮激活时: 边框由细变粗 填充色由灰变黑 def activate(self): self.label.setFill(black) self.rect.setWidth(2) self.active = 1 可见需要实例变量:Text对象label, Rectangle对象rect, 布尔变量active deactivate()的实现类似 * * * 类的定义 * * 回顾: 对象 对象的构成: 一组相关信息 存储在实例变量中 处理该信息的一组方法 对象内的函数 对象的属性:实例变量和方法 * * * 回顾: 对象 类决定了对象具有哪些信息和方法 对象是类的实例 通过类的构造子创建新对象 定义自己的类: 即以OO方法来组织自己程序要处理的数据 Point 50 50 x: y: Circle circ: 40 center: radius: draw( ) move( ) circ = Circle(Point(50, 50), 40) * * * 回顾: 对象 对象是一个类的实例 类是数据类型(int, float, string)的推广 -- 型 实例/对象 -- 值 实例变量 vs. 变量 方法 vs. 函数 * * 编程实例: 炮弹模拟 程序规格 输入: 发射角, 初速度, 初始高度 输出: 射程 注: 不用微积分, 只用一些基本知识来算法化解决 不考虑风阻力,只考虑重力 * * 编程实例: 炮弹模拟 算法 输入模拟参数:角度, 速度, 高度, 计算位置变化的时间间隔 计算炮弹初始位置xpos, ypos 计算炮弹初始水平和垂直速度xvel, yvel 当炮弹还在飞行, 循环: 更新一个时间间隔之后的xpos, ypos, yvel 输出xpos * * 编程实例:炮弹模拟 (续) def main(): angle = input(...(in degrees)) vel = input(“...(in meters/sec)) h0 = input(...(in meters)) time = input(...(in seconds)) xpos, ypos = 0.0, h0 theta = angel * math.pi / 180.0 xvel = vel * math.cos(theta) yvel = vel * math.sin(theta) while ypos = 0.0: #该条件允许h0=0.0 更新 print Distance: %0.1f meters. % (xpos) * * * 编程实例:炮弹模拟(续) 算法核心部分: 更新各值 xpos = xpos + xvel * time yvel_new = yvel ? 9.8 * time ypos = ypos + time * (yvel + yvel_new)/2 yvel = yvel_new 10个变量 可读性不够好 * * * 编程实例:炮弹模拟(续) 模块化设计: 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()似乎不太好? 函数updateData()的弊端 过多参数: 5个参数, 3个返回值. 函数参量过多通常意味着有更好的组织方式 * * * 编程实例:炮弹模拟(续) OO设计 设计一个抛物体类Projectile. 从而: def main(): angle, vel, h0, time = getInput() cball = Porjectile(angle,vel,h0) while cball.getY() = 0.

文档评论(0)

小玉儿 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档