StarUML入门

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中,接口实现用带三角箭头的虚线表示,从实现类指向接口。

类组件介绍

StarUML入门_第1张图片

  • 1——标识Class可见性(默认public)
  • 2——用来添加note(类的说明)
  • 3——添加类的属性
  • 4——添加类的方法
  • 5——添加模板参数
  • 6——添加接收者(时序图中接受消息的人)
  • 7——添加子类
  • 8——添加父类
  • 9——添加已有的接口
  • 10——添加新接口
  • 11——添加关联
  • 12——添加聚合
  • 13——添加组合
  • 14——添加端口
  • 15——添加部件

使用介绍——以用例图为例

StarUML入门_第2张图片

  • 选择Model—>Add Diagram—>Use Case Diagram,选择后左侧的tool_box会发生变化,更新对应的组件。

  • 用例图从用户的角度,描述了系统的功能。也就是谁要用系统,以及要用系统做什么。

  • 下面是一个简单的栗子:

StarUML入门_第3张图片

对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中类只能单继承,但接口可以多继承。

你可能感兴趣的:(UML)