登陆注册
36887500000129

第129章 教学内容与课程体系改革()(70)

(三)匿名类

类有两种重要的成员:成员变量和方法。类还可以有另一种成员:内部类。在一个类中声明的另一个类称为内部类,而包含内部类的类被称为外嵌类。匿名类是一种内部类,它把类的定义和使用(即对象的实例化)结合在一起,且没有类名。

1.与类有关的匿名类当使用类创建对象时,可以把类体与对象的创建组合在一起。也就是说,类创建对象时,除了构造方法还有类体。此类体被认为是该类的一个子类去掉类声明后的类体,称其为与类有关的匿名类。

2.与接口有关的匿名类

可以用接口名和一个类体来创建一个匿名对象,此类体被认为是实现了接口的类去掉类声明后的类体,称其为与接口有关的匿名类。

3.使用匿名类的场合

匿名类的一个重要作用是能够提供适配器类(AdaPter)的简单实现方式。此外,在下列这些情况下,也建议使用匿名类:

(1)类的主体部分非常短;

(2)只需要类的一个对象实例;

(3)类的使用恰好在它的定义之后;

(4)没有类名称不影响对代码段的理解。

三、结论

在Java的学习过程中,初学者要注意掌握上述提到的这些内容。此外,还有一些语言之外的建议。由于大部分学生先学C++后学Java,而且C++又掌握得不好,特别是指针的使用。在学习Java时就对面向对象语言有心理障碍,担心也学不好。因此,首先要克服这种不良心理,这也需要教师进行恰当的引导。还要多上机实践,编程语言是一门很强的实践课程,单纯靠死读教材是无法完全掌握的。多研读好的Java源代码,读懂后试着改动它,然后再模仿别人的代码开始编写,最后达到自己设计和编写代码。编程时多参考Java的API帮助文档,它的作用等同于学习VC时的MSDN。充分利用好这个帮助系统就能解决好Java的类库很庞大的这个问题。

参考文献

[1]Bruce Eckel.Java编程思想.陈昊鹏译.北京:机械工业出版社,2006.

[2]耿祥义,张跃平.Java2实使用教程.北京:清华大学出版社,2006.

[3]朱仲杰.Java2全方位学习.北京:机械工业出版社,2006.

[4]陈淑清,蓝雯飞.剖析Java语言的抽象类和接口.微计算机应用,2004,25(4):626-630.

[5]蔡学镛.Java 的多态.程序员,2002,6:76-78.

[6]David Flanagan.Java技术手册.吴益华译.北京:中国电力出版社,2002.

[7]蓝雯飞.基于Java 语言的多态性探讨.电脑知识与技术,2005,7:29-32.

NS2在“计算机网络”类课程教学中的应用

赵阿群

(北京交通大学计算机与信息技术学院,100044)

摘要:为了解决“计算机网络”类课程教学和实验面临的实际问题,构建了一个“基于NS2的计算机网络教学演示和实验系统”,该系统由教学演示系统和学生实验系统两部分组成,前者供教师课堂授课时演示使用,后者供学生实验课或课后实验使用。该系统在实际教学和实验中取得了一定的效果,下一步的工作重点将放在实验库的完善和系统使用的方便性等方面。

关键词:计算机网络课程 NS2演示系统 实验系统

一、引言

“计算机网络”类课程的教学涉及大量的网络协议,而计算机网络协议具有抽象性、异步性、并发性和多任务等特征。目前,教学中教师大都采用口头讲述的方法给学生讲解网络协议,并通过一些图示或动画加深学生的直观感受,在实验中让学生编程实现部分简单的协议机制。这些传统的教学和实验方法中普遍存在着教师讲解费力,学生理解困难等问题。因此,如何通过新的实验方法让学生直观地观察到协议运行中的复杂行为,从而加深对网络协议的协议机制和控制策略的理解是“计算机网络”类课程教学中的一个难点和亟待解决的问题。

另一方面,计算机网络研究领域存在不少优秀的网络仿真软件(如NS2、OPNET等),它们提供了强大的计算机网络协议仿真功能,能够方便生成各种协议运行环境(如不同拓扑结构、不同数据流量等),并能够以可视化的方式直观显示协议行为。然而,这些仿真软件本身都是一个难学的庞大系统,其安装和使用都比较复杂,目前主要供计算机网络研究人员研究、扩充和开发新的网络协议使用,对于初学计算机网络的学生来说,让他们直接学习和使用这些仿真软件很不现实。

