用Alice学编程第5节课.ppt

上传人:zhu****ei 文档编号:3447382 上传时间:2019-12-14 格式:PPT 页数:27 大小:668.50KB
返回 下载 相关 举报
用Alice学编程第5节课.ppt_第1页
第1页 / 共27页
用Alice学编程第5节课.ppt_第2页
第2页 / 共27页
用Alice学编程第5节课.ppt_第3页
第3页 / 共27页
点击查看更多>>
资源描述
第5讲:类、对象、方法和参数(1)class,object,methodandparameter,面向对象的程序设计(Object-orientedprogramming)中用类、对象和方法来组织程序。这种组织方法的好处:把一个大的程序分成若干个小的模块用和现实生活中一样的概念来设计程序容易发现程序运行错误,5.1类和对象(classANDobject),类(Class):是一个描述一类有共性的物体的概念,如汽车、桌子等。在Alice中,每一类用一个3D模型表示。对象(Object)符合一个类中所描述的共性的实际的物体称为这个类的一个实例(instance),如汽车的共性有:都有一个方向盘、四个轮子、有颜色、排气量等特点。但这仅仅是概念的描述,实际生产出来的汽车就是这个类的一个实例,我们把它叫做一个汽车对象。在Alice中,用第一个字母大写的单词表示类名。如Frog,Airport;而用全部小写的单词表示对象名。如frog,frog1,frog2,frog3,Alice举例,5.2场景级的方法(World-levelmethods),我们所熟悉的方法如move,turntoface,say都是属于某个对象的,这种方法我们称之为类级的方法(class-levelmethods)而我们的程序都存在于World.myfirstmethod中,我们称这个方法为场景级的方法。FirstEncounter_without_methods.a2w,World.myfirstmethod太长带来的问题,随着程序功能越来越多,代码也越来越长,如果我们把这些代码全部放到World.myfirstmethod中,则不仅不容易阅读,而且不容易发现错误。,解决方法,将myfirstmethod中的代码按照功能组织成几个相对独立的代码块,并分别给这些代码块起个名字。如:,DoinordersurprisespiderRobotandalienOnWheelssurpriseeachotherinvestigatespiderRobotgetsacloserlookatalienOnWheelsreactalienOnWheelshidesandspiderRobotsendsmessage,逐步细化(StepwiseRefinement),在原来冗长的代码中分别找出相应的代码放到surprise、investigate、和react中。如:,surpriseDoinorderalienOnWheelsmovesupalienOnWheelssays“whoareyou?spiderRobotsheadturnsaround,在Alice中创建一个新的场景级方法,首先选中World节点选中World节点的method点击createnewmethod,举例,FirstEncounter.a2w该例子中说明的概念:surprise是一个world-levelmethod,因为它定义在World节点中,而且其中包含对多个对象的操作(spiderRobot,alienOnWheels)surprise方法只有被调用(called/invoked)才能有效果。,Myfirstmethod方法是被谁调用的?,自己定义方法的好处,节省时间:写程序时我们可以反复调用这个方法,而不需要重新写一遍。缩短代码长度:原来的代码中的若干行代码可以用这一行调用方法的代码代替。写程序时在一个更高的层次上考虑(“thinkatahigherlevel”),如只要考虑surprise而不用考虑这么多:“alienmovesup;aliensayswhoareyou;robotsheadturnsaround.“thinkatahigherlevel”实际上是一种封装,即用一个方法封装了具体的实现细节。,自己改造Snowpeople例子,Snowpeople_have_not_defined_methods.a2w,5.3方法的参数(Parameter),举例:创作一个动画让甲壳虫乐队的每个成员按顺序分别演出一个独奏曲。,故事板,DotogetherDoinordergeorgeBeetlemoveupgeorgeBeetlemovedownplaysound,DotogetherDoinorderringoBeetlemoveupringoBeetlemovedownplaysound,DotogetherDoinorderpaulBeetlemoveuppaulBeetlemovedownplaysound,DotogetherDoinorderlennonBeetlemoveuplennonBeetlemovedownplaysound,举例,该例子中说明的概念要想播放一段声音,首先要将声音文件导入Alice。该例子仅仅实现了georgeBeetle演奏的动画完成其它三个成员的动画是否需要同样制作三个方法?BeetleBand-v1.5.a2w,一个更简洁的方法,观察BeetleBand-v1.5.a2w,四个成员演奏的动画极其类似,只有演奏者和播放的音乐不同,其它动作类型和顺序都一样。是否可以仅告诉Alice演奏者的名字和对应的音乐,它就可以自动按照这种动画步骤来做呢?也就是说,总结这4个类似的方法的共性,并将它们归一化为一个方法。,参数(Parameter),在我们熟悉的方法中,我们已经使用了方法的参数,如Move的方向,距离,持续时间等等。这些参数给你更多的控制,同样一个方法,由于参数的值不同,效果不一样。一个方法可以有好几个参数,每个参数都必须是某种数据类型,如:一个方法在被调用时它的参数(Parameter)必须被具体的值所代替。如上面的distance,duration分别被0.5meters,0.5seconds代替。一个方法可被多次调用,而每次调用时传进去的值都可能不一样。,参数的种类,Alice中提供了几种类型的参数:,定义带有参数的方法,soloParameters:bandMember,musicDotogetherDoinorderbandMembermoveupbandMembermovedownplaymusic,定义一个演奏的方法:solo,同时定义该方法的两个参数bandMember,music分别是Object类型和Sound类型。,Demo,BeetleBand-v2该例子中说明的概念定义参数的方法:名字和类型参数相当于占位符(placeholder),即在调用这个方法时,这里位置是需要指定具体值的。,增加一个数值类型的参数,增加一个数值类型的参数来表达每个演奏者跳起的高度。beetleBand-add_height_para.a2w,不增加参数个数,但是用演奏者的身高来控制跳起来的高度。beetleBand-control_height_with_who_para.a2w,一个参数在方法中可以多次被用到,作业5-1,雪人的脱帽礼为Snowpeople虚拟世界(参考文件:Snowpeople_have_not_defined_methods.a2w)添加一个全局方法。这个名为flipHats的新方法,将在女雪人把头转向男雪人之后被调用。在flipHats方法中,男雪人用右手摘下帽子,然后优雅地把帽子指向女雪人,随后再把帽子戴到自己头上。在男雪人致完脱帽礼的时候,女雪人也会摘下帽子致脱帽礼。参考视频文件exercise-5-1.swf,作业5-2,迷惑的袋鼠Kanga在内陆四处张望寻觅早餐,Kanga(Animals中的袋鼠kangaroo)碰到了相当奇怪的路标sign(RoadsandSigns文件夹)。Kanga盯着路标看了几秒,然后把头歪到一边显示她的困惑。接着Kanga向左跳了一些,然后转向路标,随后又向右跳了一些,再次转向路标,这样重复了好几次。创建一个程序来模拟这个漫画故事。编写hopLeft方法(Kanga左转一些后跳起,然后转向路标)和hopRight方法(Kanga右转一些后跳起,然后转向路标)。每次跳跃,Kanga都会离路标更近些。在World.myfirstmethod中,交替地调用hopLeft与hopRight方法(两次)让Kanga沿“之”形跳向路标参考视频:参考视频文件exercise-5-2.swf,分析,创建一个新的虚拟世界,包含如下对象:一个排球网,一个排球(Sports),以及滑冰女孩和普通女孩(People),如下图所示。场景中的每个人都有不同的身高和运动能力。假设每个人都能跳到身高的1/4去击打排球。编写程序让每个人都能在跳起预定的高度后,再落到原来的位置。调用内置的height函数,用数学表达式计算每个人应该跳起和落下的高度。参考文件:volleyballJump.a2w请仔细分析其中对人体的动作控制。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!