关闭

Unified Modeling Language—类图与对象图

168人阅读 评论(14) 收藏 举报
分类:


前言


  之前对用例图进行了详细的介绍,接下来小编将类图和对象图的相关知识再系统地整理一下,主要有以下几点。


类图


   一、概念


类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。

类图是定义其他图的基础,在类图基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。



  二、七要素


 类图包括7个元素:类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)。


 1.类

它定义了一组有着状态和行为的对象。包括以下几个部分:




 (1)名称:类的名称是每个类中所必有的构成元素。

 (2)属性(Attribute)

>>>可见性:类中属性的可见性主要包括公有(public)、私有(Private)和受保护(Protected)。

在UML中,公有类型的用“+”表达,私有类型用“-”表达,而受保护类型则用“#”表达。UML的类中不存在默认的可见性,如果没有显示任何一种符号,就表示没有定义该属性的可见性。


>>> 属性名:按照UML的约定,单字属性名小写。如果属性名包含多个单词,这些单词要合并,且除了第一个单词外其余单词的首字母要大写。

>>>属性字符串。属性字符串用来指定关于属性的其他信息,例如某个属性应该是永久的。任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。

>>>类属性。属性也可以作为一个类属属性来定义,这就意味着此属性被该类的所有对象共享。在类图中,类属性带有一条下划线。

(3)操作

类的操作是对类的对象所能做的事务的抽象,相当于一个服务的实现。

(4)职责

在操作部分下面的区域,可以用来说明类的职责。职责是类或其他元素的契约或义务。类的职责是是自由形式的文本,写一个短语,一个句子等。在UML中,把职责列在类图底部的分隔栏中。


(5) 约束

说明类的职责是消除二义性的一种非形式化的方法,形式化的方法是使用约束。约束指定了该类所要满足的一个或多个规则。在UML中,约束是用一个花括号括起来的自由文本。


2.接口

接口包含操作但不包含属性,且它没有对外界可见的关联。

3.协作与关系

类之间的关系最常见的有四种:依赖关系、泛化关系、关联关系、实现关系。



(1)依赖关系(Dependency)

依赖用一个从客户指向提供者的虚箭头表示,用一个构造型的关键字来区分它的种类。

UML定义了4种基本依赖类型,分别是使用(Usage)依赖、抽象(Abstraction)依赖、授权(Permission)依赖和绑定(Binding)依赖。

、使用依赖是非常直接的,通常表示客户使用提供者提供的服务以实现它的行为。以下列出了5种使用依赖关系.

、抽象依赖用来表示客户与提供者之间的关系,依赖于在不同抽象层次上的事物。

、授权依赖表示一个事物访问另一个事物的能力。提供者通过规定客户的权限,可以控制和限制对其内容访问的方法。

、绑定依赖是较高级的依赖类型,用于绑定模板以创建新的模型元素。


(2)泛化关系(Generalization)

泛化关系是一种存在于一般元素和特殊元素之间的分类关系,它只使用在类型上,而不是实例上。在类中,一般元素被称为超类或父类,而特殊元素被称为子类。在UML中,泛化关系用一条从子类指向父类的空心三角箭头表示


(3)关联关系(Association)

关联关系是一种结构关系,它指明一个事物的对象与另一个事物的对象之间的联系。也就是说,关联描述了系统中对象或实例之间的离散连接。在UML中,关联关系用一条连接两个类的实线表示

关联关系有6种对应的修饰,它们分别是:名称、角色、多重性、聚合、组合和导航性。

、名称(Name)。名称用来描述关联的性质,通常使用一个动词或动词短语来命名关联。名称以前缀或后缀一个指引阅读的方向指示符以消除名称含义上可能存在的歧义,方向指示符用一个实心的三角形箭头表示。


、角色(Role)。角色是关联关系中一个类对另一个类所表现出来的职责。角色名称是名词或名词短语,以解释对象是如何参与关联的。


、多重性(Multiplicity)。约束是UML三大扩展机制之一,多重性是其中使用最广泛的一种约束。关联的多重性是指有多少对象可以参与该关联,多重性可以用来表达一个取值范围、特定值、无限定的范围或一组离散值。


、聚合(Aggregation)。聚合关系表示整体和部分关系的关联。聚合关系描述了“has a”的关系。在UML中聚合关系用带空心的实线来表示,其中头部指向整体。


、组合关系(Composition)。组合关系是聚合关系中的一种特殊情况,是更强形式的聚合,又被称为强聚合。在组合中,成员对象的生命周期取决于聚合的生命周期,聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和析构。在UML中,组合关系用带实心菱头的实线来表示,其中头部指向整体。


、导航性(Nevigation)。导航性描述的是一个对象通过链(关联的实例)进行导航访问另一个对象,即对一个关联端点设置导航属性意味着本端的对象可以被另一端的对象访问。

在关联关系上加箭头表示导航方向。

只在一个方向上可以导航的关联称为单向关联(Unidirection Association),用一条带箭头的实线来表示。

在两个方向上都可以导航的关联称为双向关联(Bidirection Association),用一条没有箭头的实线来表示。

另外使用导航性可以降低类之间的耦合度,在也是好的面向对象分析与设计的目标之一。


4、实现关系(Realization)

实现是规格说明和其实现之间的关系,它将一种模型元素与另一种模型元素连接起来,比如类和接口。

用一条带指向接口的空心三角箭头的虚线表示。实现关系还有一种省略的表示方法,即接口表示为一个小圆圈,并和实现接口的类用一条线段连接。

实现关系通常在两种情况下被使用:在接口与实现该接口的类之间;在用例以及实现该用例的协作之间。

泛化和实现关系都可以将一般描述与具体描述联系起来。泛化将同一语义层上的元素连接起来,并且通常在同一模型内。实现关系则将不同语义层内的元素连接起来,通常建立在不同的模型内。


三、正向工程和逆向工程


1、正向工程(Forward Engineering)

正向工程是通过实现语言的映射把模型转换为代码的过程。由于UML中描述的模型在语义上比当前的任何面向对象语言要丰富,所以正向工程会导致一定信息的损失,这也是需要模型的原因。

2、逆向工程(Reverse Engineering)

逆向工程是通过从特定实现语言的映射,把代码转换为模型的过程。逆向工程会导致大量的冗余信息同时逆向工程又是不完整的。


对象图

对象图(Object Diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例。

在UML中,对象图使用的是与类图相同的符号和关系,因为对象就是类的实例。

对象图中包含对象(Object)和链(Link),其中对象是类的特定实例,链是类之间关系的实例,表示对象之间的特定关系。
如下图:

      





两者之间关系




  

 结语

  每一种图的认识都是不断地深化,通过总结和查找资料总是会发现很多之前没有接触到或接触过却不了解的知识点。此篇文章的内容只是其中的一部分,还需要日后不断地实践和拓展。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    网易博客
    http://m18633778874.blog.163.com/
    个人资料
    • 访问:16581次
    • 积分:2704
    • 等级:
    • 排名:第13320名
    • 原创:45篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1376条
    博客专栏
    最新评论