为了解决上述矛盾,我们构建了一个“基于NS2的计算机网络教学演示和实验系统”,在网络仿真软件NS2和学习计算机网络的学生之间建立起一条连接的桥梁。通过该系统,学生既可以省去难以学习网络仿真软件的困难,又可以利用其强大的协议仿真能力进行网络模拟实验,从而更加深入地理解网络协议中的复杂行为。该教学演示和实验系统能够应用到“计算机网络原理”、“网络新技术”和“计算机网络基础”等课程的教学和实验中。

二、NS2简介

网络仿真是一种利用数学建模和统计分析的方法模拟网络行为,从而获得特定的网络特性参数的技术。NS2是美国加州大学伯克利分校LBNL 网络研究组开发的一个网络仿真软件,主要用在与网络相关的仿真,无论是固定网络还是无线网络,它都有很好的支持,尤其在新的网络协议研究方面,具有重大价值。

NS2是一个面向对象的基于离散事件驱动的网络仿真工具,其核心部分是一个离散事件模拟引擎。NS2中有一个“调度器”类,负责纪录当前时间,调度网络时间队列中的事件,并提供函数产生新事件,指定事件发生的时间。在一个网络模拟器中,典型的事件包括分组到达、时钟超时等,模拟时钟的推进由事件发生的时间量确定。模拟处理过程的速率不直接对应着实际时间。一个事件的处理可能又会产生后继的时间。模拟器所做的就是不停地处理一个个事件,直到所有的事件都被处理完或者某一特定事件发生为止。

NS2提供了丰富的构件库,已经对网络系统中一些通用的实体进行了建模,如节点和分组转发、链路和延迟、队列管理与分组调度、代理、时钟、分组头及其格式、局域网、移动网络、卫星网络等,并用对象来实现这些实体的特性和功能。同时NS2还提供了丰富的数学支持,如随机数产生、积分等;提供了方便的追踪和监视方法;提供了完整的路由支持,如单播/组播路由、动态/静态路由、层次路由等。NS2支持GPRS、移动IPv6、蓝牙技术、RSRV、MPLS、Ad Hoc 无线网等新技术的仿真。

NS2中的构件库由两种语言编写:C++和Otcl。C++是广为人知的高级程序设计语言;Otcl是MIT开发的Object Tcl,即面向对象的扩展。tcl全称是Toolkit Command Language,它是一种灵活的、交互式的脚本语言。NS2中的构件通常都作为一个C++类来实现,同时有一个Otcl类与之对应,这种方式被称为分裂对象模型。这种模型兼顾了仿真性能和灵活性两个方面。一方面,C++是高效的编译执行语言,可使仿真过程的执行获得较好的性能;另一方面,Otcl是解释执行的,用Otcl 进行仿真配置,可以在不必重新编译的情况下随意修改仿参数和仿真过程,提高了仿真的效率。

为了直观地观察和分析仿真结果,NS2还提供了可选件NAM和XgraPh。其中,NAM为“Network Animator”的缩写,是一种动画显示工具,用于演示网络运行动画,如网络拓扑、包传输等。在NS2中,仿真的全部宏观过程都可以通过NAM这个图形界面得到,它可以显示从仿真开始到结束过程中的拓扑结构和各个代理的行为及链路的状态。而XgraPh用于显示静态的图形曲线,它可以将结果转换成易于比较的平面统计图,方便使用者对网络性能进行分析。

三、系统的构建

基于NS2的计算机网络教学演示和实验系统由两部分组成:一是教学演示系统,供教师课堂授课时演示使用;二是学生实验系统,供学生实验课或课后实验使用。在本系统中,我们不需要修改NS2已经实现的协议,也不需要添加新的协议,因此不需要添加或修改NS2的C++代码,不需要重新编译NS2。本系统中用到的NS2仿真过程见图1的虚线框部分,即只需要编写/修改Otcl脚本、运行NS2仿真和观察分析结果。

(一)教学演示系统

教学演示系统主要供教师课堂授课时演示使用。教学演示系统中使用NS2的过程如图2所示,它分为两个过程:一是实验库开发过程,二是课堂演示过程。

实验库开发过程见图2中虚线以上的部分,其目的是为课堂演示准备好材料,并形成实验库,方便在需要时修改和调用。实验库开发的具体步骤如下。

(1)开发者根据课程内容,编写相应的Otcl脚本。例如,为了演示TCP 拥塞控制中的慢启动机制,我们分别编写了两段Otcl脚本:WithSlowStart.tcl和WithoutSlowStart.tcl。两者仿真环境类似,只是前者使用带慢启动机制的TCP,后者使用不带慢启动机制的TCP。

(2)对编写的Otcl脚本运行NS2仿真,生成Namtrace文件。在上例中,我们分别对WithSlowStart.tcl 和WithoutSlowStart.tcl 运行NS2仿真生成相应的Namtrace 文件WithSlowStart.nam 和WithoutSlowStart.nam。

