《类图对象图和包图》PPT课件.ppt_第1页
《类图对象图和包图》PPT课件.ppt_第2页
《类图对象图和包图》PPT课件.ppt_第3页
《类图对象图和包图》PPT课件.ppt_第4页
《类图对象图和包图》PPT课件.ppt_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象建模技术,软件工程系 林 琳,2,第3章 类图、对象图和包图,类图和对象图合称为结构模型视图或者静态视图,用于描述系统的结构或静态特征。 类图用来描述系统中的类以及类与类之间的静态关系等; 对象用来描述特定时刻实际存在的若干对象以及它们之间的关系。 一个系统的模型中可以包含多个对象图,每个对象图描述了系统在某个特定时刻的状态。,3,本章学习要点:,理解类图的基本概念 为系统建模类 建模类之间的关联关系 理解并建模泛化关系 了解依赖关系和实现关系 了解对象图和包图的概念 构造类图,4,3.1 类图,构建面向对象模型的基础是类、对象以及它们之间的关系。 在不同的系统中描述的类可以是各种各样

2、的。 在面向对象的处理中,类图处于核心地位,它提供了用于定义和使用对象的主要规则,同时,类图是正向工程(将模型转化为代码)的主要资源,是逆向工程(将代码转化为模型)的生成物。 类图是任何面向对象系统的核心。,5,3.1.1 概述,类图是描述类、接口以及它们之间关系的图,它显示了系统中各个类的静态结构。可以用某种面向对象的语言实现类图中的类。 建模对象 对系统的词汇建模 对协作建模 对数据库模式建模,类图的元素: 类(Class) 接口(Interface) 协作(Collaboration) 依赖关系(Dependency) 泛化关系(Generalization) 关联关系(Associat

3、ion) 实现关系(Realization),3.1.1 概述,一个例子,3.1.2 类及类的表示,类是对资源的定义,它所包含的信息主要用来描述某种类型实体的特征以及对该类型实体的使用方法。对象是具体的实体,它遵守类制定的规则。 类定义了一组具有状态和行为的对象,这些对象具有相同的属性、操作、关系和语义。 类包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation),名称必须有,属性和操作部分可以省略。,8,名称,1 名称 2 属性 3 操作 4 职责 5 约束 6 注释,3.1.2 类及类的表示,1 名称,应该来自系统的问题域。 应该是一个名词,且不应该有前缀或

4、后缀。 分为简单名称和路径名称。,2 属性,描述了类在软件系统中代表的事物(即对象)所具备的特性。 类可以有任意数目的属性,也可以没有属性。 在UML中,类属性的语法为:,2 属性,1. 可见性 2. 属性名 3. 类型 4. 初始值 5. 属性字符串,(1) 可见性,类型: 公有(Public) “” 私有(Private)“” 被保护(Protected)“” UML中没有默认可见性类型,(2) 属性名,每个属性都必须有一个名字以区别于类中的其他属性。 属性名由描述所属类的特性的名词或名词短语组成。 单字属性名小写,如果属性名包含了多个单词,这些单词要合并,且除了第一个单词外其余单词的首字

5、母要大写。,(3) 类型,应为属性指定所属的数据类型 整型 布尔型 实型 枚举类型 系统中的其他类 用户自定义的数据类型,(4) 初始值,目的: 保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性。 为用户提供易用性。,(5) 属性字符串,指定关于属性的其他信息。 任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。,特殊类型的属性,类的作用域属性:属性下加下划线 对象属性:用数组表示,3 操作,对类的对象所能做的事务的抽象。 一个类可以有任意数量的操作或者根本没有操作。 由返回值类型、名称和参数表描述。 在UML中,类操作的语法为:,3 操作,(1)

