StarUML入门
类间关系
- Assosiation 关联
- 在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的属性。
- 在UML中,关联关系用实线表示。
- Direct Assosiation 指向性关联
- 在UML中,指向性关联关系用带箭头的实线表示,指向被拥有的类(作为另一个类属性的类)。
- Aggregation 聚合
- has-a的关系,不稳定的包含关系,比如公司和员工,公司倒闭了员工依然存在(可以换公司)。
- 在UML中,聚合关系用带空心菱形的实线表示,菱形由局部指向整体。
- Composition 组合
- contains-a的关系,强烈的包含关系,部分不能脱离整体而存在。比如公司和部门,公司倒闭了部门也就不复存在了。
- 在UML中,组合关系用带实心菱形的实线表示,菱形由局部指向整体。
- Dependency 依赖
- 假设A类的变化引起了B类的变化,则说明B类依赖A类。
- 在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方(B指向A)。
- Generalization 概括(泛化)
- A是B和C的父类,则可以说A是B,C的概括(泛化)。
- 在UML中,泛化关系用带三角箭头的实线表示,由子类指向父类。
- Interface Realization 接口实现
- A是一个接口,B实现了这个接口,就叫做接口实现。
- 在UML中,接口实现用带三角箭头的虚线表示,从实现类指向接口。
类组件介绍
- 1——标识Class可见性(默认public)
- 2——用来添加note(类的说明)
- 3——添加类的属性
- 4——添加类的方法
- 5——添加模板参数
- 6——添加接收者(时序图中接受消息的人)
- 7——添加子类
- 8——添加父类
- 9——添加已有的接口
- 10——添加新接口
- 11——添加关联
- 12——添加聚合
- 13——添加组合
- 14——添加端口
- 15——添加部件
使用介绍——以用例图为例
-
选择Model—>Add Diagram—>Use Case Diagram,选择后左侧的tool_box会发生变化,更新对应的组件。
-
用例图从用户的角度,描述了系统的功能。也就是谁要用系统,以及要用系统做什么。
-
下面是一个简单的栗子:
对mdj文件的解析
各种umlelement的各个变量含义
UMLClass
举例:{"_parent":"AAAAAAFF+qBWK6M3Z8Y=","visibility":"public","name":"Door","_type":"UMLClass","_id":"AAAAAAFqpiMge7NXBnk="}
- _parent 一个神必的id
- visibility对应的是类的可见性
- name对应的是类的名字
- _type对应的是该标签的类型,在这里UmlClass对应的是类
- _id对应的是类的id
UMLOperation
举例:{"_parent":"AAAAAAFqpiMge7NXBnk=","visibility":"public","name":"Door","_type":"UMLOperation","_id":"AAAAAAFqpiQWH7O0bzI="}
- _parent对应的是该操作所在类的id
- visibility是该操作的可见性
- name是该操作的名字
- _type对应的是该标签的类型,在这里UMLOperation对应的是操作
- _id对应的是该操作的类型
UMLParameter
举例:{"_parent":"AAAAAAFqpiRcY7O7pzM=","name":null,"_type":"UMLParameter","_id":"AAAAAAFqpim3MbPYrBA=","type":"boolean","direction":"return"}
- _parent对应的是该变量对应的操作的id
- name对应的是变量名称
- _type对应的是该标签的类型,在这里UMLParameter对应的是操作变量
- _id对应的是变量的id
- type对应的是变量的数据类型
- direction对应的是变量的方向,如果是参数,则是in;如果是返回值,则是return
UMLAssociation
举例:{"_parent":"AAAAAAFqpiMge7NXBnk=","name":null,"_type":"UMLAssociation","end2":"AAAAAAFqpyLHQ1BBCwQ=","end1":"AAAAAAFqpyLHQ1BA8jU=","_id":"AAAAAAFqpyLHQ1A\/uHQ="}
- _parent对应的是相互关联的两个类中的其中一个的id
- name对应的是关联名称
- _type对应的是该标签的类型,在这里UMLAssociation对应的是关联
- end1对应的是其中一个UMLAssociationEnd的id
- end2对应的是另一个UMLAssociationEnd的id
- _id对应的是关联的id
UMLAssociationEnd
举例:{"reference":"AAAAAAFqyyuTsa1CnU8=","multiplicity":"1","_parent":"AAAAAAFqpyLHQ1A\/uHQ=","visibility":"private","name":"locker","_type":"UMLAssociationEnd","aggregation":"none","_id":"AAAAAAFqpyLHQ1BBCwQ="}
- reference对应的是该UMLAssociationEnd所对应的类的id
- multiplicity对应的是该关联端对应的个数
- _parent对应的是所在的关联的id
- visibility对应的是该关联端的可见性
- name是该关联端的可见性
- _type对应的是该标签的类型,在这里UMLAssociationEnd对应的是关联端
- aggregation由于本次作业没用到,单纯根据英文的话是聚合
- _id对应的是关联端的id
UMLInterface
举例:{"_parent":"AAAAAAFF+qBWK6M3Z8Y=","visibility":"public","name":"Interface1","_type":"UMLInterface","_id":"AAAAAAFq5hWfnsrejMQ="}
- _parent对应的是父接口的id
- visibility对应的是该接口的可见性
- name对应的是该接口的名字
- _type对应的是该标签的类型,在这里UMLInterface对应的是接口类
- _id对应的是该接口的id
UMLInterfaceRealization
举例:{"_parent":"AAAAAAFqpyKBqVAUSAo=","name":null,"_type":"UMLInterfaceRealization","_id":"AAAAAAFqyz3DUrUBj9E=","source":"AAAAAAFqpyKBqVAUSAo=","target":"AAAAAAFqyyuTsa1CnU8="}
- _parent对应的是该接口实现所在的类的id
- name对应的是该接口实现的名字
- _type对应的对应的是该标签的类型,在这里UMLInterfaceRealization对应的是接口实现
- source对应的是实现该接口的类的id
- target对应的是实现的接口的id
UMLGeneralization
举例:{"_parent":"AAAAAAFrAn2LyzRtr9Y=","name":null,"_type":"UMLGeneralization","_id":"AAAAAAFrAn4MhTUNujA=","source":"AAAAAAFrAn2LyzRtr9Y=","target":"AAAAAAFrAn2lWzSXWGM="}
- _parent在这里等于子类id,但是子类id最好从source中获得
- name对应的是该泛化的名字
- _type对应的对应的是该标签的类型,在这里UMLGeneralization对应的是泛化
- _id对应的是该泛化的id
- source对应的是子类id
- target对应的是父类id
Tip
- 数一个类拥有的关联的个数,最简单和直观的方式就是数与其相连的end数量(无继承关系时)。
- 一个类的关联个数等于它本层的关联数目+各级父类的关联数目。
- UML的各个元素可以构成一个树形结构,我们可以通过构件一个树来对mdj文件进行解析。
- java中类只能单继承,但接口可以多继承。