ch11_UML包图及对象图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
绘制包图的“最小化系统间的耦合关系”的原则: 最大限度减少包之间的依赖,包封装时,避免包之间的循环依 赖;最小化每个包的public、protected元素的个数,最大化每个包 中private元素的个数。
11.5 创建包图
1 包的划分方法
(1)识别底层包 把语义上接近并倾向于一起变化的元素放在一个包中。例如,把具有泛化 关系的一组类放在一个包中。把独立的模型元素暂放在一个包中。 (2)合并包 如果底层包数量过多,则合并为高层包。若底层包之间在概念上接近或 具有较强的相关性,从作用上属于某项大的功能,在图上有较强的耦合度, 或在分布上处于同一台处理机,则考虑把它们合并。
11.3 包图中的关系
3) 《access》关系 如果只想使用提供者包中的元素,而不想将两个包合 并,则应使用该关系。在客户包中必须使用路径名,才能 访问提供者包中的所有公共元素。
4)《trace》关系: 想表示一个包到另一个包的历史发展,则需要使用《trace》关 系来表示。
2 泛化关系 包间的泛化关系类似于类间的泛化关系,使用一般包的地方,可以用特 殊包代替。 在系统设计中,对某一个特定的功能,有多种实现方法。例如,实现多 数据库支持;实现B/S和C/S双界面。这时就需要定义一些高层次的“抽象包” 和实现高层次功能的“实现包”。
在一个包中可以拥有各种元素,包括类、接口、构件、节点、协作、用 例,甚至是其他包或图。这是一种组成关系,意味着元素是在这个包中声明 的,一个元素只能属于一个包。 每一个包就意味着一个独立的命名空间,两个不同的包,可以具有相 同的元素名,但由于所位于的包名不同,因此其全名仍然是不同的。
在包中表示拥有的元素时,有两种方法:一是在第二栏中列出所属元素 名,二是在第二栏中画出所属元素的图形表示。
11.3 包图中的关系
11.4 阅读包图
阅读包图的方法: 1.了解每个包的语义,及其它包含的 元素语义。 2.理解包间的关系。 3.找到依赖关系复杂的包,从最复杂 的包开始阅读,然后依次是简单的包。
11.4 阅读包图
阅读包图
11.5 创建包图
绘制包图的基本过程主要有三个步骤: (1)寻找包; (2)确定包之间的关系; (3)标出包内元素的可见性。
子系统(subsystem) 系统(system)
11.3 包图中的关系
包图中的关系包括依赖关系和泛化关系。
1 依赖关系 依赖关系又可以分为4种。在依赖关系中 ,我们把箭尾端的包称为客户包, 把箭头端的包称为提供者包。 1)《use》关系 《use》关系是一种默认的依赖关系 ,说明客户包(箭尾端的包)中的元 素以某种方式使用提供者包(箭头端的包)的公共元素,也就是说客户包依 赖于提供者包。如果没有指明依赖类型,则默认为《use》关系。 2) 《import》关系:允许一个包中的元素可以单向访问另一包中的元素 《import》关系是最普遍的包依赖类型,说明提供者包的命名空间将被添 加到客户包的命名空间中,客户包中的元素也能够访问提供者包的所有公共元 素。 《import》关系使命名空间合并,当提供者包中的元素具有与客户包中的 元素相同的名称时,将会导致命名空间的冲突。这也意味着,当客户包的元素 引用提供者包的元素时,将无需使用全称,只需使用元素名称即可。
包图的改进
小结
• 解释了几种常见的包图表示法,说明了包的可见 性、依赖关系、泛化等概念;概要地说明了五种包 的构造型。 • 说明如何寻找包、确定包之间的依赖关系,从而 绘制了出一个表明软件体系结构的包图。 • 简要介绍了用包图表示系统体系结构的建模方法。
LOGO
第11讲 对象图
11.1 什么是对象 11.2 对象图的概念
11.7 实例——图书馆管理系统的包图
• 使用Rational Rose绘制包图的步骤 • 图书馆管理系统的包图
11.7 使用Rational Rose绘制包图的步骤
• • • • • 1. 2. 3. 4. 5. 创建包 修改包的属性 增加包的信息 添加包之间的输入依赖 删除包
11.7 图书馆管理系统的包图
数据访问层是程 序中和数据库进 行交互的层
数据访问层
11.1 包图的概念
对复杂系统进行建模时,经常需要 处理大量的类、接口、组件、节点和图,有 必要将这些元素进行分组,就是把语义相近 并倾向于一起变化的元素组织起来加入同一 包,这样方便理解和处理整个模型,而且也 便于轻松地控制这些元素的可见性,使一些 元素在包外可见,一些元素隐藏在包内。
标识:为了将一个对象与其它所有对象区分开来,我们通常会给它起一 个“标识”。
11.1 什么是对象
3.对象与类的区别
(1)对象是一个存在于时间和空间中的具体实体,而类是一个模型, 该模型抽象出对象的“本质”:一组公共属性和一组公共方法。 (2)类是静态的,对象是动态的;类是一般化,对象是个性化;类 是定义,对象是实例;类是抽象、对象是具体 。
11.3 包的导入
当包A将包B导入时,包A中的元素可以直接访问包B中 的元素,而不必在每次使用时用完整的路径名。
//using space1; //using space2; namespace space3 //第三个命名空间 { …… space1.DownCount dc = new space1.DownCount(10); space2.UpCount uc = new space2.UpCount(10); …… } using space1; using space2; namespace space3 //第三个命名空间 { …… DownCount dc = new DownCount(10); UpCount uc = new UpCount(10); …… }
若B继承了A,则B中的任何元素可以访问A中可见性是#的 元素
可见性是-的元素,只能被同一个包中的其它元素访问
Public(+): Private(-):
可在其他任何包中使用 只能在该包中使用
Protected(#): 可以在该包和该包的子包中使用
11.2 包的表示
包内元素的可见性,标识了外部元素访问包内元素的权限。
11.2 对象图的概念
1.对象图的定义
对象图是描述对象及其关系的图。对象图可以看作类图在某一时刻 的实例。几乎使用与类图完全相同的标识。他们的不同点在于,对象图 显示类的多个对象实例,而不是实际的类。由于对象存在生命周期,因 此对象图只能在系统某一时间段存在。
11.2 包的表示
3. 包的可见性 像类中的属性和方法一样,包中的元素也有可见性, 包内元素的可见性控制了包外部元素访问包内部元素的权 限。
可见性与访问权限(假设包B中的元素访问包A中的元素)
包A中元素的可见 性
+
包B中元素的访问权限
若B引用了A,则B中的任何元素可以访问A中可见性是+的 元素
#
-
1包图的概念112包的表示113包图中的关系113包图中的关系114阅读包图115面层用户界面层系统的三层结构先分层再细分成包的方式用户界面代表与用户进行交互的界面业务逻辑层数据访问层业务逻辑层用来处理系统的业务流程数据访问层是程序中和数据库进行交互的层111包图的概念对复杂系统进行建模时经常需要处理大量的类接口组件节点和图有必要将这些元素进行分组就是把语义相近并倾向于一起变化的元素组织起来加入同一包这样方便理解和处理整个模型而且也便于轻松地控制这些元素的可见性使一些元素在包外可见一些元素隐藏在包内
11.1 包图的概念
1.包图 包图是描述包与包之间关系的图。包图可以包括注 释、约束。包间的关系有依赖关系和泛化关系。
包图
11.1 包图的概念
2. 包图的作用 1)对语义上相关的元素进行分组。 2)提供配置管理单元。 3)在设计时,提供并行工作的单元。 4)提供封装的命名空间。
3. 包图中的元素 在包中可以拥有各种其他元素,包括类、接口、构件、节点、协 作、用例,甚至是其它子包或图 。一个元素只能属于一个包。
嵌套包
包的表示法
11.2 包的表示
1. 包的名称
每个包必须有一个与其他包相区别的名称。标识包名称的格式有两种:简 单名和全名。 简单名:仅包含一个包的简单名称; 全名:用该包的外围包的名字作为前缀,加上包本身的名字。
UI
System:Web:UI
简单名
含 路 径 名 (全名)
11.2 包的表示
2. 包的元素
良好包结构的关键是包内高内聚,包间低耦合。
11.5 创建包图
2 消除循环包依赖
应该尽量避免包模型中的循环依赖。如果包A以某种方式依赖包B, 并且包B以某种方式依赖包A,就应该合并这两个包,这是消除循环依 赖非常有效的方法。但是经常起作用的、更好的方法是,努力分解公 共元素成为第三个包C。重新计算依赖关系,以消除循环依赖。 很多建模工具允许自动验证包间依赖。如果一个包中的元素访问 另一个包中的元素,但两个包间却没有依赖关系,那么工具产生访问 冲突列表。
11.6 对体系结构视图建模
① ② ③ ④ ⑤ ⑥ 找出问题语境中一组有意义的体系结构视图。 找出对于可视化、详述、构造和文档化每个视图的语义 来说充分必要的元素(和图),并将它们放到合适的包 中。 如有必要,将这些元素进一步地组合到它们自己的包中。 不同视图中的元素之间通常存在依赖关系。 体系结构是一个软件系统的核心逻辑结构,常用的体系 结构模式包括分层、MVC、管道、黑板、微内核等,而 在应用软件中,分层和MVC是最常见的两种结构。 在分层的体系结构中,最常见的划分是表示层 (present)、逻辑层(business或domain)、数据层 (包括数据访问、日记等)。如果采用分层体系结构, 我们就把每一层用一个包来表示。
LOGO
第11讲 包图及对象图
在windows中文件夹有什么作用? •对文件进行分类管理 •避免了命名冲突
一、包的作用
一个程序往往包含了很多个类,那么如何管理这些类就 成了一个需要解决的问题(分组机制) 这些类可能由不同的程序员进行建立,当把这些类合并 成一个大系统时,往往会产生命名冲突(类名冲突) 包的两个作用:分组机制,命名空间。 Java: 包(package)
C#: 命名空间(namespace)
C#中定义命名空间: namespace 命名空间名 { …… }
C#中引入命名空间: using 命名空间名;
using System; using System.Collections.Generic; using System.Text;
namespace scoreA { class A { …… } class B { …… } class C { …… } }
11.3 对象的表示
11.4 链接的表示 11.5 阅读对象图的方法
11.1 什么是对象
1.对象
对象是一个类的实例,是具有具体属性值的一个具体事物。所有的对象 都有属性,例如汽车有厂家、型号、颜色和价格。狗有种类、年龄、颜色和 喜欢的玩具。
2.对象的特点:
状态:对象在某一时刻,对象所有属性值的集合。 行为:没有一个对象是孤立存在的,对象可以被操作,也可以操作别的 对象。而行为就是一个对象根据它的状态改变和消息传送所采取 的行动和所做出的反应 。
引入包
定义包
11 .1 包图的概念 11.2 包的表示 11.3 包图中的关系 11.4 阅读包图 11.5 创建包图 11.6 包图建模
11.1 包图的概念
模型的组织结构
先分层再细分成包的方式 系统的三层结构
用户界面层
用户界面代表 与用户进行交 互的界面
业务逻辑层用 来处理系统的 业务流程
业务逻辑层
11.5 创建包图
A B
合并
分解
C
A,B包合并
A
B
消除循环依赖的示例
11.6 包图建模技术
• 对成组的元素建模 • 对体系结构视图建模
11.6 对成组的元素建模
① 浏览特定体系结构视图中的建模元素,找出由在 概念和语义上相互接近的元素所定义的组块。 ② 把每一个这样的组块放到一个包中。 ③ 对每一个包找出可以在包外访问的元素,将这些 元素标记为公有的,把其他的元素标记为受保护 的或私有的。如果不确定时,就隐藏该元素。 ④ 确定包与包之间的依赖关系,特别是引入依赖。 ⑤ 确定包与包之间的泛化关系,以及包的多重性和 重载。
包元素的可见性
11.2 包的构造型
构造型 虚包(façade) 用途 描述一个只引用其他包内元素的包
框架(framework) 桩(stub)
描述一个主要由模式组成的包 描述一个作为另一个包的公共内容代理 的包 描述一个表示正在建模中的整个系统的 一个独立部分的包 描述一个表示正在建模中的整个系统的 包
11.2 包的表示
UML中,用文件夹符号来表示一个包,它包含2栏。
包名放在第二栏 包名放在第一栏
PageName PageName ClassName-1 ClassName-2 ….. 第二栏列出 包含的类名
PageName 类名
Rose常用表示法 System:Web
UI class
在第二栏画出所 包含的类图形表示
相关文档
最新文档