uml图之类图

类图地位:

面向对象的基础是类,在面向对象处理中,类图处于核心地位,它提供了用于定义和使用对象的主要规则,同时,类图是正向工程的主要资源,是逆向工程的生成物,因此类图是任何面向对象系统额核心,类图随之也成了最常用的uml

类图是描述类,接口以及他们之间关系的图,它显示了系统中各个类的静态结构。类图是面向对象系统建模中最常用的基本图之一,其他许多图,如状态图,组件图和配置图都是在类图的基础上进一步描述了系统的其他方面的特征。

类图的表示:

名称

属性

操作

补充:

职责:可以在类标记中操作分栏下面另加一个分栏,用于说明类的职责,所谓指责是指类或其他元素的契约或者义务。

约束:在类的标记中说明类的职责是消除二义性的一种非形式化的方法,而使用约束则是一种形式花的方法。约束指定了类应该满足的一个或者多个规则。


类的关联:

他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;

1.类的关联的属性(二元关联):

  1. 名称:关联的名称表达了关联的内容,含义确切的名称使人更容易理解。
  2. 关联的端点

每个关联端点都包含以下内容:

  1. 端点上的对象在关联中扮演什么角色,
  2. 有多少对象可以参与关联,
  3. 对象之间是否按一定顺序排列,
  4. 是否可以用对象的一些特征对该对象进行访问,
  5. 一个端点的对象是否可以访问另一个端点的对象等
  1. 关联中的角色:
    1. 示例:

 

 

 

 

  1. 可见性:

 

  1. 多重性:
    1. 多重性用来表达一个取值范围,特定值,无限定的范围或者一组离散值。
  2. 定序:
    1. 在关联中使用多重性时,意味着可能有多个对象参与关联,当有多个对象时,还可以使用定序约束,定序就是指将一组对象按一定的顺序排列。在uml规范中,布尔标记值ordered用于说明是否要对对象进行排序。要指出参与关联的一组对象需要按一定的顺序排序,只需将关键字{ordered}置于关联端点处就可以了。
  3. 约束:
    1. Uml定义了3种扩展机制,即标记,原型和约束。其中,约束定义了附加于模型元素之上的限制条件,保证了模型元素在系统生命周期中的完整性。约束的格式实际上是一个文本字符串(使用特定的语言表达),几乎可以被附加到模型中德任何元素上。约束使用的语言可以是ocl,某种编程语言甚至也可以是自然语言,如英文,中文。
    2. 约束条件作用对象是靠近它的关联端点的类,在模型中使用约束时,要是约束条件靠近它所作用的类。在不熟悉ocl之前可以使用自然语言约束。
  4. 限定符:
    1. 当需要使用某些信息作为关键字来识别对象集合中的一个对象时,可以使用限定符。限定符定义了被参考对象的一个属性,并使用该属性作为直接访问被参考对象的关键字,使用限定符的关联被称为受限关联。
  5. 导航性:
    1. 描述的是一个对象通过链进行导航访问另一对象。也就是说,对一个关联端点设置导航属性意味着本端的对象可以被另一端的对象访问。
  6. 可变性:
    1. 可变性允许建模者对属于某个关联的链接进行操作,默认情况是允许任何形式的编辑,例如,添加,删除等。在uml中,可变性默认值可以不在模型中表现出来。但是如果需要对可变性做些限定,则需要将可变性的取值放在特性字符串中。和定序以及约束放在一起。在预定的可变选项中,{frozen}表示链一旦被建立,就不能移动或者改变,如果应用程序只允许创建新链而不允许删除链,则可以使用{addOnly}选项。
  1. 关联类
    1. 关联类是一种将数据值和链接关联在一起的手段,在uml中,关联类是一种模型元素,它同时具有关联和类的特征。关联类可以像关联那样将两个类连接在一起,并且可以像类一样具有属性,关联类的属性用来存储向关联的信息。
    2. 关联类和其他的类非常相似,两者之间的区别就在于对他们的使用需求不同。一般的类描述的是某个实体,即看得见摸得着的东西,而关联类描述的则是关系。由于关联类也是一个类,所以关联类也可以参与其他的关联。
  2. 或关联与反身关联:
    1. 或关联是指对多个关联附加约束条件,使类中的对象一次只能参与一个关联关系。当两个关联不能同时发生时,用一条虚线连接这两个关联,并且虚线的中间带有{OR}关键字。
    2. 如果参与关联的对象属于同一个类,那么关联直线的起点和终点都是该类。
  3. 聚合:
    1. 聚合关系是在关联之上进一步的紧密耦合,用来表明一个类实际上拥有但可能共享另一个类的对象。在聚合关系中,其中一个类是整体,它由一个或者多个部分类组成,当整体类不存在时,部分类仍能存在,但是当它们聚集在一起时,就用于组成相应的整体类。表示聚集关系时,要在关联实线的连接整体类那一端添加一个菱形。
  4. 组成:
    1. 在类的众多关系中,再加强一步的耦合是组合关系。它与聚合关系的异同之处在于组成的关联中,整体类同样都是有部分类组成,但是部分类需要整体类才能存在,当整体类被销毁时,部分类将同时被销毁。这正是组合所表达的内涵:为组成类的内在部分建模。表示组成关系的符号与聚集关系类似,但是末端的菱形是实心的。
  5. 泛化关系:
    1. 泛化和继承用于描述一个类是另一个类的类型。指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。
    2. 泛化有两个用途。
      1. 第一个用途是用来定义下列情况:当一个变量(如参数或过程变量)被声明承载某个给定类的值时,可使用类(或其他元素)的实例作为值,这被称作可替代性原则(由 Barbara Liskov 提出)。该原则表明无论何时祖先被声明了,则后代的一个实例可以被使用。例如,如果一个变量被声明拥有借贷,那么一个抵押对象就是一个合法的值。
      2. 泛化使得多态操作成为可能,即操作的实现是由它们所使用的对象的类,而不是由调用者确定的。
    3. 泛化的层次和多重继承:

