笔者《用flash自带OOP语言AS2.0实现化学课件的"积件"式开发》一文刊出後,相关化学积件在小范围内试用反响优异,同时人们也提出问题:其他学科例如物理课件怎么样积件化开发呢?
1、 课件、积件flash,as3.0。
课件(Courseware)即“课程软件”,伴随着软件产业的蓬勃发展和课件需求的扩大,课件的开发速度远远跟不上教学的需求。在我国课件开发效率极低,效率低的主要表现在重复开发,没有积累。
“积件”的原始意义是像“搭积木”那样实现课件的制作。而积件的重复利用特性可以降低我国课件开发总成本,是提高开发效率有效手段。
Flash软件诞生以来飞速发展,使用flash软件进行课件的积件化开发是当前的积件化开发的一个重要分支。有望成为主流。
Flash自带as语言从2.0.开始,成为OOP语言家族的一员。发布as3.0后,业内认为as3.0成为“标准、正宗、强大的语言”。AsX.0为开发好的积件库留下空间。
2、 积件化开发课件的现状和特点综述。
积件化化课件开发的前提是构建和完善具有广大教师使用基础的积件库。而构建积件库的前提是有一个可逐步完善的积件标准,我国1997年由黎家厚教授倡导积件以来,2002年教育部发表“教育部关于印发《现代远程教育技术标准体系和11项试用标准V1.0版》(简介)的通知”。发布了包括“学习对象元数据规范”在内的标准,从学术意义上说,标准的搭建工作已经完成。
但是,10年间我国的积件事业并没有长足进步,个人认为主要原因是没有进行积件标准的推广,积件标准没有根据市场需求而快速调整。从深层次说是理论研究与市场推广的脱节所致。
笔者认为:软件产业市场化的今天,积件难以独立于软件而存在,而必须与某软件采用某种方式的结合,积件的特性就是OO(面向对象)的。所以开发应该使用软件工程方法,使用OOP软件进行开发。而笔者推荐的软件即flash。
好的积件库不仅积件库是开放的,积件库标准也应该是开放、可修改、可扩展的可竞争的。开放会促进软件厂商的竞争,只有这样,积件库才具有活力,笔者认为:积件库如果能使得制作课件的时间缩小为半个小时至一小时(接近于PPT课件制作)。积件化课件制作将会普及。成为主流。(相关详细观点请参考本杂志第6,7,8期相关文章)
作为积件库,不可避免的要按照学科进行分类,各学科公用的可称为通用积件。仅适用于各学科的划归到学科积件中。积件的存储不可避免的要受到制作软件的限制,积件通常只存在逻辑上的独立性。
3、 物理课件的特点综述。
物理课件的组成不外乎图表、实验、信息、例题、资料、练习等模块。如果把上述模块看作一级积件的话,其中,图表、信息、例题、资料、练习 并非物理积件所独有。应属于通用积件。因此实际意义上的积件主要是指物理实验部分。
物理课件的“粒度”问题。积件作为课件的“积木”,也存在一个粒度的问题,通常说粒度太细就会花费太多的时间来整合课件,粒度太大则导致积件的通用性减小。
为了能进一步通用,还可以分解为粒度更细一些的积件,(实验积件的粒度大了一些,可以设想,把全部物理实验作成视频片段积件,确实不很通用),实验可以由实验器材构成,实验器材可以被例题,资料、练习所通用。
综上所述,物理积件开发的核心就是物理实验仪器与现象的模拟。
物理与化学一样是典型的实验科学,很多教师认为:与其让学生动手去看一个呆板的实验模拟现象,不如让学生亲自动手做一做。个人认为观点有道理,但不应该就此抹杀实验模拟类课件,模拟类课件具有1、安全。2、可重复操作。3、演示效率高。4、可对比观察等优点。因此比较合适的办法是:实验模拟课件与真实实验共同存在,相辅相成。达到最佳教学效果。
物理模拟现实要比化学复杂的多,化学现象模拟可以基本由可视积件构成,但是要开发一个好的物理积件库,要构建不可视对象。例如:力对象必须作用于物体才能够表现。力的不同种类有不同特点,磁力,浮力,摩擦力。另外物理还有光学、电学、波,等分支。不像化学,几乎只有实验和微观粒子演示部分内容。
一、 物理积件库的综述。
从物理教学大纲分析。物理积件可以分为:1、电学部分(含直流交流部分),2、力学与运动(包含包括微观热学、电磁力学、功、机械能部分、机械运动、微观粒子运动部分、碰撞等)。3、光学。4、机械波(可以划归到力与运动部分)。
按照我个人构想,每一个积件库可以分为三个层级(具体观点请看本杂志第8期),分别是1、素材层面的整合类积件库。2、具有属性方法的对象层面的积件库。3、以侦听和注册等手段来组织,以“自动交互”为目的的积件库。每一层级都以上一层级为基础构建,逐步增加开发难度与功能。
第一层面很容易构建,绘制或者征集整套的物理仪器图库,例如全套电学仪器,光学仪器、理学仪器、包括简单动画就可以建立了。
第二层面就较为复杂,为全部电学增加电阻,电功率,额定电压,把动画封装在各自的对象中,例如电机转动动画,点灯点亮动画等,为各种电器增加类似“通电(电压)”方法。例如:灯泡的通电方法会接受一个电压参数,然后灯泡会根据电压决定灯泡的亮度甚至烧毁。这些方法和属性不一定都用到。但是做好以后。第三层面的积件就有了用武之地。
第三层面在第二层面的基础上进行开发,第三层面与第二层免的区别在于:如作者使用第二层面的积件做课件。需要由作者进行逻辑判断,例如判断电路是否连通,物体受力的大小而由作者决定其运动状态。而使用第三层面进行开发,系统会自动判断电路是否连通,自动判断物体的运动状态。
二、 物理积件库开发综述
物理积件库可以分为四个库,按照开发规模大小依次是:力与运动、电学、光学、机械波,其中如果力与运动积件开发足够好的话,机械波部分可以划归到力与运动板块。光学部分内容少而且独立,本文篇幅所限,仅讨论电学、力与运动。
1、 电学部分开发。
电学部分相对简单,第一层级的积件库只要整理一套风格统一的可视仪器库。以下是笔者开发团队收集的部分仪器元件。
第二层级的积件库,将会给各种电器增加各种属性,例如:电阻,额定电压。另外,根据不同的仪器,增加不同的“加压”函数。连通函数可以传递“电压”参数,例如:小灯泡的连通是这样的:灯泡.加压(3);
在一个滑动变阻器调节点灯亮度的核心代码可能是这样的:
灯泡.omEnterFrame=function(){
if(开关.连通){
灯泡.加压(灯泡.电阻*(电池.电压/(电池.电阻+变压器.电阻+灯泡.电阻)));
}
Else{
灯泡.断开();
}
}
有编程经验的老师可以看出,此代码的作用是根据各个电器元件的属性决定灯泡的亮度。电路之间的逻辑关系是由编程来体现的,而不是根据电路连接自动作出判断。
此层级的积件笔者做了一些实例但是并不全面。
第三层级的积件库,与第二层级的积件库相比较,对积件使用来说省略了第二层积件中的编程与逻辑,但对积件开发提出了更高的编程要求,鉴于实现此模式有几种不同的架构,我个人推荐以基于导线和触点的电路连接。落实到技术上,即为每一个电器元件增加触点,导线必须连接到触点才算链接上,系统根据导线的连接方式计算电路的电压电流、最终决定电器以致整个电路的状态。此方案设计的好处是允许多触点电器的存在,例如:滑动变阻器和许多测试仪器入电流表就有多个触点,另外具有仿真实验室效果,甚至使用简单元件实现复杂仪器的组装。
2、 力学运动学部分开发。
力学、运动学的开发。【包括微观热学、电磁力学部分、功与机械能部分、机械运动、碰撞等】是物理最大的一部分内容。因为物理现象通常是通过物体运动表现的。但是运动是不可视的。因此,第一层级的力学力学部分积件库涉及不到力和运动,通常仅仅把一些常见物理仪器绘制即可达到目标。第二层级就要构建运动类,实际上flash自带Tween类可基本解决运动类,相对于使用者来说,掌握运动类需要一定的难度,如下AS2.0代码是控制一个小球跳动直到能量损失后停止。
#include "lmc_tween.as"
$tweenManager.broadcastEvents = true;
小球.弹起 = true;
小球.高度 = 200;
衰减系数 = 0.2;
跳跃时间 = 1;
小球.onPress = function() {
小球.tween("_y", 小球._y+小球.高度, 跳跃时间, "easeInQuad"
;
};
小球.onTweenEnd = function() {
if (小球.弹起) {
小球.tween("_y", 小球._y-小球.高度, 跳跃时间, "easeOutQuad"
;
} else {
小球.tween("_y", 小球._y+小球.高度, 跳跃时间, "easeInQuad"
;
小球.高度 = 小球.高度*(1-衰减系数);
跳跃时间 = 跳跃时间*(1-衰减系数);
}
小球.弹起 = !小球.弹起;
};
小球.addListener(小球);
从代码可以看出:对于使用者第二层级似乎门槛要高一些,与第三层级的积件相比,第三层级的减少编程量的优势显示出来。虽然开发难度高,但是使用难度低,我的建议是:与其开发了第二层级使用者寥寥,不如多下功夫直接开发第三层级。
运动类第三层级的构想是:跳过运动类开发,直接开发力类,这样,物体的运动完全由力控制。由力来决定物体的运动形态。这样就减少了运动类的开发,也比较经济。以下代码是一个假想的复杂模拟实例:在一个悬挂在点电荷电场中的小球保持静止,细绳偏转一定角度。按下按钮绳子断掉后。小球在重力和电荷力的合力下向电荷运动。可以随时按照相按钮拍下小球的位置,假想的代码如下:
重力=New 力(“重力”);
电场力=New 力(“电场力”,电荷);
弹力=New 力(“弹力”,细绳);
小球相机= New 相机(“小球”);
弹力.添加(小球);
重力.添加(小球);
电磁力.添加(小球);
按钮.onPress=function(){
弹力.取消(小球);
//相机.照相();//或者在这里启动一下相机:
}
照相按钮.onPress=function(){
相机.照相();
}
弹力根据小球的质量,带电量自动计算受到力的大小。决定细绳偏转角度。绳子断裂後,系统自动根据受力决定小球的运动轨迹(并不一定是直线)。这段代码看似简单得多。因为篇幅关系,本文不再详细说明。
同样篇幅所限:波、与机械波。光学部分开发不再赘述。
三、 怎样组织人员建设物理 积件库
1、物理积件库开发复杂度高,不像化学积件核心部分基本个人完成,特别是,与学科相关的部分,需要既有编程能力,又有学科知识,单就物理力学运动学部分来说,直接开发第三层级,编程应该找一个专业人员辅以学科教师,质量比较高,如果单独完成,为了减少工作量,网络上有开源的二维游戏引擎,可以改造一个。
2、人员组织方面,有关积件开发人员,最理想的是,既有教学经验,又有编程能力。然而这样的人才少之又少,人员的组织有两个方向,1、挑选程序员,配以教师交流,2、挑选老师,培训编程。第一条路子好处是产品出的快,专业。但是一旦失去资金支持,库更新就慢了,开发者难以维护。库更新后继无人。第二个开发慢,前期不够规范,当前期投资小的时候,可以组织教师业余开发。好处是开发后期培训的这些老师自己使用自己维护,开发后劲大。
当然还有最好的方法,就是前期专业开发,同期教师培训使用。可以发挥两个方向的优势。专业开发人员走后,使用者与维护者就成长起来。
笔者团队在前期投入不足的情况下走的是第二条路子,进展比较缓慢,(从我开始写“用AS2.0实现化学课件的“积件”式开发”发表在“《信息技术教育》2006年第6期”,实际上2005年我就开始开发。)到现在只能说大致的框架建立了,完成一部分。开发团队实际上也已经初具规模,各个学科都有覆盖,团队甚至包括寒蓝、章精设这样写过课件制作类畅销书的好手,最差的也常获在国家,省市课件大赛获奖,都是业余开发(我算半专职),精力有限,没有经济利益驱动下,短期内难以获得大量充实。
我个人建议做这样的开源项目培训和开发同步进行。例如进行结对编程等开发模式,开发的同时进行培训、这样虽然进度会慢一些,但是能够培养技术骨干,对不以盈利为最终目的的开源项目来说。方便后期推广维护。
比较快捷的办法是获得教委支持,整个培训依托国家电教系统进行。团队当前一直在利用网络免费授课【笔者在知名flash学习站点闪客启航授课等站点】,写教程出书【团队成员寒蓝等创作了数本课件制作产销书,在最新版中加入了积件内容】等方式。
3、另外,开源并不是免费,开源的主要作用是使得新手尽快成为创作者。对外提供服务是可以收费的。积件可以光盘发售,也可以作成课件结集发售,在教材版本中多的今天,能按照版本高效制作的课件是真有竞争力的。此项目自主产权,非国外项目,如能获得专家、教委、国家或者教育团体的支持,对一个项目来说是非常有易的。同时希望有志者参加讨论甚至加入创作、培训、推广的群体。
总结:积件开发,既可以提高广大教师的工作效率,提高教学质量,又培养编程人才,开发教师创新能力,创造社会财富。作为企业可以通过发行获利。何乐不为?

GB2312 http://ware.zhyh.org/trackback.php?id=120&encode=gb2312
UTF-8 http://ware.zhyh.org/trackback.php?id=120&encode=utf-8
我的硕士论文也是关于积件开发的,只是是化学的,呵,希望能有幸得到您的指导!