淮海工学院计算机工程学院外文翻译

上传人:ni****g 文档编号:472800434 上传时间:2023-10-05 格式:DOCX 页数:23 大小:207.57KB
返回 下载 相关 举报
淮海工学院计算机工程学院外文翻译_第1页
第1页 / 共23页
淮海工学院计算机工程学院外文翻译_第2页
第2页 / 共23页
淮海工学院计算机工程学院外文翻译_第3页
第3页 / 共23页
淮海工学院计算机工程学院外文翻译_第4页
第4页 / 共23页
淮海工学院计算机工程学院外文翻译_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《淮海工学院计算机工程学院外文翻译》由会员分享,可在线阅读,更多相关《淮海工学院计算机工程学院外文翻译(23页珍藏版)》请在金锄头文库上搜索。

1、毕业设计(论文)外文资料翻译学 院:zxxxx专业 班级: xxxxxxxxxxxxxxxx学 生姓名: xxxxxxx 学 号: xxxxxxxxxx指 导教师:xxxxxxxxxx外文 出处: Science of Computer ProgrammingDoi:10.1016/j.scico.2005.07.009附 件:1.外文资料翻译译文;2.外文原文指导教师评语:签名:基于经典问题讲授java的框架设计抽象所有的程序员应该明白软件系列的概念, 知道软件构建的技巧。本文认为经 典的问题,如众所周知的算法和数据结构,都是很好的例子来研究使用的软件家 族设计。本文介绍的两个案例研究,可以

2、用来向学生介绍在Java软件设计,软件家族使用的软件框架建设。第一个是家族程序,使用众所周知的分而治之的算 法策略。第二个是对家族项目进行遍历二叉树。关键词:软件系列软件框架;热点;设计模式,分而治之;树的遍历1、介绍在一篇经典论文中17大卫帕纳斯指出,“应用需求的变化,在硬件配置的 变化,以及永远存在的机会改善程序意味着软件将不可避免地存在于许多版本“。帕纳斯建议:开发的一个项目应该接近整个家族的发展的相关程序。他定义了一个程序家族的一套方案“其如此广泛的共同属性,是有利于研究的共同属性分析 个别成员前的项目。”如果程序员可以识别并利用这些“共同的方面和预测的可 变性” 24,所得到的软件可

3、以构建重用代码共用部位,启用方便适应为特定的 情况下的可变部分。18在2001年的一篇文章中,帕纳斯观察有“成长的学术 兴趣和真正的产业成功的一些证据。应用这样的想法,“尚未”大多数工业程序员似乎忽略了它在他们的急于生成代码他警告说, 18,“如果你正在开发 一个家族的项目,你必须自觉地这样做,否则你会招致不必要的长期成本如 果软件家族成为普遍的,未来工业的程序员(即学生)需要学习有效设计和建造。 这是一个计算科学和软件工程课程的重要挑战。我们如何应对这一挑战,在大学 课程吗?软件家族被称为软件产品线。软件产品线是“集合从一个普通的一套核 心系统共享功能构建一个管理集的软件资产1。这些资产包括

4、共享一个通用的软件架构。产品的可重用软件组件和一组10。软件产品线全力一般性难教, 因为他们在大学课程的设置设计可能需要广泛的知识,应用领域和使用的特殊目的语言和工具24 o然而,软件家族的形式被称为软件框架更容易获得。框架是 基本上是一个可重复使用的骨架,软件产品线实现完全的面向对象的编程语言。通用方面表示由一组抽象的和具体的 “合作类相互密切合作,共同体现了可重复 使用的解决方案” 2中的问题应用程序域。该框架可以进行定制,以一个特定 的家庭成员“堵在”适当的子类支持的可变点。框架学生更容易,因为技术建立 在标准的面向对象学生在本科课程中讲授的概念。 我们怎么能向学生介绍软件框架的概念?有

5、的主张介绍计算科学,教学被纳入框架序列。例如,他们可能被用来引进的泛化排序算法15提供了一个新的教学方法的标准入门资料结构材料 23。他们也可能提供有趣的编程实例练习以巩固面向对象编程的概念,并引入设计模式成介绍序列13,14,16。有些教科书等使用标准的Java库集合,秋千, 和输入/输出框架和案例研究,如绘画垫作为例子来说明的概念和技术12。至少有四个层次的理解软件框架。学生发展的需要。首先,由于框架通常在一个面向对象的实现,语言如Java,学生必须了解适用的语言概念,包括继承,多态, 封装和代表团。第二,它们需要理解框架的概念和技术, 充分使用框架构建自己 的定制应用程序。三,学生应该能

