类图显示了系统的静态结构,标识了不同的实体(人、事物和数据)是如何彼此相关联的。在类图中不仅包含为系统定义的各种类(其中包含了类的属性和操作),也包含了它们之间的关系,如关联、依赖和聚合等。由于类图表达的是系统的静态结构,使得这种描述在系统的整个生命周期都是有效的。为了能够是系统具有足够的灵活性和可变性,类的抽象程度以及好坏成为描述系统整个生命周期中都是有效的。为了能够使系统具有足够的灵活性和可变性,类的抽象程度以及好坏成为描述系统的关键。
在类的抽象过程中,通常从系统的问题域出发,根据相关场景或用例的到不同的实体类。对象是类的实例化,因此对象具有与类相同的标识,当然对象图中也有一些不同的标识,如多对象等。
一,类图和对象图的基本概念
类图和对象图是用于描述系统静态结构的两种重要手段。
类图从抽象的角度描述系统的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类之间的相互关系。
而对象是类的实例化表示,对象图是系统静态结构的一个快照。
1,定义
(1)类图(ClassDiagram)显示了系统的静态结构,而系统的静态结构构成了系统的概念就基础。
类图就是用于对系统中的各种概念进行建模,并描绘出它们之间关系的图。
在大多数UML模型中可以将这些概念的类型概括为一下4种,分别是:类、接口、数据类型、构件。
一个类图通过系统中的类以及各个类之间的关系类来描述系统的静态方面。
类图与数据模型有许多相似之处,区别就是类不仅描述了系统内部信息的结构,也包含了系统的内部行为,系统通过自身行为与外部事物进行交互。
类图中一共包含了一下几种模型元素:类(Class)、接口(Interface)、依赖(Dependency)关系、泛华(Generalization)关系、关联(Association)关系以及实现(Realization)关系。
如下图:类图包含的者几种模型元素:
(2)对象图描述系统在一个特定时间点上的静态结构,是类图的实例和快照,即类图中的个各类在某一个时间点上的实例及其关系的静态写照。
对象图中包含对象(Object)和链(Link),其中对象是类的特定实例,链是类之间关系的实例,表示对象之间的特定关系。
如下图:对象图
2,类图的作用
由于静态视图主要被用于支持系统的功能需求,即系统提供给最终用户的服务,而类图的作用是对系统的静态视图进行建模.当对系统的静态视图进行建模时,通常是利用一下三种方式来使用视图.
(1)为系统的词汇建模
(2)模型化简单的协作
(3)模型化逻辑数据库模式
二,组成
类图(Class Diagram)是由类、接口等模型元素以及他们之间的关系组成。
类图的目的在于描述系统的构成方式,而不是系统如何协作运行的。
类:
(1)名称(Name)
(2)属性(Attribute)
(3)操作(Operation)
(4)职责(Responsibility)
(5)约束(Constraint)
(6)注释(Note)
问题:如何将类的属性和操作信息隐藏?
2,接口
接口在没有给出对象的实现和状态的情况下对对象行为的描述。通常在接口中包含一系列操作,但是不包含属性,并且它没有对外界可见的关联。
可以通过一个或多个类(构件)实现一个接口,并且每个类中都可以实现接口中的操作。
接口是一种特殊的类,所有接口都是有构造型《interface》的类。一个类可以通过实现接口支持接口所指定的行为。
在程序运行的时候,其他对象可以只依赖于此接口,而不需要知道该类对接口实现的其他任何信息。
一个拥有良好接口的类具有清晰的边界,并成为系统中职责均衡分布的一部分。
当接口被其他类依赖的时候,即一个接口是某个特定类中实现后,一个类通过一个依赖关系与该接口相连接。这时依赖类仅仅依赖于指定接口中的那些操作,而不依赖于接口实现类中的其他部分。
在依赖中可以通过一些方式调用接口中的操作,这种关系如下图:
接口也可以同类那样进行一般化和特殊化处理。在类图种接口之间的泛华关系也是用类泛华关系所使用的符号表示,如下图:
3,类之间的关系
(1)依赖关系(Dependency)
(2)泛华关系(Generalization)
(3)关联关系(Association)——聚集(Aggregation)关系、组成(Composition)关系
(4)实现关系(Realization)
关联关系:
在Rational Rose 2003对关联关系的表示中,还有下列几种特性应用与关联端来修饰关联关系,分别是名称、角色、多重性、构造性和导航型等。
(1)名称
(2)角色
角色是指在关联关系中,一个类通过关联对另一个类所表现出来的职责。当类出现在关联的一端时,该类就在关联关系中扮演一个特定的角色。角色的名称是名词或名词短语,以解释对象是如何参与关系的。如果类与它本身进行关联,也可以设定角色,如下图:
(3)多重性
(4)构造型
在关联关系中也可以根据具体的语义设置一些构造型。
默认设置的构造型包含:communicate、extend、include、realize和subcribe等,也可以自己进行设置,如下图是一个设置构造型为subcribe的关联。
设置类的构造型:
使用类的构造性可以方便地对类进行分类。
在Rational Rose 2003中包含一些内置构造型,如Actor、Boundary、BusinessActor、Business Document、Business Entity、Business Event、Business Goal、Business Worker、Control、Domain、
Entity、Interface、Location、Physical Worker、Resource、Service、Table、View等,其中Boundary、Control和Entity是比较常用的构造型。
例如:在用例图中Actor是构造型为Actor的类,接口是一种构造型为Interface的类。
下面介绍一下Boundary、Control和Entity这3种构造型类。
<1>,Boundary的类被称为边界类。边界类位于系统与边界的交界处,包括所有窗体、报表、打印机和扫描仪等硬件的接口以及与其他系统的接口。在UML表示中边界类的表示形式如下图:
<2>,Control的类被称为控制类。控制类负责协调其他类的工作,通常其本身并不完成任何功能,其他类也不向其发送很多消息,而是由控制类一委托责任的形式向其他类发出消息。控制类有权知道和执行机构的业务规则,并且可以执行其他流和知道在发生错误时如何对错误进行处理。在UML表示中控制类的表示形式如下图:
<3>,构造型为Entity的类被称为实体类。在实体类中需要放进永久存储体的信息,入为数据库中的每一个表创建一个实体类,在数据表中永久存储记录信息,而实体在系统运行时在内存中保存信息。在UML表示中实体类的表示形式如下图:
(5)导航性
单向关联(Unidirectional)
双向关联(Bidirectional)
4,设置类的类型:
在UML中也可以设置类的类型,在RationalRose 2003中包含一些内置类的类型,如Class、ParameterizedClass、InstantiadeClass、ClassUtility、ParameterizedClassUtility、
InstantiatedClassUtility和MetaClass等。
Class类型的类是普通类,ParameterizedClass和InstantiatedClass分别代表参数化类和实例化类。
参数化类通常被用于创建一系列其他类。可以说,参数化类就是某种容器,所以也被称为模板类。模板类是对一个参数化类的描述符。模板类可能包含代表模版本身的默认元素,还包括形式参数。通过把参绑定到实际值上就可以生成一个实际的类。模版类里的属性和操作可以用形式参数来定义。
模板类不是一个直接可用的类(因为它有未绑定的参数),必须把它的参数绑定到实际的值上以生成实际的类。只有实际的类才可以作为关联的父类或者目标。模版类可能是一个普通类的子类,这意味着所有通过绑定的模版而形成的类都是给定类的子类,也可以是某个模版参数的子类,这意味着被绑定的模版类被当做参数传递的类的子类.
模板类不是一个直接可用的类(因为它有未绑定的参数),必须把它的参数绑定到实际的值上以生成实际的类.只有实际的类才可以作为关联的父类或者目标.模板类可能是一个普通类的子类,这意味着被绑定的模版类被当做参数传递的类的子类.