https://blog.csdn.net/Appleyk/article/details/88994356
一、什么是EA? Enterprise Architect 是Sparx Systems 公司的旗舰产品。它覆盖了系统开发的整个周期,除了开发类模型之外,还包括事务进程分析,使用案例需求,动态模型,组件和布局,系统管理,非功能需求,用户界面设计,测试和维护等。 -- -- 摘自百度百科
比Rose还要强大的UML建模工具,安装后,整体UI风格如下:
![](https://img-blog.csdnimg.cn/20190403143145950.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
二、安装EA
百度网盘链接:https://pan.baidu.com/s/14zk04mge9ihmKPUoqnTWJg提取码:eg37
![](https://img-blog.csdnimg.cn/2019040314361547.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
三、为什么要学会用EA? 我直接用三个反问句吧,直接明了: 1、你还在没经过设计就直接敲代码吗? 设计先行的理念哪去了? 2、你难道不想要有一种工具,可以把你设计的东西直接转换成代码或者sql语句,以减轻你的工作量吗? 3、你想一直都敲代码吗?程序员可不是吃青春饭的,时间久了,就该要好好考虑转变开发角色的事情了。
四、创建EA建模工程
(1)新建工程,命名为test(.eapx)
![](https://img-blog.csdnimg.cn/2019040314500587.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/2019040314513155.jpg)
(2)创建视图
![](https://img-blog.csdnimg.cn/20190403145720766.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
举个例子:
![](https://img-blog.csdnimg.cn/20190403145902744.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
右键选择添加:
![](https://img-blog.csdnimg.cn/2019040315000514.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
案列效果:
![](https://img-blog.csdnimg.cn/20190403150155374.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
从左至右,依次是:工程的目录结构,主视图窗口,属性面板(设置对象的属性值)
五、创建类视图,构建类和接口
我们不使用案列带的Diagrams例子,直接新建一个package,在package下添加我们需要的类
(1)创建一个包,命名为类视图
![](https://img-blog.csdnimg.cn/20190403150727107.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(2)在构建的包(目录)下面添加一个视图
![](https://img-blog.csdnimg.cn/20190403151106724.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(3)选择Class(类)
![](https://img-blog.csdnimg.cn/2019040315122965.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(4)瞅准工具箱(Toolbox,往视图面板上拖类和接口组件) 工具箱的位置:Design-->Toolbox
![](https://img-blog.csdnimg.cn/20190403151546603.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(5)拖入两个类和一个接口(一个子类,一个抽象超类,一个接口)
![](https://img-blog.csdnimg.cn/20190403153057160.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(6)给类或接口添加说明(标注)
![](https://img-blog.csdnimg.cn/20190403152914490.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(7)改变字体大小
![](https://img-blog.csdnimg.cn/20190403151911726.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(8)废话不多说,直接构建关系,看效果
![](https://img-blog.csdnimg.cn/20190403154739790.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(9)给QQPlayer类添加属性字段
![](https://img-blog.csdnimg.cn/20190403154954450.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
添加一个name字段:
![](https://img-blog.csdnimg.cn/20190403155250739.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
添加方法playMovies():
![](https://img-blog.csdnimg.cn/20190403155500921.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
调整变量或方法的“出场”顺序:
![](https://img-blog.csdnimg.cn/20190403160841264.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(10)标识类为抽象类
![](https://img-blog.csdnimg.cn/20190403155739212.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
抽象类的字体是倾斜的,如下:
![](https://img-blog.csdnimg.cn/2019040315582885.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(11)至此,类和接口的简单使用结束 难点在于:关系的认知,比如哪根线表示继承,哪根线又表示实现等;如何给类添加字段和方法;如何标识类为抽象类;
六、选中模型目录,自动检出Java代码
(1)改变类视图的目录(包)结构如下(第五步的结果一定要记得保存!!!)
![](https://img-blog.csdnimg.cn/20190403161139799.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(2)见证奇迹,检出代码
![](https://img-blog.csdnimg.cn/20190403161440527.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
勾选选项(配置一下)如下:
![](https://img-blog.csdnimg.cn/20190403161647623.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
勾选 Include all Child Packages
![](https://img-blog.csdnimg.cn/20190403161810583.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
点击Generate按钮,成功了即可看到如下:
![](https://img-blog.csdnimg.cn/20190403161930254.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(3)回到桌面,检查上一步自动生成的代码是否OK
![](https://img-blog.csdnimg.cn/20190403162046407.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
目录结构很package,很ok,就是不知道代码是否也ok呢?
(4)检查下代码,看一下QQPlayer类是否继承和实现都体现在代码里了
![](https://img-blog.csdnimg.cn/20190403162347277.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
就连抽象类Mp3也是很ok的
![](https://img-blog.csdnimg.cn/20190403162432751.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
七、趁热打铁,构建数据表视图并检出SQL脚本
(1)创建Data Modeling
![](https://img-blog.csdnimg.cn/20190403162933736.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20190403163004336.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
点击ok完成后,效果如下:
![](https://img-blog.csdnimg.cn/20190403163058100.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(2)基于PostGreSql,构建一张表和一个ID自增序列
![](https://img-blog.csdnimg.cn/20190403163404259.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20190403163739797.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(3)给User表添加列
![](https://img-blog.csdnimg.cn/20190403163917355.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
添加id、name、age、sex等(简单意思下就行):
![](https://img-blog.csdnimg.cn/20190403164159496.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(4)最终视图效果如下
![](https://img-blog.csdnimg.cn/20190403164304126.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(5)自动检出sql脚本(操作和生成代码有点区别)
选中所有元素(对象):
![](https://img-blog.csdnimg.cn/20190403164948280.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
选中后效果如下:
![](https://img-blog.csdnimg.cn/20190403165221926.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(6)Generate后,桌面验证SQL脚本
查看内容:
![](https://img-blog.csdnimg.cn/20190403165437929.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
(7)PostGreSql数据库验证一下,SQL脚本是否可用
![](https://img-blog.csdnimg.cn/20190403165833578.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
刷新一下,查看构建的user表:
![](https://img-blog.csdnimg.cn/20190403165956553.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
使用下刚才创建的user_id序列:
![](https://img-blog.csdnimg.cn/20190403170103829.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwcGxleWs=,size_16,color_FFFFFF,t_70)
八、其他UML建模视图不再陈述
test.eapx工程下载地址:
链接:https://pan.baidu.com/s/1ptaaxqgvPhs9XsUEz3J1mg
提取码:azj0
|