6、够做详细框架的设计和实施, 常见的和可变的 方面是已知的。第四,他们需要学习分析潜在的家庭,确定其可能的共同变量方 面,评估替代的框架结构。在教学的框架概念,教师必须制定适当的案例研究。 他们希望使用一些有趣的和现实的,但重点突出的例子和练习示出的框架技术。然而,建立一个良好的框架,需要应用领域广泛的理解解决框架。 因为学生具有 不同背景和经验,当然,它可能学生需要相当长的时间来足够了解应用程序域设 计了一个框架。本文认为各种经典问题, 如标准的算法和数据结构,在引入框架 是有用的时域上花一点时间的概念和编程技术的分析。这种方法可能被用来在一个专门的课程软件系列5,7在先进的Java编程或软件

7、设计课程的教学模块。本 文的第2和第3寻求解决的第二级和第三级的方面理解上面提到的教学观念,让学生可以使用现有的框架,使他们能够开发自己的框架分析点在家庭中的共性和 可变性。第2节介绍的技术框架的建设和使用的概念和技术。第3节说明了这些使用案例研究的概念和技术,为家庭开发的框架分而治之算法, 并运用它来开发 快速排序的应用6。案例研究假定学生有一个基本的了解面向对象使用Java编程和理解的概念,如继承,多态,代表团,递归和排序。第 4和第5节寻求解决 方面的第四个层次的框架理解教授学生如何去分析潜在的家庭,并确定共同变量方面。第4节介绍的技术,系统地概括应用程式发现的变化点。第 5节说明了这

8、些概念利用二叉树遍历一个家庭的基础11 o这个家族的应用成员包括从标准中 序遍历,后序,中序遍历到更复杂的计算进行遍历二叉树结构一个定制方式。第6节讨论相关工作,第7节总结全文,并给出了几个观察大学课程中的技术使用。2、框架建设与使用在开始编程班学生被教导要集中在一个特定的问题。写一个程序来解决这个问 题。这是适当的,因为学生开始特定的编程语言需要学习和掌握特定的,具体的编程技能。然而,由于学生获得更多的经验,在编程时,他们应该教工作在更高 的抽象水平。导师需要学生的重点转移到技术构建软件系列。在构建软件系列, 它是重要的独立关注.我们必须分开从那些方面的所有家庭成员的共同方面的设 计,热点子

9、系统。具体到一个家庭成员。止匕外,我们必须分开,各种常见和变量方面相互独立,并考虑他们,一次一个。我们使用冻结的条款当场表示一个共同 的家庭和热点方面(或共享)表示变量方面,家庭的问题 22 o 一个软件框架是 一个通用的应用程序,允许创建不同从一个家庭的具体应用21。在一个可重复 使用的,它是一个抽象的设计整个应用程序域。 在一个框架中,表示家庭冷冻斑 点。由一组抽象和具体的基类,在某些结构合作。A型行为这是所有家庭成员的共同实施一个固定的,具体的模板在基类中的方法。热点为代表的一组抽象的 钩子方法。一、模板方法调用一个钩子方法来调用一个函数,具体到一个家庭成 员。热点实现在一个框架内作为一

10、个热点子系统。热点子系统通常由一个抽象基 类,该基类的具体子类,也许还有其他相关的类22 o钩子方法的抽象基类定义 热点的替代实现的接口。碱的子类类实现钩子方法,适当选择一个特定的热点。 图图1显示了一个UMLfe图的一个热点子系统。有两个原则框架建设的统一和分 离8 o统一的原则使用继承来实现热点子系统。无论是相同的抽象基类中定义 的模板方法和钩子方法。钩子基类的子类中实现方法。在图如图1所示,热点子系统由统一方法的抽象基类及其子类。该分离的原则使用代表团实现热点子系 统。模板方法的实现钩方法定义在一个具体的上下文类;一个单独的抽象类,并在其子类中实现。模板方法,从而委托工作实现钩子方法的子

