使用Enterprise Architect画类图
2015-11-03 13:18
465 查看
一、选择文件-新建项目,并选择一个位置点击保存
图1:
二、在跳出来的选择模型窗口,这里可以选择Class
图2:
三、模板生成的只是参考案例,这里可以不用模版,直接点右边的新建包即可创建一个默认包。
图3:
四、可以在包中创建一个主图表。
图4:
五、创建好图表后,一般会默认打开,如果没有默认打开就直接在图表上点击右键打开即可,如图
六、注意,现在开始建包和各包的图表及类了,如果项目不大,就直接建类,到时直接建立关系就行了,如果项目大的话都是要建包的,都统一建包统一都在Main图表中创建,如图:
七、单击确定后弹出新新建图表窗口,一般名字和包名是一样的,直接确定即可,如图:
九、确定后,就建好一个包了,接下来创建各个包和各个包里的主图表,建好后如下:
十、现在双击进入主图表Main里的包,就可以直接进入包里面的主图表中了,可以在这里创建各个类,及接口。如果类关系可以在包中完成的,就可以直接在包中完成,要是涉及到多包的,一般建议到Main图表中完成。Main主图表中是不能直接看到其它包中的单个类的,只能看到包及包中含有的类。如果要在主图表中画类图只能通过拖动方式,将包中的类拖到主图表中。
以下是建好的各包及各个类:
十一、现在就要在主Main中为各表添加关系了。
各类关系已经有很多讲得不错的,这里就不一一说明了,这里主要说一下在Enterprise Architect中怎么画类关系。
一、首先将各个要关联的类拖入主图表中,如果不需要和其它包关联的就直接在包里的主图表中完成即可,注:拖放时会弹出对话框询问拖放类型,一般选择第一个,仅作为链接拖入,如图:
二、在左侧关系中一般只提供了基本的关系,可以先随便拖一个关系,然后再更改。这里直接在空白处右键创建一个依赖关系:
点完后直接在类之间拖动,就完成了一个依赖关系的建立。
各关系的英文如下:
Dependency依赖关系,由依赖的一方指向被依赖的一方。
Association关联关系。
Directed Association有方向的关联关系。
Aggregation聚合
Composition合成/组成
Nest嵌套内部类
Generalization泛化关系
Realize实现
关联关系可以参考:
http://blog.csdn.net/gfdonx/article/details/49539531
依赖关系一般场景:
第一种也是最常用的一种方式是将一个类的对象作为另一个类中方法的参数。
第二种方式是在一个类的方法中将另一个类的对象作为其局部变量。(注这里如果将变量提到属性中就变成了单向的关联关系了)
第三种方式是在一个类的方法中调用另一个类的静态方法。
关联关系一秀场景:
它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,
(1) 双向关联
例如:顾客(Customer)购买商品(Product)并拥有商品,反之,卖出的商品总有某个顾客与之相关联。
(2)
单向关联
通常单向关联是将一个类的对象作为另一个类的成员变量.
(3)
自关联
在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。
(4)
多重性关联
多重性关联关系又称为重数性(Multiplicity)关联关系,表示两个关联对象在数量上的对应关系
聚合关系一般场景:
聚合(Aggregation)关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。聚合关系都是一个对象是另一个对象的属性,并且在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。
组合关系一般场景:
组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。而且部份的对像是不能单独存在的。或者说存在没有意义。成员对像的创建也都是在整体对象中完成的。
泛化关系一般场景:
泛化(Generalization)关系也就是继承关系,用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。
接口与实现关系一般场景:
接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现(Realization)关系,在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。
代码工程的导入
一、如果已经有写代码了,这里可以选择在主包上右键,代码工程,导入源文件和目录
二 ,通过导入的代码,及通过EA创建的类,需要再创建类关系,导入的有的类关系已经画好了,但还是不够完善,且导入的类图只有包中的关系,如果跨包则没有。
图1:
二、在跳出来的选择模型窗口,这里可以选择Class
图2:
三、模板生成的只是参考案例,这里可以不用模版,直接点右边的新建包即可创建一个默认包。
图3:
四、可以在包中创建一个主图表。
图4:
五、创建好图表后,一般会默认打开,如果没有默认打开就直接在图表上点击右键打开即可,如图
六、注意,现在开始建包和各包的图表及类了,如果项目不大,就直接建类,到时直接建立关系就行了,如果项目大的话都是要建包的,都统一建包统一都在Main图表中创建,如图:
七、单击确定后弹出新新建图表窗口,一般名字和包名是一样的,直接确定即可,如图:
九、确定后,就建好一个包了,接下来创建各个包和各个包里的主图表,建好后如下:
十、现在双击进入主图表Main里的包,就可以直接进入包里面的主图表中了,可以在这里创建各个类,及接口。如果类关系可以在包中完成的,就可以直接在包中完成,要是涉及到多包的,一般建议到Main图表中完成。Main主图表中是不能直接看到其它包中的单个类的,只能看到包及包中含有的类。如果要在主图表中画类图只能通过拖动方式,将包中的类拖到主图表中。
以下是建好的各包及各个类:
十一、现在就要在主Main中为各表添加关系了。
各类关系已经有很多讲得不错的,这里就不一一说明了,这里主要说一下在Enterprise Architect中怎么画类关系。
一、首先将各个要关联的类拖入主图表中,如果不需要和其它包关联的就直接在包里的主图表中完成即可,注:拖放时会弹出对话框询问拖放类型,一般选择第一个,仅作为链接拖入,如图:
二、在左侧关系中一般只提供了基本的关系,可以先随便拖一个关系,然后再更改。这里直接在空白处右键创建一个依赖关系:
点完后直接在类之间拖动,就完成了一个依赖关系的建立。
各关系的英文如下:
Dependency依赖关系,由依赖的一方指向被依赖的一方。
Association关联关系。
Directed Association有方向的关联关系。
Aggregation聚合
Composition合成/组成
Nest嵌套内部类
Generalization泛化关系
Realize实现
关联关系可以参考:
http://blog.csdn.net/gfdonx/article/details/49539531
依赖关系一般场景:
第一种也是最常用的一种方式是将一个类的对象作为另一个类中方法的参数。
第二种方式是在一个类的方法中将另一个类的对象作为其局部变量。(注这里如果将变量提到属性中就变成了单向的关联关系了)
第三种方式是在一个类的方法中调用另一个类的静态方法。
关联关系一秀场景:
它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,
(1) 双向关联
例如:顾客(Customer)购买商品(Product)并拥有商品,反之,卖出的商品总有某个顾客与之相关联。
(2)
单向关联
通常单向关联是将一个类的对象作为另一个类的成员变量.
(3)
自关联
在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。
(4)
多重性关联
多重性关联关系又称为重数性(Multiplicity)关联关系,表示两个关联对象在数量上的对应关系
聚合关系一般场景:
聚合(Aggregation)关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。聚合关系都是一个对象是另一个对象的属性,并且在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。
组合关系一般场景:
组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。而且部份的对像是不能单独存在的。或者说存在没有意义。成员对像的创建也都是在整体对象中完成的。
泛化关系一般场景:
泛化(Generalization)关系也就是继承关系,用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。
接口与实现关系一般场景:
接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现(Realization)关系,在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。
代码工程的导入
一、如果已经有写代码了,这里可以选择在主包上右键,代码工程,导入源文件和目录
二 ,通过导入的代码,及通过EA创建的类,需要再创建类关系,导入的有的类关系已经画好了,但还是不够完善,且导入的类图只有包中的关系,如果跨包则没有。
相关文章推荐
- Linux查看History记录加时间戳小技巧
- JavaScript基础学习(二)--Date(日期)对象的学习
- 编写一个程序以确定分别由signed及unsigned限定的char、short、int及long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现
- 自定义属性
- 学Android---布局(三)FrameLayout
- AngularJS操作DOM——angular.element
- 代码混淆
- redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
- MFC 报winocc.cpp line 303错误
- Android图片加载(3)
- HDU-1047(DP-二进制状态压缩)
- mfc加载透明图片
- Linux Iptables
- 1553B通讯软件设计BC客户端
- C# 给对象赋null值会释放内存吗?
- 多租户模式
- AUD$ 引起的SYSTEM表空间过大
- inti-mothd
- CENTOS 下 编译安装 tesseract-ocr 3.0.4 识别文字
- .NET NLog 详解(五) - Condition Expression