6、可见性 (2)操作名 (3)参数表 (4)返回类型,(1) 可见性,类型: 公有(Public) “” 私有(Private) “” 受保护(Protected) “” 包内公有(Package) “”,(2) 操作名,用来描述所属类的行为的动词或动词短语。 单字操作名小写,如果操作名包含了多个单词,这些单词要合并,并且除了第一个单词外其余单词的首字母要大写。,(3) 参数表,一些按顺序排列的属性定义了操作的输入。 是可选的,即操作不一定必须有参数才行。 定义方式:“名称:类型”。 若存在多个参数,将各个参数用逗号隔开。 参数可以具有默认值。,(4) 返回类型,是可选的,即操作不一定必须有返回

7、类型。 绝大部分编程语言只支持一个返回值。 具体的编程语言一般要加一个关键字void来表示无返回值。,4 职责,类或其他元素的契约或义务。 自由形式的文本。 非形式化的方法。,5 约束,指定了类所要满足的一个或多个规则。 形式化的方法。,6 注释,注释可以包含图形也可以包含文本。,3.1.3 定义类,实体抽象成类 将系统要处理的数据抽象为类的属性 处理数据的方法抽象成类的操作 要对问题域有透彻的理解 依据:需求规格说明书,类之间的关系,关联关系(Association) 泛化关系(Generalization) 依赖关系(Dependency) 实现关系(Realization),对象之间的通

8、信手段,包括: 二元关联 关联类 或关联与反身关联 聚合(Aggregation) 组成(Composition),3.2 关联关系,3.2.1 二元关联,只有两个类参与的关联 在类图中的关联关系,两个类的相应对象所具有的关系称为链,名称 角色 多重性 约束 限定符 导航性,3.2.1 二元关联,(1) 名称,使用一个动词或动词短语来命名关联。 清晰而简洁地说明类间关系。 关联的名称并不是必需的。 可以前缀或后缀一个指引阅读方向的方向指示符,以消除歧义。一般是从左到右,从上到下阅读。如果方向不同,要指出来。,(2) 角色,关联关系中一个类对另一个类所表现出来的职责。 角色的名称应该是名词或名词

9、短语,以解释对象是如何参与关系的。 可以用角色名代替关联名。,(3) 多重性,指有多少对象可以参与该关联。 可以表达一个取值范围、特定值、无限定的范围或一组离散值。 格式:“minimum.maximum” (均为Int型)。 赋给一个端点的多重性表示该端点可以有多少个对象与另一个端点的一个对象关联。 确定方式:,(4)约束,规定了实现关联端点时必须遵守的规则,(5)限定符,使用关键字ID识别对象集合中的对象,称为受限关联,(6) 导航性,描述一个对象通过链进行导航访问另一个对象。 使用导航性可以降低类间的耦合度。 包括:单向关联和双向关联。 双向导航一般省略箭头。 大多数情况都是双向导航,3

10、.2.2 关联类,与关联关系相连的类。 关联类与关联相对应,表示关联的附加信息 关联类是一种将数据值和链接关联在一起的手段,关联类与一般类的不同:一般类描述的是实体,关联类描述的是关系 关联类与一般类的相同:关联类也是类,也可以与其他类关联,3.2.2 关联类,3.2.3 或关联,或关联指多个关联附加约束条件,使类中的对象一次只能参与一个关联关系,3.2.3 反身关联,参与关联的对象属于同一个类,称为反身连接。,3.2.4 聚合关系(Aggregation),在关联之上的紧密耦合 表示整体与部分关系的关联。 整体类和部分类都可以独立存在。,3.2.5 组成关系(Composition),更紧密

11、耦合的关系 表示整体与部分关系的关联。 部分类不能脱离整体类存在。,1.*,1.*,3.3 泛化关系(Generalization),存在于一般元素和特殊元素间的分类关系。 可以用于类、用例以及其他模型元素。 描述了一种“is a kind of” 的关系。,3.3.1 泛化的含义和用途,一般元素称为超类或父类,特殊元素称为子类 子类继承了父类的所有属性和操作,并具有自己独有属性和操作。,3.3.2 泛化的层次,泛化可以有多层 泛化是类关系中最强的耦合形式,必要时才使用 只有在一个类确实是另一个类的特殊类型时才使用泛化,3.3.2 泛化的层次,不提倡使用多重泛化,3.3.3 泛化约束,泛化约束

