用Alice学编程第5节.ppt

上传人:小飞机 文档编号:4987133 上传时间:2023-05-27 格式:PPT 页数:27 大小:536KB
返回 下载 相关 举报
用Alice学编程第5节.ppt_第1页
第1页 / 共27页
用Alice学编程第5节.ppt_第2页
第2页 / 共27页
用Alice学编程第5节.ppt_第3页
第3页 / 共27页
用Alice学编程第5节.ppt_第4页
第4页 / 共27页
用Alice学编程第5节.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《用Alice学编程第5节.ppt》由会员分享,可在线阅读,更多相关《用Alice学编程第5节.ppt(27页珍藏版)》请在三一办公上搜索。

1、第5讲:类、对象、方法和参数(1)class,object,method and parameter,面向对象的程序设计(Object-oriented programming)中用类、对象和方法来组织程序。这种组织方法的好处:把一个大的程序分成若干个小的模块 用和现实生活中一样的概念来设计程序 容易发现程序运行错误,5.1 类和对象(class AND object),类(Class):是一个描述一类有共性的物体的概念,如汽车、桌子等。在Alice中,每一类用一个3D模型表示。对象(Object)符合一个类中所描述的共性的实际的物体称为这个类的一个实例(instance),如汽车的共性有:都

2、有一个方向盘、四个轮子、有颜色、排气量等特点。但这仅仅是概念的描述,实际生产出来的汽车就是这个类的一个实例,我们把它叫做一个汽车对象。在Alice中,用第一个字母大写的单词表示类名。如 Frog,Airport;而用全部小写的单词表示对象名。如 frog,frog1,frog2,frog3,Alice举例,5.2 场景级的方法(World-level methods),我们所熟悉的方法如 move,turn to face,say都是属于某个对象的,这种方法我们称之为类级的方法(class-level methods)而我们的程序都存在于World.my first method中,我们称这个

3、方法为场景级的方法。FirstEncounter_without_methods.a2w,World.my first method太长带来的问题,随着程序功能越来越多,代码也越来越长,如果我们把这些代码全部放到World.my first method 中,则不仅不容易阅读,而且不容易发现错误。,解决方法,将my first method中的代码按照功能组织成几个相对独立的代码块,并分别给这些代码块起个名字。如:,Do in order surprise spiderRobot and alienOnWheels surprise each other investigate spiderR

4、obot gets a closer look at alienOnWheels react alienOnWheels hides and spiderRobot sends message,逐步细化(Stepwise Refinement),在原来冗长的代码中分别找出相应的代码放到surprise、investigate、和react中。如:,surpriseDo in order alienOnWheels moves up alienOnWheels says“who are you?spiderRobots head turns around,在Alice中创建一个新的场景级方法,首

5、先选中World节点 选中World节点的method点击create new method,举例,FirstEncounter.a2w该例子中说明的概念:surprise 是一个 world-level method,因为它定义在World节点中,而且其中包含对多个对象的操作(spiderRobot,alienOnWheels)surprise 方法只有被调用(called/invoked)才能有效果。,My first method方法是被谁调用的?,自己定义方法的好处,节省时间:写程序时我们可以反复调用这个方法,而不需要重新写一遍。缩短代码长度:原来的代码中的若干行代码可以用这一行调用方

6、法的代码代替。写程序时在一个更高的层次上考虑(“think at a higher level”),如只要考虑surprise 而不用考虑这么多:“alien moves up;alien says who are you;robots head turns around.“think at a higher level”实际上是一种封装,即用一个方法封装了具体的实现细节。,自己改造Snowpeople例子,Snowpeople_have_not _defined_methods.a2w,5.3 方法的参数(Parameter),举例:创作一个动画让甲壳虫乐队的每个成员按顺序分别演出一个独奏曲

7、。,故事板,Do together Do in order georgeBeetle move up georgeBeetle move down play sound,Do together Do in order ringoBeetle move up ringoBeetle move down play sound,Do together Do in order paulBeetle move up paulBeetle move down play sound,Do together Do in order lennonBeetle move up lennonBeetle move