(3)利用NAM工具观察分析实验结果。在上例中,我们利用NAM工具分别打开WithSlowStart.nam和WithoutSlowStart.nam,对比分析实验结果,重点考察实验结果是否体现了TCP带慢启动机制和不带慢启动机制的差别。

(4)如果实验结果满足课堂演示要求,分别将Otc脚本和Namtrace 文件加入Otcl脚本库和Namtrace文件库。

(5)如果实验结果不能满足课堂演示要求,则修改Otcl脚本,然后重复执行步骤(2)-(4)。

实验库的开发完成后,形成相应的实验库(包括Otcl 脚本库和Namtrace 文件库),供课堂演示时调用或需要时(如课堂内容变更)修改。

课堂演示过程见图2中虚线以下的部分,具体步骤如下。

(1)授课教师根据课堂教学的需要,从实验库中选择相应的材料。例如,为了讲授TCP拥塞控制中的慢启动机制,可以选择上例中的WithSlowStart.nam和WithoutSlowStart.nam文件(演示时只需要Namtrace文件,不需要Otcl脚本)。

(2)将选择的Namtrace文件引入到演示文稿中。我们解决了在PowerPoint演示文稿中打开Namtrace文件的问题,因此授课教师可以很方便地将要演示的Namtrace文件插入授课用的PowerPoint演示文稿中。例如,为了演示TCP慢启动机制,可以制作的PowerPoint页面。

(3)课堂授课时进行演示。上例中,只要点击PowerPoint 页面中的【演示】按钮,就可以利用NAM 工具打开相应的Namtrace文件,向学生演示慢启动机制的工作过程。

(二)学生实验系统

学生实验系统主要供学生实验课或课后实验使用。学生实验系统中使用NS2的过程如图5所示。从图5中可以看到,学生实验系统的最大特点是提供了一个可视化界面,该可视化界面是学生进行实验的集成环境。通过该集成实验环境,学生可以建立仿真环境、生成Otcl 脚本、运行NS2仿真并观察分析实验结果。

我们利用了美国DePaul 大学MNLAB 实验室开发的nsBench 软件来搭建学生实验系统的集成实验环境。nsBench 是一种图形化的Otcl 脚本生成工具,利用它可以通过可视化方式建立仿真环境,从而省去初学者编写Otcl 脚本的麻烦。

学生通过实验系统进行实验的具体步骤如下:

(1)参照实验指导书,利用nsBench 工具建立仿真环境,所要完成的工作包括创建网络节点,创建节点间的链路并设置带宽、时延等链路参数,创建运输层代理并设置相关参数,创建数据源并设置相关参数,设置数据源的启动和停止时刻及仿真结束时刻,设置仿真结果Namtrace 等文件的文件名;(2)通过菜单命令自动生成步骤(1)中仿真环境对应的Otcl 脚本;(3)以生成的Otcl 脚本为输入,通过菜单命令运行NS2仿真,生成Namtrace 文件;(4)NS2仿真运行完成后,会自动利用NAM 工具打开生成的Namtrace 文件显示数据包的发送接收过程,学生可以观察分析实验结果。

同类推荐
  • 足迹

    足迹

    本书收集了宁波广播电视集团从2002年到2011年这十年里所出现的优秀获奖作品,主要作品分为:广播作品、广播剧作品、电视作品和电视剧作品。每个类别的作品,各具特色。
  • 慕课与翻转课堂导论

    慕课与翻转课堂导论

    《慕课与翻转课堂导论》是一部以“慕课”和“翻转课堂”为主题的探讨与互联网时代相适应的新的教学理论与实践的著作。所谓“慕课(MOOCs)”,是MassiveOpenOnlineCourses的英文首字母缩写的中文音译”,意为大规模在线开放课程。所谓“翻转课程”,英文为FlippedClassroom或InvertedClassroom,是一种反常规的教学模式。
  • 管理学作业集

    管理学作业集

    管理学作业集是根据西北工业大学网络教育学院本科、专科管理类各专业管理学学习的实际需要,基于所用的管理学课件编写的课后复习和参考资料,作业集涵盖课件的基本内容,对课件没有涉及的内容进行适当的补充,并配有参考答案。在课件的基础上,对各章的重点与难点问题进行系统归纳。作业集题型多样,包括考题的各种类型,内容全面、信息量较大,通过练习能使学生加深对课程的理解,为学生提供了一套较为完整的自主学习的具有系统服务功能的作业薄。
  • 大捐赠者传奇

    大捐赠者传奇

    洛克菲勒、卡内基、比尔·盖茨…这些因不同的动机成为留名史册的大捐赠者。是为信仰,为怀念?还是为扬名,为遮丑?他们戏剧性的故事,构成美国公益事业丰富而真实的人间传奇,也给正从事或想要投身慈善活动的人们提供了参考。本书首次剥开公益机构庄严堂皇的外表,揭露鲜为人知的内幕。
  • 社会主义新农村建设丛书-农村改革浅析

    社会主义新农村建设丛书-农村改革浅析

    回顾中国改革的历程,从20世纪中期到70年代末期,中国始终把改革的重点放在国营工商业方面,却始终没有大的突破。直到通过在农村实行大规模的家庭联产承包经营责任制后,才有力地推动了整个国民经济的发展。所以,农村改革才是中国经济改革的原始推动力。但我国目前农村改革发展滞后,农村改革落后于城市改革,解决“三农”问题,必须从加快农村改革入手。