12、的表示,3.3.3 泛化约束,泛化约束的类型 不完全约束incomplete 完全约束complete 解体约束disjoint 重叠约束overlapping,3.4 依赖关系,表示两个或多个模型元素之间语义上的关系。 一种元素以某种形式依赖于另一种元素。 关联、实现和泛化都是依赖关系的特例。,依赖关系,1. 使用依赖(Usage):最常用 2. 抽象依赖(Abstraction) 3. 绑定依赖(Binding) 4. 授权依赖(Permission),实现关系,用于规格说明与实现之间的关系,通常用在接口以及实现该接口的类之间。,类关系图,3.5 构造类图模型,迭代进行以下步骤 问题域类建

13、模 GUI类建模 数据访问类建模,3.5 构造类图模型,首先对问题域类建模,步骤是: 一、确定可以在用例图中找到的类 二、为类图中的类添加必要的特性和操作 三、分析类之间的关系,问题域类建模,一、确定可以在用例图中找到的类 找出系统需求中的所有名词,作为类的候选者,形容词作为属性的线索,动词作为操作的候选者。 筛选类:去除冗余、无关、笼统名词、统一不一致的用法。 对剩下的名词适当分类(人、事、物) 通过检查名词是否存在相关的属性和行为,如果有,则应该建立相应的类。 抽象出共享功能,构成单独的类。 二、 分析类的属性和操作,例,需求(P256) 针对图书管理系统的需求,抽象出Borrower、

14、Librarian、Administrator 、Title、Book和Loan类, 抽象出管理员Manager类,Librarian和Administrator 作为Manager类的泛化 分析类的属性和操作,类的属性和操作1,类的属性和操作2,类的属性和操作3,1个Title对应1到多个Book 1个Book对应0到1个Loan 1个Borrower对应0到多个Loan Librarian和Administrator 是Manager类的泛化,三、分析类之间的关系,问题域类图1,问题域类图2,用户接口类(GUI)建模,用户接口类与用例图密切相关 图书管理员的接口类 系统管理员的接口类,图书

15、管理员的接口类,系统管理员的接口类,数据访问类建模,Manager、Borrower、Title、Book和Loan都是持久性类,需要存储到数据库,因此抽象出共享的访问数据库的Persistent类,实现对数据库的增删改查操作。 Manager、Borrower、Title、Book和Loan都是Persistent的泛化,数据访问类建模,GUI类与问题域类的关系,大多比较简单 借书、还书GUI类涉及较多类。,3.6 抽象类,抽象的操作,留给子类实现 操作全部是抽象的类称为抽象类 抽象类不能实例化 抽象操作和抽象类用斜体表示,3.7 接口,一组没有相应方法实现的操作,类似于抽象类,不能实例化

16、接口只有操作,没有属性 通过将接口与类相关联,实现该接口。,3.8 对象图,描述参与一个交互的各个对象在交互过程中某一时刻的状态。 可以被看作是类图在某一时刻的实例。 对于每个属性,对象都有特定的值,3.8 对象图,对象之间的关系称为链,从类图中的关联而来。 同一个类图所对应的对象图可以有多个,多个对象图合在一起共同展示了随着时间的推移,在不同时间点系统的对象状态。,类图和对象图的区别,3.9 包图,包是对模型元素分组管理的机制。 一个包可以包含一组类,还可以包含接口、用例、节点等模型元素。 一个元素只能由一个包拥有。 包划分的原则:低耦合、高内聚。 Java中称为包(Package) C+、C#中称为命名空间(Namespace),3.9.1 理解包图,包表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论