摘要: 今天终于可以把acceleo教程讲完了,本讲是最后一讲,将详细介绍acceleo的最后两种服务:字符串服务和xpath服务。一、字符串服务1、charAt charAt(int):返回字符串指定位置的字符 接受类型:String 参数:int索引 返回:索引处的字符 详细描述:类似于java语言中的charAt()方法,默认从0开始。 应用举例:<%if (eContainer().name.charAt(0) == " a ") {%>2、endsWith endsWith(String):判断字符串是否以指定参数结束 接受类型:String 参数:期望的字符 阅读全文
posted @ 2012-05-23 19:01 程序员姜小白 阅读(2375) 评论(3) 推荐(1) 编辑
摘要: 本讲开始详细介绍acceleo提供的剩余七种服务。一、对象服务1、eAllContents eAllContents():返回当前对象的所有孩子对象 接受类型:EMF对象 返回:家族对象列表 详细描述:此服务返回了所有直接或间接的孩子对象,不区分类型,即返回所有类型的对象。 应用举例:假设a,b,c,d,e是对象,a包含b,c,b包含d,d包含e,则 <%a.eAllContents()%>: 返回 {b, c, d, e} <%b.eAllContents()%>: 返回 {d, e} <%e.eAllContents()%>: 返回空对象2、eAllCo 阅读全文
posted @ 2012-05-23 15:56 程序员姜小白 阅读(2500) 评论(0) 推荐(1) 编辑
摘要: 这一讲将详细介绍acceleo提供的模板服务,主要有九种:上下文服务、类型服务、对象服务、属性服务、需求服务、资源服务、专用服务、字符串服务和xpath服务。一、上下文服务 上下文服务提供了关于上下文和栈的服务。1、get get(String):返回key参数在当前上下文中所引用的对象。 接受类型:ENode(也就是所有对象类型:int, double, boolean, String, ENodeList, EObject) 参数:字符串key(key引用了当前上下文的对象) 返回:key引用的对象 详细描述:get允许通过key从当前脚本上下文中获取对象,当然前提是先通过... 阅读全文
posted @ 2012-05-23 00:13 程序员姜小白 阅读(3002) 评论(0) 推荐(2) 编辑
摘要: 从这一讲开始,将介绍模板设计的语法,以便大家可以设计自己需要的模板,完成需要的代码生成。下面主要从两方面讲解语法和服务。一、语法 Acceleo的变量区是用<%和%>包围的,当然为了避免某些冲突(例如jsp生成代码中也包含<%这样的标记),也可以用另一种标记[%和%]包围,编译器会自动识别标记。1、注释 Acceleo的注释用<%--和--%>包围,可以一行或者多行。2、metamodel 关键字metamodel指定了模板中使用的元模型,它是import区的第一条命令,语法如下: <% metamodel MyMetaModelURI import.. % 阅读全文
posted @ 2012-05-22 17:28 程序员姜小白 阅读(3999) 评论(0) 推荐(1) 编辑
摘要: 前面对Acceleo的知识背景和基本架构进行了讲解,接下来就将开始模型到代码的生成了。本讲将逐步讲解一个简单的代码生成模块(UML to Html)。Acceleo的代码生成是基于模板的,所以有了输入模型(如UML)后,需要建立对应模型的模板,然后生成代码。原理如图1所示。图1 基于模板的Acceleo1、新建项目 首先,切换到Acceleo视图,新建generator project。此处,我们可以命名为“acceleo.uml2.gen.xhtml”。接下来,我们需要输入模型。2、建立模型 目前,可用的建模工具有很多,Acceleo提供了很好的机制来兼容这些不同的建模工具,可以兼容... 阅读全文
posted @ 2012-05-21 21:09 程序员姜小白 阅读(8384) 评论(0) 推荐(2) 编辑
摘要: 前面,已经讲了Acceleo原理的一些背景知识,现在来说下Acceleo的架构,图1是Acceleo的体系结构图。图1 Acceleo的体系结构 1、 Acceleo的输入是XMI格式的模型文件(基本所有建模工具都可以将模型导出为XMI格式),这样就能兼容几乎所有的建模工具。输出是目标代码文件。 2、 Acceleo是基于EMF的,因为可直接支持XMI2.0,同时Acceleo提供了一种机制来支持XMI1.0,Acceleo通过MDR(Meta Data Repository)来实现XMI1.0到XMI2.0的转换。对于工具的“convert to EMF”功能。 3、 Accele... 阅读全文
posted @ 2012-05-19 10:58 程序员姜小白 阅读(3209) 评论(0) 推荐(1) 编辑
摘要: Acceleo是OMG的MOF Model to Text Language (MTL)标准的实现,由法国Obeo公司研发,专用于MDA过程中的代码生成,能够有效提高开发效率。接下来的几天,我将对Acceleo进行全面的介绍,希望对大家有所帮助,并欢迎交流。一、背景知识1、元模型 大家都知道,模型是用具有精确语法和语义的语言对系统的抽象表示。那么,什么是元模型(meta model)呢?元模型,即模型的模型,是模型的定义,定义了模型中的内容,是模型的抽象表示。知道了元模型的定义,相信大家对元元模型(即元模型的定义)的概念也都可以举一反三了吧? 可以用地图举例,地图是真实路线的精确表示,... 阅读全文
posted @ 2012-05-19 00:41 程序员姜小白 阅读(5342) 评论(0) 推荐(4) 编辑
摘要: 开始复习算法,对原来一知半解的基本知识需要慢慢弄懂,其中包括P相关的基本概念(包括P/NP/NPC/NP hard等),从各处看到很多介绍,讲的很多很全面,但都是文字描述,即使耐心看完看懂,但如果长时间不用仍很容易忘记。所以本文用一种图形方法,抽象表达这些概念之间的关系,首先先概要介绍各自概念,然后用图形表示它们之间的关系。一、相关概念 P: 能在多项式时间内解决的问题 NP: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题 NPC: NP完全问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的NP问题,即解决了此NPC问题,... 阅读全文
posted @ 2012-04-15 20:59 程序员姜小白 阅读(15003) 评论(2) 推荐(2) 编辑
摘要: 在之前一篇博文《基于AADL的嵌入式软件的开发方法》中,大体提到了AADL的应用背景,并在《体系结构分析与设计语言AADL基础》中对AADL基本知识进行了整理,本文在此基础上,为了增强建模工具和验证工具Cheddar之间的互操作性,引入了AADL的四种经典通信设计模式:同步数据流模式、互斥模式、黑板模式和排队缓冲模式。一、同步数据流(Synchronous data-flows)模式1.描述 在同步数据流模式中,线程在dispatch时读取输入端口的数据、在complete时向输出端口写数据。此模式不需要共享的data构件,processor构件需要指定固定优先级调度策略(如Rate M... 阅读全文
posted @ 2012-03-27 20:56 程序员姜小白 阅读(10384) 评论(0) 推荐(5) 编辑
摘要: 3.18是哥德巴赫的生日,本来想这一天用穷举的方法验证下他的猜想,无奈因为其它的事情而暂时耽搁,昨晚终于把程序写好了,今天在这里分享一下。一、哥德巴赫猜想 任一大于2的偶数都可以分解成两个质数的和。二、穷举验证算法 算法说明: 1、用prime动态数组保存所有质数,并将前两个数初始化为3和1,这样初始化是为动态构造出质数数组prime。 2、如果满足猜想,则输出格式为:偶数x 左质数 右质数 3、用r_index表示prime的最大可索引游标,用l_index表示左质数在质数数组prime中的游标,用cur_index表示每个x开始判断是否为质数前的l_index值。 4、... 阅读全文
posted @ 2012-03-26 10:25 程序员姜小白 阅读(4132) 评论(13) 推荐(5) 编辑