泛化的层次:一个子类的超类也可以是另一个超类的子类。

多重继承:同一个子类拥有多个父类。

  1. 泛化的约束
  1. 实现
    1. 指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;
    2.  
  2. 依赖

可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;


UML类图关系中依赖表示两个或多个模型元素之间语义上的关系。它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。它表示了这样一种情形,提供者的某些变化会要求或指示依赖关系中客户的变化。

依赖的种类

访问:允许一个包访问另一个包【access

绑定:为模板参数赋值以生成一个新的模型元素【bind

调用:声明一个类调用其他类的方法【call

导出:声明一个实例可以从另一个实例中到处【derive

友元:允许一个元素访问另一个元素而不论被访问元素的可见性【friend

引入:允许一个包访问另一个包的内容并未被访问包的组成部分添加别名【import

实例化:关于一个类的方法生成了另一个类的实例的生命【instantate

参数:一个操作和他参数之间的关系【parameter

实现:说明和其实之间的映射关系【realize

精化:声明具有两个不同层次上元素的映射关系【refine

发送:信号发送者和信号接受者之间的关系【send

跟踪:声明不同模型中元素之间的连接,没有映射精确【trace

使用:声明使用一个模型元素需要已存在的另一个模型元素,这样才能正确实现使用者的功能(调用,实例化,参数,发送)【use

 

对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;

但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖;


 


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 创建模型时序(sequence diagram)的步骤包括: 1. 确定模型中的对象和活动:首先需要确定模型中需要出现的各个对象,以及这些对象在模型中扮演的角色,进而确定模型中需要描述的各个活动。 2. 确定对象之间的关系:在模型中,各个对象之间存在着各种不同的关系,例如,调用、引用、继承等,需要根据实际情况确定各个对象之间的关系,并用适当的箭头表示。 3. 绘制时序:在确定了模型中的对象和它们之间的关系之后,可以开始绘制时序。时序一般由多个水平方向排列的 lifeline(生命线)构成,每个 lifeline 代表一个对象,在它上面可以画出对象的各个操作,用垂直的带箭头的线表示。 4. 补充详细信息:最后,需要根据实际情况添加时序的详细信息,例如各个操作的参数和返回值等,进一步完善模型的表达能力。 ### 回答2: 时序也是UML建模中非常重要的一种形,它主要用来描述对象之间的交互关系和消息通信。它能够清晰地展示对象之间的动态关系,对于分析和设计系统非常有帮助。 时序的主要元素包括对象、生命线、消息、激活条和控制流。在时序中,每个对象都表示一个状态或实体,生命线表示对象在一定时间段内的存在。消息则表示对象间的交互,包括同步消息、异步消息、返回消息等。激活条则表示在消息发送或者接收时,接收方的响应时间。控制流则表示消息之间的流向和顺序。 时序绘制可以根据具体的需求进行制定,一般分为三个步骤。第一步是确定参与交互的对象,包括系统、人员、组件等。第二步是建立生命线和激活条,确定对象的存活期和响应时间。第三步是建立消息和控制流,清晰地展示对象之间的消息交互关系。 时序的优点在于能够以非常直观的方式展示对象间的交互行为,可以帮助开发人员更好地理解系统的交互方式,从而更好地设计出系统的结构和功能。同时,它还能够帮助进行调试和测试,方便开发人员对交互流程进行分析和优化。 总之,时序UML建模中非常重要的一种形,可以用来描述对象之间的交互关系和消息通信。在系统分析和设计中具有广泛的应用,是开发人员必须掌握的技能之一。 ### 回答3: 时序UML建模中用于表示系统中对象之间交互行为的一种示方法。时序通常是用来表示系统中对象之间的交互行为,也可用于描述系统中对象的一般行为。 时序展示了一系列对象在一段时间内的相互关系、相互交互。时序就像一个的活动,这里就是一个方法的调用过程。时序由对象、生命线、消息和控制流组成。 在时序中,对象被表示为矩形,矩形上方是对象的名称,下方是对象型。生命线通常是垂直线,表示对象在某段时间内的存在。消息是表示对象之间的通信,有同步消息和异步消息。同步消息是表示调用一个方法并在返回之前等待结果,而异步消息表示调用一个方法并立即返回。 时序还包括控制流和逆食流,在控制流中,消息从一个生命线流向另一个生命线。逆流控制是一条带箭头的曲线,表示消息的回传。 时序的优点在于它是一种高度形式化的语言,理解时序需要一定的技能和专业知识。但是它的优点是,它能够在开发过程的任何阶段使用,并且能够提供完整的交互细节,帮助开发人员精确定义系统的行为,并且帮助测试人员准确地测试和验证系统的行为。在实现新系统、更改或调整现有系统或维护现有系统的过程中,时序都可以提供实用的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值