类图及绘制工具:StarUML

作者: goyohol | 来源:发表于2016-12-21 07:10 被阅读6425次

    Unified Modeling Language (UML)又称统一建模语言标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。

    面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,而UML就是这个高潮的产物。

    OMG:对象管理组织(Object Management Group)


    UML由3个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用于整个语言的公用机制。

    UML有3种基本的构造块:事物、关系和图。
    事物是对模型中最具有代表性的成分的抽象,包括结构事物,如:类(Class)、接口(Interface)、协作(Collaboration)、用例(UseCase)、主动类(ActiveClass)、组件(Component)和节点(Node);行为事物,如交互(Interaction)、态机(Statemachine)、分组事物(包,Package)、注释事物(注解,Note)。
    关系用来把事物结合在一起,包括:依赖、关联、泛化和实现关系。





    UML中有九种建模的图标,即:
    用例图、类图、对象图、顺序图、协作图、状态图、活动图、组件图、配置图

    用例图 Use case diagrams
    描述了作为一个外部的观察者的视角对系统的印象。强调这个系统是什么而不是这个系统怎么工作。
    用例图与情节紧紧相关的。情节scenario是指当某个人与系统进行互动时发生的情况。

    用例图在三个领域很有作用:
    1.决定特征(需求)。当系统已经分析好并且设计成型时,新的用例产生新的需求;
    2.客户通讯。使用用例图很容易表示开发者与客户之间的联系;
    3.产生测试用例。一个用例的情节可能产生这些情节的一批测试用例。


    类图 Class diagram
    通过显示出系统的类以及这些类之间的关系来表示系统。类图是静态的———它们显示出什么可以产生影响但不会告诉你什么时候产生影响。

    UML类的符号是一个被划分成三块的方框:类名,属性,和操作。抽象类的名字,是斜体的。类之间的关系是连接线。

    类图有三种关系:
    1.关联association-表示两种类的实例间的关系。如果一个类的实例必须要用另一个类的实例才能完成工作时就要用关联。在图中,关联用两个类之间的连线表示;
    2.聚合aggregation-当一个类属于一个容器是的一种特殊关系。聚合用一个带菱形的连线,菱形指向具有整体性质的类。在我们的图里,Order是OrderDetails的容器;
    3.泛化generalization-一个指向以其他类作为超类的继承连线。泛化关系用一个三角形指向超类。Payment是Cash,Check和Credit的超类。


    包和对象图
    为了简单地表示出复杂的类图,可以把类组合成包packages。一个包是UML上有逻辑关系的元件的集合。


    顺序图
    为交互图,是动态的(它们描述了对象间的交互作用)。

    顺序图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。

    消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。


    协作图
    协作图也是互动的图表。他们像序列图一样也传递相同的信息,但他们不关心什么时候消息被传递,只关心对象的角色。在序列图中,对象的角色放在上面而消息则是连接线。

    对象角色矩形上标有类或对象名(或者都有)。类名前面有个冒号(:)。
    协作图的每个消息都有一个序列号。顶层消息的数字是1。同一个等级的消息(也就是同一个调用中的消息)有同样的数字前缀,再根据他们出现的顺序增加一个后缀1,2等等。


    状态图
    对象拥有行为和状态。对象的状态是由对象当前的行动和条件决定的。状态图statechart diagram显示出了对象可能的状态以及由状态改变而导致的转移。
    状态是用圆角矩形来表示的。转移则是使用带箭头的连线表示。触发转移的事件或者条件写在箭头的旁边。
    初始状态(黑色圆圈)是开始动作的虚拟开始。结束状态也是动作的虚拟结束。
    事件或条件触发动作时用(/动作)表示。动作的结果决定了下一步的状态。


    活动图 activity diagram
    活动图是一个很特别的流程图。活动图和状态图之间是有关系的。状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程动作流程。活动图告诉了我们活动之间的依赖关系。
    转移可能分支branch成两个以上的互斥的转移。保护表达式(在[ ]中)表示转移是从一个分支中引出的。分支以及分支结束时的合并merge在图中用菱形表示。
    转移也可以分解fork成两个以上的并行活动。分解以及分解结束时的线程结合join在图中用粗黑线表示。


    组件图
    组件 component 是代码模块。组件图是是类图的物理实现。


    配置图 Deployment diagrams
    显示软件及硬件的配置。
    物理上的硬件使用节点nodes表示。每个组件属于一个节点。组件用左上角带有两个小矩形的矩形表示。


    详细内容参考





    这里就主要讲解一下类图的要点:

    UML类图常见的几种关系:

    • 泛化(Generalization)
      是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
      例如:人是动物的一种,即有人的特性也有动物的共性。
      箭头指向:带三角箭头的实线,箭头指向父类

      泛化


    • 实现(Realization)
      是一种类与接口的关系,表示类是接口所有特征和行为的实现.
      箭头指向:带三角箭头的虚线,箭头指向接口

      实现


    • 关联(Association)
      是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。
      双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
      代码体现:成员变量
      箭头及指向:带普通箭头的实心线,指向被拥有者

      关联

      老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

      ⭐️特殊情况:自身关联

      自身关联


    • 聚合(Aggregation)
      聚合是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

      聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
      代码体现:成员变量
      箭头及指向:带空心菱形的实心线,菱形指向整体

      聚合


    • 组合(Composition)
      是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。
      组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
      代码体现:成员变量
      箭头及指向:带实心菱形的实线,菱形指向整体

      组合


    • 依赖(Dependency)
      是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
      代码表现:局部变量、方法的参数或者对静态方法的调用
      箭头及指向:带箭头的虚线,指向被使用者

      依赖





    各种关系的强弱顺序:
      泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖 
    



    StarUML

    ** 棒子国的产品 **
    优点:跨平台,在mac下也可以用,和windows下效果一样,很方便和统一。

    棒子国🇰🇷 产品 StarUML

    操作界面很宽阔 想怎么画就怎么画
    操作界面

    在侧边栏,选择相应的对象进行添加:
    选择相应的对象进行添加
    未点击要添加的对象前,鼠标状态提示:
    未点击前
    点击要添加的对象后,鼠标状态提示:
    点击要添加的对象后
    接下来就可以添加对象的,如下图:(添加一个类)
    绘制图形
    再为该类添加属性、方法:
    设置类的属性、方法

    在绘制界面上使用“delete”按键删除无效。
    所有对象的删除 必须右键点击删除!! 或者使用快捷键:Command + “delete” 1.右键点击删除!! </br>2.快捷键:Command + “delete”

    其他操作就自己去摸索吧!这些操作性的东西玩一下就会了!


    StarUML绘图效果 及 其中的格式
    附加绘图🌰:类图各个关系的强弱顺序
    StarUML绘图效果 及 格式

    哎~!公司叫我写SDK,还要画类图。之前完全没搞过,一脸懵逼!人都憔悴了~大概讲解一下类图和StarUML的基本使用!

    后续如有细节的操作!日后自会添加~

















    goyohol's essay

    相关文章

      网友评论

      本文标题:类图及绘制工具:StarUML

      本文链接:https://www.haomeiwen.com/subject/tzyfvttx.html