
uml基础教程第四章-类图和对象图.ppt
175页第四章第四章类图和对象图类图和对象图第四章 类图和对象图本章导读知道类图和对象图的表示方法掌握类的属性、操作和关系了解类的识别方法4.1 类图的定义 类图指的是对系统中的各种概念进行建模并描绘出它们之间关系的图它描述了系统的静态结构类图通过系统中的类以及各个类之间的关系来描述系统的静态方面在类图中,一共包含以下几种模型元素,即类(Class)、接口(Interface)、依赖(Dependency)关系、泛化(Generalization)关系、关联(Association)关系以及实现(Realization)关系 由于静态视图主要用于支持系统的功能性需求,也就是系统提供给最终用户的服务,而类图的作用是对系统的静态视图进行建模 当对系统的静态视图进行建模时,通常用以下3种方式来使用类图: (1)模型化简单的协作 (2)模型化逻辑数据库模式 (3)为系统的词汇建模4.2 类的构成 类是面向对象系统组织结构的核心类是对一组类是面向对象系统组织结构的核心类是对一组具有相同属性、操作、关系和语义的对象的描述,具有相同属性、操作、关系和语义的对象的描述,类之间共享属性与服务的机制即为继承类之间共享属性与服务的机制即为继承。
在在UML图形表示中,类的表示法是一个矩形,分图形表示中,类的表示法是一个矩形,分别是类的名称(别是类的名称(Name)、类的属性()、类的属性(Attribute)和)和类的操作(类的操作(Operation) 类的名称位于矩形的顶端,类的属性位于矩形类的名称位于矩形的顶端,类的属性位于矩形的中间部位,而矩形的底部显示类的操作的中间部位,而矩形的底部显示类的操作 中间部位不仅显示类的属性,还可以显示属性的类型以及属性的初始化值等矩形底部也可以显示操作的参数表和返回类型等4.2.1 名称 类名称是每个类的图形中所必须拥有的元素,用于同其他类进行区分类的名称通常是来自于系统的问题域,并且尽可能地明确表达要描述的事物,不会造成类的语义冲突 类的名称是一个名词,且不应该有前缀或后缀 在UML中一个矩形表示一个类的图标,按照UML约定,类的名称的首字母应当大写,放在矩形的偏上部如果类的名称由两个单词组成,那么将这两个单词合并,第二个单词首字母也大写(如WashingMachine)如图4-4 类在它的包含者内有唯一的名称,这个包含者通常可能是一个包,但也可能是另外一个类 在类中,默认显示包含该类所在的名称。
如图4-5 如果WashingMachine(洗衣机)类是Househould(家用品)包的一部分,那么这个类的名字为:Househould:WashingMachine包名在左,类名在右,中间用双冒号隔开这种类型的类名叫路径名(pathname) 操作指的是类所能做的事情,或者另一个类能对类做的事情类的操作可以根据不同的可见性由其他任何对象请求以影响其行为属性是描述类的对象特性的值,而操作用于操纵属性的值进行改变或执行其他动作 操作有时被称为函数或方法,在类的图形表示中它们位于类的底部一个类可以有零个或多个操作,并且每个操作只能应用于该类的对象4.2.2 操作 操作由一个返回类型、一个名称以及参数来描述其中,返回类型名称和参数一起被称为操作签名操作签名描述了使用该操作所必需的所有信息 操作的语法表示为: 可见性操作名称(参数表) : 返回类型 属性字符串 如 表4-11. 可见性 描述了该操作是否对于其他类可见,从而是否可以被其他类引用 类中的可见性操作有类中的可见性操作有3种,分别是公有类型种,分别是公有类型(public)、受保护类型受保护类型(protected)和私有类型和私有类型(private)。
在在Rational中还添加了实现中还添加了实现(Implementation)选项 如 表4-22. 操作名称 类的每个操作都必须有一个名称以区别于类中的其他操作通常情况下,操作名由描述所属类的行为的动词或动词短语构成 和属性的命名一样,操作名称的第一个字母小写,如果操作名称包含多个单词,那么单词需要进行合并,并且除了第一个英文单词外其余单词的首字母要大写 操作名列表放在属性名列表之下,两者之间用分隔线隔开,如图所示:3. 返回类型 返回类型指定了由操作返回的数据类型它可以是任意有效的数据类型,返回类型至多一个如果操作没有返回值,在具体编程语言中一般要加上一个关键字void来表示,也就是其返回类型必须是void4. 属性字符串 用来附加一些关于操作的除了预定义元素之外的信息,方便对操作的一些内容进行说明5. 参数表 还可以为操作指定附加信息,在操作名后面的括号中可以说明操作所需要的参数和参数的类型有一种操作叫函数,它在完成操作后要返回一个返回值,可以指明函数的返回值及返回值的类型 参数表由类型、标识符对组成的序列,实际是操作或方法被调用时接收传递过来的参数值的变量参数的定义方式为: 名称:类型 如果存在多个参数,则将各个参数用逗号隔开。
如果方法没有参数,则参数表就是空的参数可以具有默认值 上述全部的操作信息被称为操作的型构(signature)如下图: 属性描述了在软件系统中所代表的对象具备的静态部分的公共特征抽象,这些特征是这些对象所共有的属性是类的一个特性,它描述了类的对象(也就是类的实例)所具有的一系列特性值一个类可以具有零个或多个属性在UML中,类的属性的表示语法为: 可见性 属性名称 :属性类型 =初始值 属性字符串 如 表4-3所示4.2.3 属性1. 可见性 属性的可见性描述了该属性是否对于其他类可见,从而确定是否可以被其他类引用类中属性的可见性和类的操作的可见性一样,也有3种 分别是公有类型分别是公有类型(public)、受保护类型、受保护类型(protected)和和私有类型私有类型(private)在Rational中还添加了实现(Implementation)选项2. 属性名称 属性是类的一部分,每个属性都必须有一个名字以区别于类中的其他属性通常情况下,属性名由描述所属类的特性的名词或名词短语构成按UML约定,单字属性名小写,如果属性名包含了多个字,要合并这些单词,并且除了第一个英文单词外其余但系的首字母要大写。
属性名列表放在类名之下,并且和类名之间用分隔线隔开3. 属性字符串 用来指定关于属性的一些附加信息,如某个属性应该在某个区域是有限制的任何希望添加在属性定义字符串中但又没有合适地方可以加入的规则,都可放在属性字符串中4. 初始值 在程序语言设计中,设定初始值通常有两个用处: 首先,用来保护系统的完整性例如,在编程中,为了防止漏掉对类中某个属性的取值,或者防止类的属性在自动取值的时候会破坏系统的完整性,可以通过赋初始值的方法保护系统的完整性; 其次,为用户提供易用性设定一些初始值能够有效帮助用户进行输入,从而能够为用户提供很好的易用性 类的属性在该类对象中都有具体值,如下图:5. 属性类型 用来指出该属性的数据类型典型的属性的类型包括Boolean、Integer、Byte、Date、String和Long等 当一个类的属性被完整定义后,它的任何一个对象的状态都由这些属性的特定值所决定属性可以带类型和缺省值,如下图: 4.2.4 注释 使用注释可以为类添加更多的描述信息,也是为类提供更多的描述方式中的一种如 图4-6所示 通常对属性或者操作添加一个注释下图的注释说明了serialNumber(序列号)属性引用了政府标准,根据这个注释就可以参考相关标准以查阅如何生成 WashingMachine类对象的serialNumber属性值。
4.2.5 约束 类的约束指定了该类所要满足的一个或多个规则在UML中,约束是用一个大括号括起来的文本信息如图4-7 例如,你想指定WashingMachine类洗衣机的容量只能是16、18或者20磅(也就是对WashingMachine类的capacity属性施加约束),你可以在WashingMachine类图标的旁边写一个约束“capacity=16 or 18 or 20 Ib”,capacity=16 or 18 or 20 4.2.6 职责 类的职责指的是对该类的所有对象所具备的那些相同类的职责指的是对该类的所有对象所具备的那些相同的属性和操作共同组成的功能或服务的抽象的属性和操作共同组成的功能或服务的抽象职责描述了类做什么职责描述了类做什么也就是类的属性和操作能完也就是类的属性和操作能完成什么任务成什么任务例如,一台洗衣机的职责是将脏衣服作为输入,输出洗干净的衣服Take dirty clothes as input and produce clean clothes as output)类的属性和操作是对类的具体结构特征和行为特征的形式化描述,而职责是对类的功能和作用的非形式化描述。
有了属性、操作和职责,一个类的重要语义内容就基本定义完毕了在声明类的职责的时候,可以非正式地在类图的下方增加一栏,将该类的职责逐条描述出来类的职责其实只是一段或多段文本描述 4.3 UML中不同的类 在本节中需要掌握的内容有:如何对类之间的关系建模;如何可视化类和子类的关系;如何表现类之间的依赖 Class类型的类是我们说的普通类,还有两种比较常用的类型是ParameterizedClass、InstantiatedClass,分别代表参数化类和实例化类1. 实例化类(InstantiatedClass) 实例化类具有实际变元值的参数化类类的事物抽象,参数化类是更高一等的抽象,指明一群有类似属性和行为的类通过参数的具体化,能产生出不同的类,这种具体化的类就是实例化类2. 参数化类(ParameterizedClass) 参数化类通常用于创建一系列其他类可以说,参数化类就是某种容器,所以也被称为模板类模板类的是对一个参数化类的描述符模板体可能包含代表模板本身的缺省元素,还包括形式参数通过把参数绑定到实际值上就可以生成一个实际的类 模板类的属性和操作可以用形式参数来定义 在UML表示中,模板类的表示形式如图4-8所示。
模板类不是一个直接可用的类必须把它的参数绑定到实际的值上以生成实际的类只有实际的类才可以作为关联的父亲或者目标(但是允许从模板到另一个类的单向关联) 4.4 构造型1.实体类实体类(Enity) 在实体类中保存需要放进永久存储体的信息比如为在实体类中保存需要放进永久存储体的信息比如为数据库中的每一个表创建一个实体类,在数据表中永久存数据库中的每一个表创建一个实体类,在数据表中永久存储记录信息,而实体类在系统运行时在内存中保存信息储记录信息,而实体类在系统运行时在内存中保存信息如图4-9所示2.控制类(控制类(Control) 控制类用来负责协调其他类的工作,通常本身并不完控制类用来负责协调其他类的工作,通常本身并不完成任何功能,其他类也不向其发送很多消息,而是由控制成任何功能,其他类也不向其发送很多消息,而是由控制类以委托责任的形式向其他类发送消息类以委托责任的形式向其他类发送消息控制类有权知道和执行机构的业务规则,并且可以执行其他流,知道在发生错误时如何对错误进行处理 如图 4-10所示3.边界类(边界类(Boundary) 边界类位于系统与外界的交界处,包括所有窗体、报边界类位于系统与外界的交界处,包括所有窗体、报表、打印机和扫描仪等硬件的接口以及与其他系统表、打印机和扫描仪等硬件的接口以及与其他系统的接的接口。
口在UML中,边界类的表示如 图4-11 4.5 类之间的关系 类和类之间最常用的关系通常有类和类之间最常用的关系通常有4种,分别是依赖关系、种,分别是依赖关系、泛化关系、关联关系和实现关系泛化关系、关联关系和实现关系 如表 4-4 类之间的关系 4.5.1 泛化关系(继承) 泛化关系用来描述类的一般。












