软件工程之面向对象
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程之面向对象讲义
软件工程之面向对象讲义...............................................................................................................1 1 面向对象的基本概念...............................................................................................................2 1.1 基本概念.......................................................................................................................2 1.2 对象...............................................................................................................................2 1.3 消息...............................................................................................................................2 1.4 类...................................................................................................................................2 1.5 继承...............................................................................................................................3 1.6 多态...............................................................................................................................3 1.7 动态绑定(dynamic binding)....................................................................................4 2 面向对象程序设计...................................................................................................................4 2.1 面向对象的好处...........................................................................................................4 2.2 面向对象程序设计语言...............................................................................................5 2.2.1 Smalltalk ...........................................................................................................5 2.2.2 Eiffel..................................................................................................................6 2.2.3 C++ ...................................................................................................................6 2.2.4 Java....................................................................................................................7 2.3 程序设计语言中的OOP机制.......................................................................................8 2.3.1 类的定义...........................................................................................................8 2.3.2 继承和类层次结构...........................................................................................8 2.3.3 对象、消息传递和方法...................................................................................9 2.3.4 对象自身引用...................................................................................................9 2.3.5 重置.................................................................................................................10 2.3.6 类属类.............................................................................................................10 2.3.7 无实例的类.....................................................................................................10 3 面向对象开发技术.................................................................................................................11 3.1 面向对象分析.............................................................................................................11 3.2 面向对象设计.............................................................................................................12 3.3 面向对象测试.............................................................................................................12 4 面向对象分析与设计方法.....................................................................................................12 4.1 OOA和OOD方法 .......................................................................................................13 4.1.1 OOA ................................................................................................................13 4.1.2 OOD(Object-Oriented Design) .......................................................................13 4.1.3 OMT方法........................................................................................................14 4.1.4 三个模型间的关系.........................................................................................15 4.2 OMT的步骤................................................................................................................16 4.3 UML概述....................................................................................................................17 4.3.1 UML基本概念................................................................................................17
4.3.2 4.3.3 4.3.4
UML--事物................................................................................................18 UML--关系................................................................................................19 UML--图....................................................................................................21
1 面向对象的基本概念
1.1 基本概念
Peter Coad 和 Edward Yourdon 提出面向对象方法的概念: 面向对象 = 对象(object) + 分类(classification) + 继承(inheritance) + 消息通信(communication with messages) 可以说,采用这四个概念开发的软件系统是面向对象的。
1.2 对象
定义: 对象是面向对象系统中的基本运行实体,现实世界中的对象。
对象 = 封装 [数据(属性)+ 操作(行为)] 表示: 对象 = 对象名 + 数据(属性)+ 操作(行为)
1.3 消息
消息:对象之间通信的一种构造。
消息传递:对象之间通信机制。
特点: 发送消息的对象不需要知道接收消息的对象如何对请求予以响应。
1.4 类
类是在对象之上的抽象,对象是类的具体化,是类的实例(instance) 。
类间的一般和特殊关系:即 “is-a”关系,特殊类是一般类的子类,一般类是特殊
•
类的父类。
在这种关系下形成一种层次的关联。
例如“汽车”类、 “轮船”类、 “飞机”类都是一种“交通工具”类。
1.5 继承
继承是父类和子类之间共享数据和方法的机制 这是类之间的一种关系,在定义和实现一个类的时 候,可以在一个已经存在的类的基础上来进行,把 这个已经存在的类所定义的内容作为自己的内容, 并加入若干新的内容。
分类 只从一个父类得到继承,叫做“单重继承” 。
一个子类有两个或更多个父类,则称为“多重继承” 。
图示 下图表示了父类 A 和它的子类 B 之间的继承关系。
1.6 多态
定义:不同的对象对同一消息产生不同结果的现象。
多态的实现受到继承的支持:利用类的继承的层次关系,把具有通用功能的消息存 放在高层次,而不同的实现这一功能的行为放在较低层次,在这些低层次上生成的对象 能够给通用消息以不同的响应。
多态的形式:Cardelli 和 Wegner 把它分为 4 类:
通用的 多态 特定的
参数的 包含的 过载的 强制的
包含多态 最常见的例子就是子类型化,即一个类型是另一个类型的子类型。
过载多态 同一个变量被用来表示不同的功能而通过上下文以决定一个名所代表的功能。
1.7 动态绑定(dynamic binding)
定义: 一个把过程调用和响应调用所需要执行的代码加以结合的过程。
• 静态绑定:编译时进行的绑定。
• 动态绑定:运行时进行的绑定。
--动态绑定和类的继承以及多态相联系的。
2 面向对象程序设计
面向对象程序设计:Object-Oriented Programming,OOP) OOP 的 实 质 : 选 用 一种 面 向 对 象程 序 设 计 语言 ( Object-Oriented Programming Language,OOPL) ,采用对象、类及其相关概念所进行的程序设计。
OOPL 支持: 被封装的对象 类和实例概念 类间的继承性 多态
2.1 面向对象的好处
1. 面向对象是程序设计新范型 程序设计范型的发展历程: • 过程程序设计→ • 模块化程序设计→ • 函数程序设计→
• •
逻辑程序设计→ 面向对象程序设计范型。
--面向对象程序设计范型:加入类和继承性,提高了抽象程度。
2. 面向对象的好处 在《Object-Oriented Methods Principles & Practice》中,Ian Graham 总结: • 封装技术:有助于建立安全的系统。
• 继承机制:保证了系统的灵活性和易扩充性。
• 重用技术:提高了产品质量和生产率之间的权衡。
• 面向对象:是一个能管理复杂性并增强伸缩性的工具。
• 面向对象的观点比自顶向下进行功能分解的分析及设计更自然合理。
• 实现从概念模型化到分析、设计、编码的无缝传递。
2.2 面向对象程序设计语言
在程序设计语言中引入面向对象概念: 20 世纪 60 年代后期, Kristen Nyagaard 和 Ole-Johan Dahl, 挪威计算中心, Simual 67 语言(基于模拟语言 Simula)第一次引入了类、协同程序(coroutines)和子类的概念。
第一个 OOPLs: Smalltalk,20 世纪 70 年代中期,Xerox 公司的 Palo Alto 研究中心(Xerox PARC)的 A1an Kay。
OOPLs 研究的起点:Simula 67 和 Smalltalk。
目前流行 OOPLs: • • • • Smalltalk Eiffel C++ Java
2.2.1 Smalltalk
20 世纪 70 年代中期,Xerox 公司的 Palo Alto 研究中心(Xerox PARC) ,A1an Kay 等人。
OOPLs 发展过程的里程碑:第一个 OOPLs 特点: 全面支持面向对象的概念 强调了对象概念的归一性:每个元素都是对象。
除对象外没有其他形式的数据,类也被看成是对象——类是元类的实例。
对象的唯一操作是发消息 引入了类、方法、实例等概念和术语 应用了单重继承和动态绑定
• • • • •
2.2.2 Eiffel
20 世纪 80 年代后期,ISE 公司,Bertrand Meyer 等人 Eiffel 全面支持面向对象的概念 主要特点: 全面的静态类型化、有大量的开发工具、支持多继承,支持多重继承:它的一些实现 策略(如同名冲突处理、异常处理等)已经对后来的 OOPLs 的设计和实现产生了影响。
2.2.3 C++
1980 年, AT&T 的 Bell 实验室, C 语言的一个向上兼容的扩充语言。
“比 Smalltalk 是 更接近于机器、比 C 语言更接近于问题”的 OOPL。
主要特点: 1. 支持多范型:既支持面向对象的程序设计,也支持面向过程的程序设计。
2. 支持基本的面向对象概念:对象、类、方法、消息、子类和继承性,同时支持静态 类型和动态类型。
3. 支持多继承,并且通过使用 try/throw/catch 模式提供了一个完整的异常处理机制。
4. 不提供自动的无用存储单元收集。
2.2.4 Java
Java 语言起源于 Oak 语言 主要特点: Java 编译成伪代码,需要虚拟机来对其进行解释。
虚拟机在几乎每一种平台 上都可以运行,提供了通用的可移植性。
区分类的概念和接口(Interface)的概念,并试图通过只允许接口的多继承 来克服多继承的危险。
Java 的异常处理机制更加严密,通过声明轻型线程来处理并发性,这些线程 通过副作用和同步协议进行通信。
Java Beans 组件是类和其所需资源的集合。
Java 有自己的对象请求代理技术:RMI(远程方法调用) 。
• • • • •
2.3 程序设计语言中的 OOP 机制
• • • • • • •
OOP 概念一般是通过 OOPLs 中特定的语言机制来体现的。
本节用 C++语言、从程 序设计的角度进一步讨论这些概念。
OOP 现在已经扩展到系统分析和软件设计的范畴,出现了面向对象分析和面向对象 设计的概念。
知识要点 类 继承和类层次结构 对象、消息传递和方法 对象自身引用 重置 类属类 无实例的类
2.3.1 类的定义
类及其实例的特征 同一个类的不同实例具有如下特征: 相同的数据结构 承受的是同一方法集合所定义的操作,因而具有规律相同的行为; 同一个类的不同实例可以持有不同的值, 因而可以具有不同的状态; 实例的初始状态(初值)可以在实例化时确定。
•
•
2.3.2 继承和类层次结构
【例】 经理类的定义 class Manager : public Employee { int Level; public: void ChangeLevel(int n); Manager(char *name, int age, int level); ~Manager(); }; 知识要点 • 类的继承特性 • 类的实例化 (1)类的继承特性 OOPLs 中的继承机制体现了一条重要的面向对象程序设计原则:开发人员在构造程
序时不必从零开始,而只需对差别进行程序设计。
支持继承也是 OOPLs 与传统程序设计语言在语言机制方面最根本的区别。
孤立的类只能描述实体集合的特征同一性,而客观世界中实体集合的划分通常还要 考虑实体特征方面有关联的相似性。
在 OOP 中使用继承机制解决这一问题。
在 OOPLs 中,继承一般通过定义类之间的关系来体现。
在一个面向对象系统中, 子类与父类之间的继承关系构成了这个系统的类层次结构, 可以用树(对应于单继承)或格(对应于多继承)这样的图来描述。
(2)类的实例化 类的实例化过程是一种实例的合成过程, 而不仅仅是根据单个类型进行的空间分配、 初始化和联编。
知道编译程序进行这种合成的,就是类层次结构。
子类的实例生成方法: • S1:在类层次结构中从该子类沿继承路径上溯至它的一个基类; • S2:自顶向下地执行该子类所有父类地实例生成方法; • S3:执行该子类实例生成方法的函数体。
子类的实例消除方法: • S1:执行该子类实例消除方法的函数体; • S2:沿继承路径自底向上地执行该子类所有父类的实例消除方法。
2.3.3 对象、消息传递和方法
类与对象:类先于对象构造而成,对象是类的实例。
对象与一般数据类型之间的本质区别: 对象之间通过消息传递方式进行通信。
消息定义: 对于一个类来说, 它关于方法界面的定义规定了实例的消息传递协议, 而它本身则决 定了消息传递的合法范围。
消息传递模型: 对象是通信实体,它们既可以接收、也可以拒绝外界发来的消息。
一般情况下,对象 接收它能够识别的消息,拒绝它不能识别的消息。
对于一个对象而言,任何外部的代码都不 能以任何不可预知或事先不允许的方式与这个对象进行交互。
消息内容:消息至少包含对象名字和消息名字。
2.3.4 对象自身引用
• • •
对象自身引用(self-reference)是 OOPLs 中的一种特有结构。
这种结构名称: C++、Java 中:称为 this, Smalltalk-80、Object-C:称为 self。
对象自身引用的值和类型的作用: 值:使得方法体中引用的成员名与特定的对象相关;
•
类型:决定了方法体被实际共享的范围。
对象自身引用机制使得从类的角度来设计同类型对象的行为特征,从而使得方法在 一个类及其子类的范围内具有共性。
在程序运行过程中,消息传递机制和对象自身引用 将方法与特定的对象动态地联系在一起,使得方法对具体的对象具有个性。
2.3.5 重置
重置(overriding)的基本思想 通过一种动态绑定机制的支持,使得子类在继承父类界面定义的前提下,用适合于自 己要求的实现去置换父类中的相应实现。
OOPLs 中的重置机制语法
2.3.6 类属类
类属是一种参数多态机制。
重置和类属都是一种多态机制。
类属类是类的模板: • 类是对象的特性抽象,类属类是类的特性抽象。
• 特征: 类属类强调类的成员特征中与具体类型无关的部分, 而与具体类型相关的部分则用变 元来表示。
这就使得对类的集合也可以按照特性的相似性再次进行划分。
类属类的一个重要作用是支持类库的建设。
Java 语言不支持参数多态。
在 C++语言中,类属的专门术语:template。
2.3.7 无实例的类
类是对象的模板,对象是类的实例。
无实例类的情形: 如果类之间没有定义继承关系,则 N,否则该类是冗余的。
如果存在继承关系,那么在类层次结构的较高层次上可以存在无实例的类。
在 C++和 Java 语言中,抽象类是无实例的类。
• •
3 面向对象开发技术
3.1 面向对象分析
基本概念 面向对象分析的基础是软件系统结构。
问题术语:对象、分类法和层次性。
面向对象分析:Object-Oriented Analysis,简称 OOA。
OOA 的目的:理解应用问题,确定系统的功能、性能要求。
面向对象分析法与功能/数据分析法之间的差别:
• • • • •
• •
• •
面向对象分析包含 5 个活动: 1 认定对象:[下接] 2 组织对象: 对象抽象类通过相关类的继承构造类层次。
分析过程是一种迭代表征过程。
3 描述对象间的相互作用: 描述出各对象在应用系统中的关系: 一个对象是另一个对象的一部分(is-a 关系) ; 一个对象与其他对象间的通信关系等。
4 定义对象的操作:[下接] 5 定义对象的内部信息。
认定对象 在应用领域中,按自然存在的实体确立对象。
困难在于寻找(选择)系统关心的实质性对象,它是系统稳定性的基础。
例如在 银行应用系统中,实质性对象应包含客户账务、清算等,而门卫值班表不是实质性 对象,甚至可不包含在该系统中。
基于对象的操作 对象操作分类: 简单操作:如创建、增加、删除等从对象直接标识的; 复杂操作:如将几个对象的信息连接起来。
当确定了对象的操作后,再定义对象的内部 对象内部定义包括其内部数据信息、 信息存储方法, 继承关系以及可 能生成的实例数等属性。
3.2 面向对象设计
面向对象设计(Object-Oriented Design,OOD) • 含义:设计分析模型和实现相应源代码。
• 过程:先将概念模型生成的分析模型装入到相应的执行环境中,再做适当修 改。
• 实质:对象标识期间的目标是分析对象,设计过程也是发现对象的过程,我 们称之为再处理。
因此,必须有: 线性转换规则(分析模型→设计模型→程序设计语言) 。
• 实现方法:对象可以用预先开发的源代码(即构件 Component,是功能和数 据的组装)实现。
• 程序设计风格:面向对象系统的开发需要面向对象的程序设计风格,这与 OOPL 无直接关系。
3.3 面向对象测试
面向对象系统测试 用面向对象方法开发的系统测试与其他方法开发的系统测试没有什么不同。
单元测试:比传统系统的单元大。
综合测试:由底向上的测试。
继承性层次的测试技术:回归测试和自动测试 为了弄清发送给自身的信息系列,在类层次中需要从上到下、从下 到上的工作,这种测试称为正向、逆向测试法。
• • • •
4 面向对象分析与设计方法
• • 结构化分析与面向对象分析的区别: 结构化分析:对一个系统的功能构件进行分解,将一种更易于管理、更加确 定的方法引入系统分析阶段。
面向对象分析:强调对对象的特征和行为的定义。
四种面向对象方法:
• • • •
Peter Coad 和 Edward Yourdon 的 OOA 和 OOD 方法 Booch 的 OOD 方法 OMT(Object Modeling Technique,面向对象建模技术)方法 UML(Unified Modeling Language,统一建模语言)
4.1 OOA 和 OOD 方法
4.1.1 OOA
• •
• •
OOA:Object-Oriented Analysis,简称 OOA。
OOA 模型由下列五个层次和五个活动组成。
五个层次:主题层,对象类层,结构层,属性层,服务层。
五个活动:标识对象类,标识结构,定义主题,定义属性,定义服务。
五个层次并不是构成软件系统的层次,是表示和复审的五个方面。
五个活动不是必须顺序进行的。
对象类之间的结构分类 分类结构:一般与特殊关系,是一种“is a”关系。
组装结构:整体与部分关系,是一种“has a”的关系。
主题:提供了控制读者在一段时间内考虑和理解模型的范围的一种机制,其目的是 减少读者理解系统的复杂程度,在 OOA 中将与某一主题有关的对象用主题框围起来。
实例连接。
实例连接是一个实例对象与另一个实例对象间的映射关系(或者说是一 种简单的对应关系) 例如一个公司有多个职员, 。
一个职员只能在一家公司工作, 那么“公 司”类的实例与“职员”类的实例间就有 1 对多的实例连接关系。
消息连接。
当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。
4.1.2 OOD(Object-Oriented Design)
OOA 中的五个层次和五个活动继续贯穿在 OOD 过程中。
OOD 模型由四个部分和四个活动组成如图所示。
四个部分:人机交互部件、问题域部件、任务管理部件、数据管理部件。
四个活动: 设计问题域部件:OOA 的结果恰好就是 OOD 的问题域部件,分析的结果在 OOD 中可以被改动或增补,但基于问题域的总体组织框架是长时间稳定的。
设计人机交互部件: 人机交互部件在上述结果中加入人机交互的设计和交互 的细节,包括窗口和输出报告的设计。
可以用原型来帮助实际交互机制的开发和选择。
设计任务管理部件:这部分主要是识别事件驱动任务,识别时钟驱动任务, 识别优先任务和关键任务,识别协调者,审查每个任务并定义每个任务。
设计数据管理部件: 数据管理部件提供了在数据管理系统中存储和检索对象 的基本结构, 其目的是隔离数据管理方案(如普通文件、 关系数据库、 面向对象数据库等)
• • • • •
对其他部分的影响。
4.1.3 OMT 方法
对象建模技术(Object Modeling Technique,OMT)是由 J.Rumbaugh 等人提出的。
OMT 定义了描述系统的三种模型:对象棋型、动态模型和功能模型。
OMT 方法有四个步骤:分析、系统设计、对象设计和实现。
0MT 方法的每一步都使用这三种模型,通过每一步对三种模型不断地精化和扩充。
知识要点 • OMT 的三种模型 • OMT 的实现步骤 对象模型、动态模型和功能模型 对象模型: 动态模型 • 动态模型描述与时间和操作顺序有关的系统特征——激发事件、事件序列、 确定事件先后关系以及事件和状态的组织。
• 动态模型表示瞬时的、行为上的、系统的“控制”特征。
• 用状态图来表示,显示对象所允许的状态和事件的顺序。
功能模型 • 功能模型描述与值的变换有关的系统特征——功能、 映射、 约束和函数依赖。
• 用数据流图来表示。
(1) 对象模型--基本概念 定义:描述系统中对象的静态结构、对象之间的关系、对象的属性、对象的操作。
特点:对象模型表示静态的、结构上的、系统的“数据”特征。
关系:对象模型为动态模型和功能模型提供了基本的框架。
表示:用包含对象和类的对象图来表示。
基本概念: OMT 的对象模型中除了对象、类、继承外,还有一些其他的概念,如链、关联、泛 化、聚集、模块等。
(2)对象模型--链和关联 链和关联表示对象或类之间的连接关系。
• 链:表示实例对象间的物理或概念上的连接。
• 关联:描述具有公共结构和公共语义的一组链,链是关联的实例。
链可以有 属性,称为链属性,表示关联中链的性质。
链、关联、链属性的一个实例
(3)对象模型--泛化和聚集 泛化和聚集 • 含义:泛化和聚集表示对象类之间的结构关系。
• 泛化:即一般与特殊的关系。
被细化的类称为父类,对应的称为子类,子类 可以继承父类的性质。
• 聚集:是一种整体与部分的关系。
泛化和聚集的实例
4.1.4 三个模型间的关系
三个对象模型小结
三个对象模型间的关系 与对象模型的关系: • 动态模型: 展示了每个对象的状态以及它接收事件和改变状态时所执行的操 作; • 功能模型:展示了类上的操作和每个操作的变量,因此它也表示了类之间的 “供应者—客户”关系。
与动态模型的关系: • 对象模型:展示了是谁改变了状态和承受了操作; • 功能模型:展示了动态模型中未定义的不可分解的动作和活动的定义。
与功能模型的关系: • 对象模型:展示了功能模型中的动作者、数据存储和流的结构; • 动态模型:展示了执行加工的顺序。
4.2 OMT 的步骤
(1)OMT 的步骤--分析 分析的目的:建立可理解的现实世界模型。
分析系统的三个本质特征: • 对象类及它们之间的关系 • 动态的控制流 • 受约束的数据的函数变换 明确系统做什么,而不关心如何做: • 模型中的对象应该是应用领域中的概念, 而不是诸如数据结构之类的计算机 实现中的概念; • 分析模型不应包含任何与实现有关的考虑; • 一个好的模型应该被应用领域专家而不是被程序员所理解和评价。
(2)OMT 的步骤--系统设计 系统设计阶段任务: 确定整个系统的体系结构,形成求解问题和建立解答的高层次策略。
决策包括: • 将系统分解成子系统, • 标识问题中固有的并发性, • 将子系统分配到处理器和任务,
• 选择数据存储管理的手段, • 处理对全局资源的访问, • 选择软件中控制的实现, • 处理边界条件, • 设置折衷的优先级等。
(3)OMT 的步骤--对象设计 对象设计阶段的任务: • 在分析的基础上,建立基于分析模型的设计模型,并考虑实现的细节。
对象设计的焦点: • 实现每个类的数据结构与算法。
设计步骤: • 获取类操作; • 设计实现类操作的算法; • 模块化:调整类结构,增加继承,设计关联,确定对象表示,将类和关联包 装到模块中。
(4)OMT 的步骤--实现 将对象设计阶段开发的对象类及其关系转换成特定的程序设计语言、数据库或硬件 的实现。
4.3 UML 概述
4.3.1 UML 基本概念
• • • • • • • • • • • •
UML(Unified Modeling Language )是面向对象软件的标准化建模语言。
特点: 简单、统一; 能够表达软件设计中的动态和静态信息; 可视化建模语言事实上的工业标准。
UML 建模的应用范围: 企业信息系统 基于 Web 的分布式应用 实时嵌入式系统等 UML 由三个要素构成: UML 的基本构造块; 支配这些构造块如何放置在一起的规则; 运用与整个语言的一些公共机制。
UML 的词汇表包含三种构造块: 事物:对模型中最具有代表性的成分的抽象; 关系:把事物结合在一起; 图:聚集了相关的事物。
4.3.2 UML--事物
(1)结构事物 结构事物(structural thing)是 UML 模型中的名词。
它们通常是模型的静态部分, 描述概念或物理元素。
结构事物包括: • 类(class) • 接口(interface) • 协作(collaboration) • 用例(use case) • 主动类(active class) • 构件(component) • 节点(node)
(2)行为事物 行为事物(behavior thing)是 UML 模型的动态部分。
它们是模型中的动词,描述了 跨越时间和空间的行为。
两类主要的行为事物: • 交互(interaction) • 状态机(state machine) ①行为事物--交互 定义:交互由在特定语境中共同完成一定任务的一组对象之间交换的消息组成。
应用:一个对象群体的行为或单个操作的行为可以用一个交互来描述。
交互涉及的其他元素:包括消息、动作序列(由一个消息所引起的行为)和链(对 象间的连接) 。
图表示:把一个消息表示为一条有向直线,通常在表示消息的线段上总有操作名。
②行为事物--状态机
定义:状态机描述了一个对象或一个交互在生命期内响应事件所经历的状态序列。
应用:单个类或一组类之间的协作行为可以用状态机来描述。
状态机涉及的其他元素:状态、转换(从一个状态到另一个状态的流) 、事件(触发 转换的事物)和活动(对一个转换的响应)等。
图表示:把状态表示为一个圆角矩形,通常在圆角矩形中含有状态的名称及其子状 态 (3)分组事物 分组事物(grouping thing)是 UML 模型的组织部分。
它们是一些由模型分解成的“盒 子”。
在所有的分组事物中,最主要的分组事物是包(package) 。
包是把元素组织成组的机 制,这种机制具有多种用途。
结构事物、行为事物甚至其他分组事物都可以放进包内。
包不 象构件(仅在运行时存在) ,它纯粹是概念上的(即它仅在开发时存在) 。
包的图形化表示如 下图所示。
(4)注释事物 注释事物(annotational thing)是 UML 模型的解释部分。
用来描述、说明和标注模 型的任何元素。
注解(note) • 是一种主要的注释事物。
• 注解是一个依附于一个元素或者一组元素之上, 对它进行约束或解释的简单 符号。
• 注解的图形化表示:如下图所示。
4.3.3 UML--关系
UML 中有四种关系: • 依赖 • 关联 • 泛化 • 实现 关系特征: • 这四种关系是 UML 模型中可以包含的基本关系事物。
• 它们也有变体。
例如,依赖的变体有精化、跟踪、包含和延伸。
。