Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本
Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本
2. MDTUML2Getting Started with UML21
1. clipse提供了UML的底层Java包,
就是说用纯代码可以构建一个UML模型,当构建完之后需要保存到磁盘上以备以后使用,该UML模型是以XML格式存放在磁盘上的,这篇文章正式演示了这个用纯UML的底层API创建UML模型的。
2. MDTUML2Getting Started with UML2
1. Contents
1. Summary
2. Introduction
8. Creating Enumeration Literals
13. Saving Models
14. Conclusion
15. References
["E:\\jar2\\org.eclipse.emf.ecore_2.10.1.v20140901-1043.jar//org.eclipse.emf.ecore.resource.ResourceSet.class",
"E:\\jar2\\org.eclipse.emf.ecore_2.10.2.v20150123-0348.jar//org.eclipse.emf.ecore.resource.ResourceSet.class","
E:\\jar2\\org.eclipse.emf.ecore_2.9.1.v20130827-0309 (2).jar//org.eclipse.emf.ecore.resource.ResourceSet.class",
"E:\\jar2\\org.eclipse.emf.ecore_2.9.1.v20130827-0309 (3).jar//org.eclipse.emf.ecore.resource.ResourceSet.class",
"E:\\jar2\\org.eclipse.emf.ecore_2.9.1.v20130827-0309.jar//org.eclipse.emf.ecore.resource.ResourceSet.class","
E:\\jar2\\sdk-common.jar//com.android.ide.common.res2.ResourceSet.class"]
--f
3. 要使用的jar
Elcipse哈面儿的emf,gef,uml关键字的jar
作者:: 绰号:老哇的爪子 ( 全名::Attilax akbar al rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
4. 矢量绘图系统 java
5. JpGraph 3.0.7
JpGraph专门提供图表的类库。它使得作图变成了一件非常简单的事情,你只需从数据库中取出相关数据,定义标题,图表类型,然后的事情就交给JpGraph,只需掌握为数不多的JpGraph内置函数(可以参照JpGraph附带例子学习),就可以画出非常炫目的图表!
Graphical Editor Framework (GEF)
GEF允许开发者使用已有的应用模型简便的开发出一个图形化编辑器。GEF可以使开发者快速的将现有的模型移植到一个图形化编辑的环境中。这个图形化环境是基于SWT的绘图插件“draw2d”。GEF是基于MVC框架的,他可以使开发者方便的实现drop/drag、undo/redo、move、delete、resize等图形编辑器的基本功能。GEF非常适合用于开发流程编辑器、GUI Builder、UML图编辑器、workflow编辑器、甚至是像html这种所见即所得的文本编辑器。但是需要注意的是GEF开发的软件必须工作与Eclipse环境下,即作为plug-in程序,如果希望脱离Eclipse平台作为独立软件运行,可以参考Eclipse 3系列正在开发的rich client platform(RCP)。结合GEF和RCP就可以开发出运行与Eclipse平台外的图形编辑器。
EMF(Eclipse Model Framework)
Eclipse Modeling Framework旨在提供一种简便设计和实现结构化模型的框架,emf提供代码生成工具以使得开发者可以把精力集中在模型本身而不是它的实现细节上,这个框架根本的概念是:元数据(meta-data),代码生成(code generation),默认序列化(dafault serialization)
emf项目的最初目的是实现omg(Object Management Group)的一个元对象工具。同时emf是Ecilpse系列工具目前对mda的部分实现。
emf可以用于描述和建立模型,在这些定义的基础上java code可以被自动生成,这些实现的模型则可以被作为任何java程序开发的基础。这就是emf所要解决的问题。
目前为止emf只是mda部分实现,所以它不包括用于混合xml,eai,ejbs,web services等技术的企业级应用所需的map。
EMF(Eclipse Modelling Framework)是Eclipse MDA(Model Driven Architecture)的重要组成部分,可以将模型转换成高效的,正确的,易于定制的Java代码。
GMF(Graphical Modeling Framework )
The Eclipse Graphical Modeling Framework (GMF) provides a generative component and runtime infrastructure for developing graphical editors based on EMF and GEF.
GEF, 全称: Graphical Editor Framework, 它是一套图像编辑框架, 用于开发图形应用, 如果你在Eclipse中使用过基于图形设计的应用, 例如UML建模, 可视化软件界面设计(VE)等, 它们基本上都是基于GEF而开发出来的.
大部分GEF应用都是跟EMF合作完成的, EMF可以生成图形模型和源代码, 通过建立规则来对图形应用进行约束, 使其简化了开发.... 但由于毕竟GEF和EMF是两个独立的项目, 他们之间冗余的东西也不少, 因此Eclipse人为了使它们更好地应用到程序中, 开发了GMF(Graphical Modeling Framework)框架, 这个在The Eclipse Technology Project中可以找到.
6. Code
package umlPrj;
import java.io.IOException;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.uml2.uml.LiteralUnlimitedNatural;
import org.eclipse.uml2.uml.Model;
import org.eclipse.uml2.uml.PrimitiveType;
import org.eclipse.uml2.uml.Property;
import org.eclipse.uml2.uml.Type;
import org.eclipse.uml2.uml.UMLFactory;
import org.eclipse.uml2.uml.resource.UMLResource;
import org.eclipse.uml2.uml.resources.util.UMLResourcesUtil;
import org.eclipse.emf.common.util.URI;
public class umlTest {
public static void main(String[] args) {
Model epo2Model = createModel("epo2");
org.eclipse.uml2.uml.Package barPackage = UMLFactory.eINSTANCE
.createPackage();
// PrimitiveType intPrimitiveType = createPrimitiveType(epo2Model,
// "int");
org.eclipse.uml2.uml.Class supplierClass = createClass(epo2Model,
"Supplier", false);
// createAttribute(supplierClass, "name", PrimitiveType, 0, 1);
String fileExtension = UMLResource.FILE_EXTENSION;//zosh .uml
String f = "";//args[0];
f="attilaxUmlOutputFolder";
save(epo2Model, URI.createFileURI(f).appendSegment("UmlFileMainname").appendFileExtension(fileExtension));
}
protected static Model createModel(String name) {
Model model = UMLFactory.eINSTANCE.createModel();
model.setName(name);
out("Model '" + model.getQualifiedName() + "' created.");
return model;
}
private static void out(String string) {
System.out.println(string);
}
protected static org.eclipse.uml2.uml.Package createPackage(
org.eclipse.uml2.uml.Package nestingPackage, String name) {
org.eclipse.uml2.uml.Package package_ = nestingPackage
.createNestedPackage(name);
out("Package '" + package_.getQualifiedName() + "' created.");
return package_;
}
protected static PrimitiveType createPrimitiveType(
org.eclipse.uml2.uml.Package package_, String name) {
PrimitiveType primitiveType = (PrimitiveType) package_
.createOwnedPrimitiveType(name);
out("Primitive type '" + primitiveType.getQualifiedName()
+ "' created.");
return primitiveType;
}
protected static org.eclipse.uml2.uml.Class createClass(
org.eclipse.uml2.uml.Package package_, String name,
boolean isAbstract) {
org.eclipse.uml2.uml.Class class_ = package_.createOwnedClass(name,
isAbstract);
out("Class '" + class_.getQualifiedName() + "' created.");
return class_;
}
protected static Property createAttribute(
org.eclipse.uml2.uml.Class class_, String name, Type type,
int lowerBound, int upperBound) {
Property attribute = class_.createOwnedAttribute(name, type,
lowerBound, upperBound);
out("Attribute '%s' : %s [%s..%s] created.", //
attribute.getQualifiedName(), // attribute name
type.getQualifiedName(), // type name
lowerBound, // no special case for multiplicity lower bound
(upperBound == LiteralUnlimitedNatural.UNLIMITED) ? "*" // special
// case
// for
// unlimited
// bound
: upperBound);
return attribute;
}
private static void out(String string, String qualifiedName,
String qualifiedName2, int lowerBound, Object object) {
// TODO Auto-generated method stub
}
protected static void save(org.eclipse.uml2.uml.Package package_, URI uri) {
// Create a resource-set to contain the resource(s) that we are saving
ResourceSet resourceSet = new ResourceSetImpl();
// Initialize registrations of resource factories, library models,
// profiles, Ecore metadata, and other dependencies required for
// serializing and working with UML resources. This is only necessary in
// applications that are not hosted in the Eclipse platform run-time, in
// which case these registrations are discovered automatically from
// Eclipse extension points.
UMLResourcesUtil.init(resourceSet);
// Create the output resource and add our model package to it.
Resource resource = resourceSet.createResource(uri);
resource.getContents().add(package_);
// And save
try {
resource.save(null); // no save options needed
out("Done.");
} catch (IOException ioe) {
throw new RuntimeException(ioe);
}
}
private static void err(String message) {
// TODO Auto-generated method stub
}
}
7. Ref
MDT UML2 Getting Started with UML2及我自己的一些理解 - xiaogugood的专栏 - 博客频道 - CSDN.NET.htm
使用 UML API 編輯 UML 循序圖.htm
使用 UML API 编辑 UML 序列图.htm
MDT UML2 Getting Started with UML2 - Eclipsepedia.htm
UML建模工具开发实践_图文_百度文库.htm
Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本的更多相关文章
- Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号
Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号 1. dwr的长处相对于ajax来说.. 1 2. DWR工作原理 1 3. Dwr的架构 2 4. 自己 ...
- 一些减少代码量、提高开发效率的利器(Java)
Spring Boot mybatis-plus代码生成器和自带CRUD接口 lombok 库: Apache Commons & guava AOP Java8: stream & ...
- 开发环境,eclipse编辑器java代码自动提示
Eclipse+ADT+Android SDK 搭建安卓开发环境 eclipse编辑器java代码自动提示 window-->Preferences-->JAva-->Content ...
- Atitit.提升 升级类库框架后的api代码兼容性设计指南
Atitit.提升 升级类库框架后的api代码兼容性设计指南 1. 增加api直接增加,版本号在注释上面增加1 2. 废弃api,使用主见@dep1 3. 修改api,1 4. 修改依赖import, ...
- atitit.跨语言执行cmd cli api的原理及兼容性设计草案
atitit.跨语言执行cmd cli api的原理及兼容性设计草案 1. 标准输入,标准输出,标准错误与重新定向1 2. 常见问题2 2.1. 执行bat文件2 2.2. 执行bat文件 /c ...
- Linux内核设计第四周学习总结 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
陈巧然原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数A ...
- Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序。。
Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序.. 1. 引擎加脚本架构 跨平台,桌面与web的优势1 2. 架构桌面引擎(java,c#)2 3. php桌面引擎要点2 3. ...
- 初识Django —Python API接口编程入门
初识Django —Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言, ...
- Atitit.提升api兼容性的方法 v3 q326
Atitit.提升api兼容性的方法 v3 q326 1. Atitit.兼容性的“一加三”策略1 2. 2. 扩展表模式1 3. 3. 同时运行模式1 3.1. 3.1. 完美的后向兼容性2 3.2 ...
随机推荐
- linux历史命令
"忘记历史的Linux用户注定要输入很多信息.” 这也让强有力的历史命令(包括Bash shell的历史变体)不仅在援引之前执行命令而不需重新输入它们时有用,在调用其它很少用到的命令时也有用 ...
- Proxmox VE
Proxmox虚拟化环境是基于QEMU/KVM和LXC的开源服务器虚拟化管理解决方案.我们可以使用集成的易于使用的WEB界面或通过CLI管理虚拟机,容器,高可用集群,存储和网络. Proxmox VE ...
- POJ 3260 The Fewest Coins(背包问题)
[题目链接] http://poj.org/problem?id=3260 [题目大意] 给出你拥有的货币种类和每种的数量,商店拥有的货币数量是无限的, 问你买一个价值为m的物品,最少的货币流通数量为 ...
- Ubuntu 16.04通过源码安装QUEM虚拟机
下载编译安装: wget http://download.qemu-project.org/qemu-2.9.0.tar.xz tar xvJf qemu-2.9.0.tar.xz cd qemu-2 ...
- nginx+php-fpm页面显示空白的解决方法
在nginx与php的环境中,配置了一个wordpress,访问时发现php的页面一直显示空白,起初以为是权限问题,将权限改成755后还是不行. 然后,开启nginx和php的日志,但在日志里也没 ...
- Coherence的NameService
Coherence*Extend模式下客户端需要连接一个或多个proxy Server从而接入集群,在一些比较大型的环境中,Proxy Server往往比较多,一旦修改起来需要修改每个配置文件,在Co ...
- [Linux]nginx tomcat做负载均衡
之前使用nginx做过web反向代理,没有做过负载均衡,今天有个同学须要做tomcat的负载均衡,我也研究下. 一共是2个机器,一个物理机(win7)上面部署2个tomcat,使用不同的port启动. ...
- Oracle架构全图
- (转)MFC的GUI窗口使用Console输出函数printf
原文链接 在GUI程序中使用printf函数: #include <io.h> #include <fcntl.h> void InitConsole() { ; FILE* ...
- Yii2系列教程六:集成编辑器
上一篇文章我们实现了简单的用户权限管理,至于更先进的RBAC,我后面会单独出一篇文章来说说.在这一篇文章当中,我主要想写的是在Yii2中集成一个编辑器,因为在我们的实际开发当中,一个简单的textar ...