医院病房信息管理外文翻译_第1页
医院病房信息管理外文翻译_第2页
医院病房信息管理外文翻译_第3页
医院病房信息管理外文翻译_第4页
医院病房信息管理外文翻译_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 文献翻译 题 目 医院病房信息管理系统的设计与实现 学生姓名 xxx 专业班级 软件工程(xxxx)11-2 学 号 xxxxxxxxxxxx 院 (系) 软件学院 指导教师(职称) xxxxxxxxxx 完成时间 2015年 4月 6日 生成C#编程Dirk DraheimInstitute of Computer ScienceFreie Universitat BerlinTakustr.9, 14195 Berlin, GChristof Lutteroth, Gerald WeberDepartment of Computer Science

2、The University of Auckland38 Princes Street, Auckland 1020, New Zealandlutterothcs.auckland.ac.nz, g.webercs.auckland.ac.nz摘要:本文描述了我们如何通过新的构造,提供用于扩展C#语言生成程序。这些结构可以处理问题的生成用户界面和某些横切关注点没有aecting不再那么容易出错和优雅的方式整个语言的完整性。关键词: 生成编程,泛型,再保险检验1 介绍在现在的软件开发中新系统很少从零开始,但通常的帮助下建成独立开发的组件。一个组件可以重复使用的程度取决于它是怎样调整全部所需的功

3、能。增加的基于组件的开发越来越重要灵活和强大的手段用于指定组件和适应它们。生成编程的概念1正是针对这各个问题。泛型或参数多态性发现,例如,在艾达,Haskell或Java,它是可能对程序组件均匀可重复使用的对于许多类型。然而,这些泛型类型parametriza -象征式互动机制同时类型抽象机制:该类型的构造被利用在支持的软件组件最多可被利用绑定,已知的被利用作为有界参数多态性6。因此很典型的通用性已成功利用容器在编程库,例如c+标准模板库,但不会超越。我们的做法不是关于编程containerlike通用组件,但真正生成COM生成ponents,解决普遍存在的横切关注点,尤其是减轻驱动力的软件基

4、于“增大化现实”技术减轻驱动力chitecture像负载、性能和安全性。也就是说,我们目标是一个sourcecodebased方法的软件发电机。发电机是当今软件工程的基石。重要的例子是gen-erators 像TopLink和EJB或软件分发机制,例如透明的数据访问层RMI存根生成器和CORBA IDL编译器。一般来说,一台发电机获得专有类型描述作为输入。它探讨了类型描述并生成源代码。例如,一个发电机透明数据访问层语义数据模型的描述,生成数据库表、查询、访问代码和适当的访问代码胶囊。除了商业上可用的发电机,从无到有在今天的项目为特殊用途定制发电机的开发,在今天的项目为特殊的目的。然而,不支持任

5、务的编程这样的发电机充分以今天的genericity概念。支持内省型和再保险检查是必要的。使用再保险检查API忽略了一点:这不是令人满意的因为它是动态的而不是类型安全。我们的方法,我们称之为Genoupe语言,以另一个方向:它结合了参数多态性和有限的再保险从头检查功能的方式(我)强大到足以支持编程发电机,但足够简洁脱定义一种新的类型安全,可以保证静态。它可以确保在generatordenition时间,即生成器程序出售前,发电机项目不会引发特定类型的任何应用程序中的错误。在这封信中,我们演示了如何使用Genoupe语言例子解决生成基于一个纯粹的语言的编程问题,高度可重用的方式编程的问题。2 G

6、enoupe语言Genoupe4引入了一个编译时的次语言生成。这使得它可以编写代码,其中部分是在编译时执行,并执行导致新一代的代码。这一切发生在编译过程中,使程序员能够编写和重用参数化代码段经常需要执行部分变体,根据一些适用实际参数。发电机的子语言C#相比是有限的。然而,这不是一个问题,因为它满意所有常见的一代任务的需要。限制可以检查特定的安全属性发电机的静态代码,因此,确保发电机的质量。让我们通过查看源代码示例了解Genoupe语言。Genoupe源代码非常类似于C#源代码以两种方式。首先,C#语言本身并没有改变,而是扩展。这意味着任何普通的C#源代码仍然有效。一代的语法是嵌入式成普通的语法