热门推荐
  • 盗梦空间

    盗梦空间

    一部好莱坞大片《盗梦空间》使这个伴随我们一生却往往被忽视的神秘领域——“梦的世界”成为了焦点。本书用通俗易懂、深入浅出的语言,带着你和解梦大师一起揭开梦的神秘面纱,认识梦、了解梦、解释梦、利用梦,在梦的空间里自由徜徉,快乐飞翔。
  • 倾世魔妃之祸水

    倾世魔妃之祸水

    她是魔,她非魔。。。。。。她是红颜,亦是祸水。。。。。。冷月铭霜,江湖传闻,她武功超群,乃歃血楼第一杀手,心狠手辣,无情无义。然想是如此倾国倾城的俏佳人。也许她知道,也许她不知道,抑或许她装作不知道,这一生有一个人为了她画地为牢,天涯思卿,念念不忘。。。。。。只因掉入了那个寂静的夜中暗自魅笑的人编织的爱情漩涡。“铭霜,我失去你之后,才发现,我中毒已深!”轩辕锦一脸苦涩,深邃的目光中似乎有些晶莹在闪动,原来,那就是泪。也许心中苦涩,只能暗叹,这种毒,名为冷月铭霜。。。。。。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 开局便是美杜莎

    开局便是美杜莎

    午睡的一觉醒来,吕文斌发现世界变了,天空中有着巨蛇飞过,公路上一辆辆飞车飞驰着,这是一个科幻与契约兽的世界。这里超凡不是传说,荒界与天相连如海市蜃楼,里面有着荒兽擎天,龙游九海,无数人进入,有的永远埋葬其中,而有的带着荣耀与宝藏归来。
  • 昭昭日月锦锦安年

    昭昭日月锦锦安年

    静水流声,沧笙踏歌;三生阴晴圆缺,一朝悲欢离合,再逢始料未及。——昭昭日月,锦锦安年。
  • 妖异全书

    妖异全书

    世间万物变化,不出阴阳两字。而阴阳不知,则谓之“神”。不为阴阳所知,未必超越阴阳。三界六道新的故事,原来都是人的传说。人鬼殊途,却充满交集;人鬼之战——较智、斗法、谋杀、迷局,一切尽纠葛于此……
  • 如霜醉,九千情

    如霜醉,九千情

    “我若成佛,天下无魔,我若成魔,佛奈我何。”她一身红衣屹在万山之巅。他等她三千年等不来她一朝回眸。她乃一代妖王,唯我独尊,却独愿为他人一声声师傅叫了三万年;他乃六界战神,横扫千军,攻城万座,却独独攻不下她心。“你心里,可是从来都只有他一人?”她张了张嘴,想说她是爱他的,却终没有说出口。“你从来都不曾回头看看...从来不曾。”万年后,她想,若是当初许他一个答案,就不会一个人孤孤单单至今。“你究竟想要什么?”“我想要的,从来不过是一个你罢了。”昔年相识宫阙若,与君相知桃花谷,画中仙人不似仙,只教轮回念君安。她是夙九千,一世妖王风华绝代,不愿成佛,只愿成魔!
  • 斗武法神

    斗武法神

    无名画家姜苏,无意中穿越到灵世大陆以凡胎入道,利用体术、画符天赋才能步步登天以人化神,刻苦修炼神术,与仙神斗法,其乐无穷仙途之上,历经种种磨难,最终超凡入圣,成为斗战法神————大家好!这里是猫言桑如果喜欢我写的小说就收藏、投票支持吧~
  • 微亮的星光

    微亮的星光

    “你看,天上的星星那么多颗,好亮”叶凌远微笑着说,“亮吗?我不觉得”郜萌回答。青春看似无忧,谁又不是带伤而归?