11、类的一个实例。在图1热点子系统的分离方法包括在客户端 (上下文)类和抽象基类及其子类。一 个框架是一个系统的设计与心中的一般性和重用 ;设计模式9,这是行之有效的 程序设计问题的解决方案在实践中通常会发生,是实现所需的知识的工具水平的 一般性和重用。两种设计模式,对应于两个框架建设原则,是有用的框架落实情 况。模板方法模式,使用统一的原则。在使用这种模式,设计师应该“定义在操 作中的算法的骨架,推迟一些步骤的一个子类“,允许程序员”重新定义算法中 的步骤,而不改变算法的结构”9 o它抓住了在模板中的共性在基类中的方法, 而封装差别,实现钩在子类中的方法,从而保证算法的基本结构仍相同的8。策略模

12、式使用分离的原则。在使用这种模式时, 一个设计师应该“定义一系列的 算法,一个个封装起来,使他们可以互换的。战略让算法的变化可独立使用的客 户端”9。它扩展了客户端类的行为,通过调用另一个类中的方法。在混凝土 中的方法被捕获(模板方法)的共同方面客户端;抽象策略类中声明的变量方面 (钩子方法)其子类实现。因此,可以改变客户端类的行为提供不同策略子类的实例。建设的原则,在实践中两者之间的主要区别是什么?至引入新的行为钩子 方法,统一的原则要求程序员实现一个新的子类的基类定义的模板方法。这种通过覆盖的延伸,往往需要详细了解的基类,但它是否则程序员相对简单地理解和 贯彻。该统一的原则,有效的,但僵化

13、的执行结果。要引进新的钩法行为的一个 框架,使用分离原理,客户端代码需要从一个类实例化一个对象, 有钩子方法所 需的行为并将其提供给模板的方法的类,包含。如果需要钩行为先前已经实施, 那么程序员必须选择一个合适的实施从组件库。如果需要挂钩的行为一直没实施,那么程序员必须实施一个适当的新类。这个类有时更是难以实现比同等的统 一解决方案,但其实现通常需要较少的知识类的内部细节包含模板的方法。一个应用程序的一个框架,它使用的分离原则执行略低于效率比基于一个统一的框架,但分离可能使应用程序能够在运行时适应对象仅仅改变参考文献8。在接下来的部分,我们来看一个简单的软件系列,并考虑根据每个这些设计原则的框

14、 架设计。3、分而治之框架为了说明一个框架的建设和使用,我们可以使用家庭的鸿沟而治之算法作为一 个软件家族的一个例子。分而治之通过递归地分割成一个或多个的子问题的技术 解决了一个问题相同的类型,独立地求解每个子问题,然后合并子问题为原来的 已知problem.Well的算法,使用该解决方案,以得到一种溶液技术包括快速排 序,归并排序,折半查找。由于这种算法策略可应用于一整套类型相似的问题, 分而治之,除了功能解决(问题P)回报解决方案 ifisSimple(p)return simplySolve(p);elsesp = decompose(p);for (i= 0; i sp.length;

15、 i = i+1)soli = solve(spi);return combine(sol);图2分而治之的伪代码。 其算法有意义的影响,提供良好服务的目的审查软件人。显示的伪代码分而治之技术一个问题p在图2,因为它可能会在本科算法教科书。在这种伪代码片段,功能解决(),因为它代表一个模板方法在家庭中所有算法的实现是一样的。然而,功 能参量,IsSimple () , simplySolve () , decompose ()和 combine(),并结合()代表钩 子方法因为实现不同的家庭成员之间的不同。例如,simplySolve ()函数的快速排序归并是相当不同的。对于归并,结合()函数执行的主要工作,同时分解()很简单。与此相反 的持有快速排序和二进制搜索。本节的其余部分的建设和使用说明的鸿沟征服框架。首先, 我们探讨如何构建一个框架,使用统一原则;然后我们应用这个框架来开发应用程序使用快速排序算法。最后,我们来看看如何可以实现的框架使用分离的原则。3.1、使用统一的框架构建如果的统一原则和TemplateMethod的模式被用来构建鸿沟和征服的框架,那 么模板方法解决()是定义具体的方法在抽象类中定义的四个钩子方法被推迟到 一个具体的子类,其目的是实现特定的算法。图3显示了设计一个鸿沟和征服表 示作为一个统一的框

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号