8、down play sound,举例,该例子中说明的概念 要想播放一段声音,首先要将声音文件导入Alice。该例子仅仅实现了georgeBeetle演奏的动画 完成其它三个成员的动画是否需要同样制作三个方法?,一个更简洁的方法,观察,四个成员演奏的动画极其类似,只有演奏者和播放的音乐不同,其它动作类型和顺序都一样。是否可以仅告诉Alice演奏者的名字和对应的音乐,它就可以自动按照这种动画步骤来做呢?也就是说,总结这4个类似的方法的共性,并将它们归一化为一个方法。,参数(Parameter),在我们熟悉的方法中,我们已经使用了方法的参数,如Move的方向,距离,持续时间等等。这些参数给你更多的控

9、制,同样一个方法,由于参数的值不同,效果不一样。一个方法可以有好几个参数,每个参数都必须是某种数据类型,如:一个方法在被调用时它的参数(Parameter)必须被具体的值所代替。如上面的 distance,duration分别被 0.5 meters,0.5 seconds代替。一个方法可被多次调用,而每次调用时传进去的值都可能不一样。,参数的种类,Alice中提供了几种类型的参数:,定义带有参数的方法,soloParameters:bandMember,musicDo together Do in order bandMember move up bandMember move down p

10、lay music,定义一个演奏的方法:solo,同时定义该方法的两个参数bandMember,music分别是Object类型和Sound类型。,Demo,BeetleBand-v2 该例子中说明的概念 定义参数的方法:名字和类型 参数相当于占位符(placeholder),即在调用这个方法时,这里位置是需要指定具体值的。,增加一个数值类型的参数,增加一个数值类型的参数来表达每个演奏者跳起的高度。beetleBand-add_height_para.a2w,不增加参数个数,但是用演奏者的身高来控制跳起来的高度。beetleBand-control_height_with_who_para.a

11、2w,一个参数在方法中可以多次被用到,作业5-1,雪人的脱帽礼为Snowpeople虚拟世界(参考文件:Snowpeople_have_not _defined_methods.a2w)添加一个全局方法。这个名为flipHats的新方法,将在女雪人把头转向男雪人之后被调用。在flipHats方法中,男雪人用右手摘下帽子,然后优雅地把帽子指向女雪人,随后再把帽子戴到自己头上。在男雪人致完脱帽礼的时候,女雪人也会摘下帽子致脱帽礼。参考视频文件exercise-5-1.swf,作业5-2,迷惑的袋鼠Kanga在内陆四处张望寻觅早餐,Kanga(Animals中的袋鼠kangaroo)碰到了相当奇怪的

12、路标sign(Roads and Signs文件夹)。Kanga盯着路标看了几秒,然后把头歪到一边显示她的困惑。接着Kanga向左跳了一些,然后转向路标,随后又向右跳了一些,再次转向路标,这样重复了好几次。创建一个程序来模拟这个漫画故事。编写hopLeft方法(Kanga左转一些后跳起,然后转向路标)和hopRight方法(Kanga右转一些后跳起,然后转向路标)。每次跳跃,Kanga都会离路标更近些。在World.my first method中,交替地调用hopLeft与hopRight方法(两次)让Kanga沿“之”形跳向路标 参考视频:参考视频文件exercise-5-2.swf,分析,创建一个新的虚拟世界,包含如下对象:一个排球网,一个排球(Sports),以及滑冰女孩和普通女孩(People),如下图所示。场景中的每个人都有不同的身高和运动能力。假设每个人都能跳到身高的1/4去击打排球。编写程序让每个人都能在跳起预定的高度后,再落到原来的位置。调用内置的height函数,用数学表达式计算每个人应该跳起和落下的高度。参考文件:volleyballJump.a2w请仔细分析其中对人体的动作控制。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号