类图(ClassDiagram)是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图不仅用于可视化描述和记录系统的不同方面,也为构建可执行代码的软件应用程序。类图描述一类的属性和操作,也对系统的约束。被广泛应用于类图的建模的面向对象的系统中,因为它们是唯一的,可以直接映射到面向对象语言的UML图。类图显示集合的类,接口,关联,协作和约束,它也被称为作为结构图。
目的
示例
车的类图结构为<>,表示车是一个抽象类;它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;学生与班级之间是聚合关系,使用带空心箭头的实线表示;学生与身份证之间为关联关系,使用一根实线表示;学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;
对象图的目的概述如下:正向和逆向工程;一个系统的对象间的关系;一个交互的静态视图;了解对象的行为和他们的关系从实用的角度来看。
UML组件图(ComponentDiagram)又称为构件图,他描述的是在软件系统中遵从并实现一组接口的物理的、可替换的软件模块。组件图=构件(Component)+接口(Interface)+关系(Relationship)+端口(Port)+连接器(Connector)。UML组件图给提供了将要建立的系统的高层次的架构视图,这将帮助开发者开始建立实现的路标,并决定关于任务分配及(或)增进需求技能。
组件图是一种特殊的UML图。与我们之前讨论的UML图表的目的都不同。组件图不描述该系统的功能,但它描述了使用这些功能的组件。所以从这一点来说,组件图用于可视化在一个系统中的物理组件。这些组件包括库,程序包,文件等。组件图也被描述为一个静态的实施的系统视图,在一个特定的时刻,静态执行代表组织的组成部分。一个单一的组件图不能代表整个系统,但图的集合可用来代表整个。组件图的目的概括如下:可视化系统的组成部分。构建的可执行文件,使用正向和反向工程。描述的组织和组件的关系。
在购买一件商品时,我们首先是浏览商品,了解商品详情。在商品详细页面上,我们可以看到一个“加入购物车”。可以绘制网上商城组件图,如上图所示:购物车、订单、库存、支付管理组件。
部署图由节点以及节点之间的关系组成。部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。部署图通常用来帮助理解分布式系统,一个系统模型只有一个部署图。部署图用于可视化的软件组件部署的系统中的物理组件的拓扑结构。部署图是用来描述一个系统的静态部署视图。
用例图捕捉了模拟系统中的动态行为,并且描述了用户、需求以及系统功能单元之间的关系。用例图展示了一个外部用户能够观察到的系统功能模型图。用例图由主角,用例和它们之间的关系组成。
用例图的目的是捕捉到一个系统的动态方面。用例图是用来收集系统的要求,包括内部和外部的影响。这些要求大多是设计要求。所以,分析一个系统时要收集其功能用例和确定参与者。简单来说,用例图的目的如下:用例图用来收集系统的要求。用例图用于获取系统的外观图。用例图识别外部和内部因素影响系统。用例图显示要求之间的相互作用是参与者。
ATM机取款的需求描述如下:用户通过ATM机,插入银行卡。系统提示输入密码,用户输入密码。系统检查密码是否正确,密码正确用户选择取款。系统提示输入取款金额。用户输入金额,系统判断其合法性。在获取用户输入金额后,系统开始事物处理,减少账户金额,输出相应现金。序列图如下图所示:
协作图是动态图的另一种表现形式,强调参加交互的各对象结构的信息。协作图是一种类图,包含类元角色和关联角色,而不仅仅是类元和关联。协作图强调参加交互的各对象的组织。序列图的组成元素:对象、链接、消息。
协作图中对象之间的消息传递来反映具体的使用语境的逻辑表达,表示的是系统的一个行为,消息编号对应了程序中嵌套调用的结构和信号传递过程,显示的对象之间的一种关系。协作图常用于过程的详细设计。
ATM机取现金100元的需求,协作图如下图所示:
UML状态图是图表本身的名称,主要用于描述对象具有的各种状态、状态之间的转换过程以及触发状态转换的各种事件和条件。UML状态图描述了一个状态机,可以被定义为一台机器,它定义了一个对象,这些状态控制外部或内部事件的不同状态。状态机由状态、转换、事件、活动和动作五部分组成。