7、在模板样式的风格,以便新语法需要时才使用的一代实际上应该执行。其次,介绍了新的语言结构,由Genoupe语法和语义上非常类似于C#,尽管它是由确保它们可以很容易区分开来的C#。当我们看例子将变得清晰。第一个的例子显示了如何使用Genoupe编程泛型类型。在这里,我们的定义一个参数化类类发生器可用于在编译时生成普通类。发电机接受参数声明类似于那些普通的方法。为了使用在发电机发电机参数和过程信息,我们利用生成器表达式形式C#表达式的一个子集。这些生成器表达式可以包含在并放置在特定的迹象源代码位置以生成定制的代码。1 public class Stack(Type T)2 3 private Sta

8、ck s = new Stack();45 public void push(T x) 6 s.push(x);7 89 public T pop() 10 return (T) s.pop();11 12 在第1行我们声明类生成器堆栈有一个类型参数T,可以访问发电机的身体在变量T .我们把这样的变量被用于产生,因此只能因此在生成器代码生成器变量被访问。与泛型类型的主要的一点是该类型变量可以替代的类型中使用。在我们的例子中,发电机变量T作为类型变量,因为它的价值元类类型,它代表了在C#语言的类型。为了使用经T给出的类型,我们插入生成器表达式T在的地方,在这里我们要生成一个类型的地方。这样做是在

9、第五行,9和10。生成器表达式可以计算在一个更复杂的方式值比在我们的第一个的例子。除了变量访问和文字,他们也可以包含调用C#方法、构造函数和一些basicoperators。也可以调用其他发电机。只有一边安全,因为这可能会侵犯安全,以及某些类型检查就不可能了。用适当的生成器表达式语法元素,请求可以执行3我们可以生成定制的代码部分,比如类型、鉴定器和价值观。正如我们所看到的,一个发电机类型的表达式类型可以用来生成一个类型。可以使用生成器表达式类型的字符串生成一个鉴定器。为了生成一个静态的字符串类型安全堆栈myStack堆栈发电机为例,您会编写一个生成器表达式,应用生成器类型字符串和地方表达,用标

10、志,进入denition myStack:Stack(String) myStack = new Stack(String)();Genoupe语言oers文本的类型。评估类型对象代表字符串的字符串类型。构造函数具有相同的名称作为自己的类型,因此发电机类型是类型的表达式用于生成新运营商的第一个参数。在下一个示例中,我们将看到一个构建迭代产生。该示例生成一个类实现一个ToString方法,它创建了一个对象的字符串表示。该发电机有一个参数Type类型,它代表了一个参数T那的ToString应该工作的对象的类型。生成的类是T的子类,以便它可以用来代替T,但与附加方法。该字符串表示是通过将创建的视场的

11、名称和对象的相应的视场的值。这样的方法的情况下,例如,当一个对象被打印在控制台上,并且它可以是用于调试目的非常有用的。1 class WithToString(Type T) : T2 3 override public String ToString()4 5 String s = ;6 foreach(F in T.GetFields()7 s += new Literal(F.Name) + :t + this.F.Name + n;8 return s;9 10 在第6行我们使用foreach控制构造,这类似于普通foreach循环而被执行在编译时间。类型T的结构是通过标准的C#再访问

12、API,我们遍历所有的视场。关于场的信息可以从新的迭代器变量f在循环体被读取。排队7,我们将生成的字符串,普通字符串字面值,和鉴定器的内容是生成的。对象的元类文字生成字符串;这个.F表达式。Name,字符串类型,生成场的鉴定器。很容易程序生成器生成包装器。下面的示例显示了一个类给定一个生成器,用于产生一个给定的子类。生成的类实现的功能安全代理。Genoupe通常可以用于支持的实现设计模式5的实施是有用的,如代理,观察者或模板方法模式。1 class SecurityProxy(Type T) : T2 3 foreach(M in T.GetMethods() 4 if(M.IsPublic)

13、 5 override public6 M.ReturnType M.Name(M.GetParameters() 7 if(/* access permitted */)8 base.M.Name(M.GetParameters();9 else10 throw new SecurityException();11 12 13 14 图1:EditForm发生器在第1行,我们声明类型参数T和指定生成的类的一个子类T,在第三行3我们遍历所有方法M和 T。从外部保护那些能够被访问的方法,因此以下一代的包装方法是有条件的,只有执行公共方法。我们利用 if构造有条件的一代。以下部分生成一个方法den

14、ition覆盖相应的公共方法由m,在第6行我们生成一个回报类型,鉴定器和参数与适当的生成器表达式。虽然可以生成一个类型用类型对象和一个identier字符串对象,可以生成一组参数声明列表用的ParameterInfo对象的集合,因为它是由GetParameter方法提供的。正如我们可以看到的8号线,我们调用原方法,同样的也可以用于生成一个相应的集合实际参数的列表。在第7行我们生成代码,检查是否允许访问的方法。这部分高度依赖于实际应用,所以我们在这个例子。考虑到许可请求的方法是否被调用,否则就会抛出一个异常。Genoupe和生成编程的另一个应用程序是系统的生成接口,无论是一个GUI、数据库接口、

15、网络接口或API。下列的草图Genoupe代码类生成器,生成一种GUI形式编辑选择给定的对象。许多任务界面的生成可以以类似的方式完成。这个例子可以被视为只是编程-基于模型的用户界面开发的基于语言实例2模型的描述的编程语言类型系统。1 class EditForm(Type T, FieldInfo V) : Form2 3 foreach(F in V)4 / declare widgets needed to edit field F56 T X;78 constructor(T x) 9 this.X = x;10 foreach(F in V) 11 / initialize widge

16、ts12 / set event handlers13 14 1516 foreach(F in V)17 / define event handlers18 我们沙地定义一个类生成器,声明一个参数T的对象的类型。参数V持有FieldInfo对象数组代表T视场,应该是子集编辑的。首先,在3 - 4行,我们迭代生成小部件,我们需要一个合适的施工部件GUI。对于大多数视场,这可能是一个标签和一个文本框。在第6行,我们声明一个成员变量对象编辑。在8 14行,我们生成一个构造函数的鉴定器用关键字的构造。它存储对象编辑和设置部件和事件处理程序适当。在16 17行,我们生成事件处理程序,传播的变化相应的G

17、UI更改相应的事件处理程序变化X的视场,在图1中,我们看到了输入和输出的一代。3 结论发电机子语言的集成,使C#一个功能强大语言为创建通用组件。这种发电机可以开发比单纯的泛型类型更强大。他们是基于宿主语言C#语法和语义,因此容易理解,但使内省的类型和代祷。因为发电机使用普通C#类型很容易可扩展的。与Genoupe可以方便的实现面向对象的设计模式的实施,生成各种各样的接口和产生优化的代码。虽然语言结构都是精心挑选的生成这些任务,他们也设计呈现静态安全检查,所以,预先生成错误是可以预防的。关于Genoupe和研究实现的更多信息可以在项目网站上找到。www.genoupe.formcharts.or

18、g.参考文献1 K. Czarnecki and U. Eisenecker. Generative Programming - Methods, Tools, and Applications. Addison-Wesley, 2000.2 P.P. da Silva. User Interface Declarative Models and Development Environments: A Survey. In Pro-ceedings of 7th International Workshop on Design, Specification and Verification of Interactive Systems,LNCS 1946, pages 207226. Springer, June 2000.3 Franois-Nicola Demers and Jacques Malenfant. Reection in Logic, Functional and Object-oriented Programming: a Short Comparative Study. In Proce

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论