1 / 121

第 6 章

第 6 章. 面向对象的需求分析. 第6章 面向对象的需求分析. 6.1 面向对象与面向过程的比较 6.2 面向对象的概念 6.3 面向对象的分析过程 6.4 UML概述 6.5 基于 UML 的需求分析. 6.1 面向对象与面向过程的比较. 面向对象的 发展 结构化 方法 存在问题. 面向对象方法与技术研究的发展 起源于20世纪60年代中期; 出发点和基本原则是 使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,这样更好的把客观世界的问题空间映射到软件的解空间

star
Download Presentation

第 6 章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 6 章 面向对象的需求分析

  2. 第6章 面向对象的需求分析 6.1 面向对象与面向过程的比较 6.2 面向对象的概念 6.3 面向对象的分析过程 6.4 UML概述 6.5 基于UML的需求分析

  3. 6.1面向对象与面向过程的比较 面向对象的发展 结构化方法存在问题 面向对象方法与技术研究的发展 起源于20世纪60年代中期; 出发点和基本原则是使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,这样更好的把客观世界的问题空间映射到软件的解空间 仿真语言 simula 67 20世纪80年代初期:smalltalk语言是面向对象技术发展的重要里程碑 • 它是一种新兴的程序设计方法,其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。 • 现在面向对象方法已深入到计算机领域的几乎所有分支,远远超出了程序设计的语言和编程技术的范畴。 • 面向对象方法是对软件生命周期的各个阶段(包括分析、设计、编程、测试和维护),以及它所涉及的各个领域(如人机界面、数据库、软件复用、形式化方法、CASE工具等)已形成或正在形成面向对象的理论和技术体系 • OOA、OOD、OOP、OOSE、OOOS、OODBMS ……

  4. 需求分析 面向对象的发展 结构化方法存在问题 • 通常的需求分析具有两方面的意义: 1. 在认识事物方面:具有分析、认识问题域的方法、原则和策略,使开发人员对问题域的理解比不遵循软件工程方法时更为全面、深刻和有效。 2. 在描述事物方面:具有较完整的体系和文档规范,这比自然语言更为准确,更利于后期开发。 • 结构化的软件工程在需求分析这两方面存在不足: 1. 它对问题描述不是以问题域中固有的事物作为基本单位。 2. 它是在全局范围内,以功能、数据或数据流为中心来进行分析。所以这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合,因而容易隐蔽一些对问题理解的偏差。

  5. 面向对象分析与结构化分析的根本区别 传统的软件过程学 ——过程设计 1)结构化分析的实体关系图,关注实体的属性和相互间的关系;而面向对象的分析,除此之外还有非常主要的一点,就是关注实体的行为。 2)结构化分析的数据流图,将数据和加工处理分开;而面向对象的分析是将数据实体和他们的处理动作视为不可分割的整体来考虑的。 3)结构化分析建造系统的元素是基于过程的功能,或者加工处理;而面向对象分析建造系统的基本元素是封装了操作的对象类。 问题域 需求分析 分析与设计鸿沟 自然语言 总体设计 详细设计 编程语言 编程 测试 计算机 传统的软件工程方法

  6. 编程、测试和维护 面向对象的发展 结构化方法存在问题 • 编程和测试 1. 分析方法的缺陷很容易产生对问题域的错误理解; 2. 分析与设计的鸿沟容易造成设计人员对分析结果的错误转换,导致在编程的过程中,程序员往往需要对分析员已经认识过的问题域重新进行认识,并可能产生与分析员不同的理解。 • 软件维护 1. 对使用中发现的错误进行修改。由于结构化程序强调以功能为模块划分的标准,模块功能单一,导致修改时,会产生新的问题。 2. 对因需求发生变化而进行修改。由于程序不能映射问题域以及各个阶段文档不能对应,每一步追溯或修改都存在许多理解障碍。

  7. 6.2 面向对象的概念 • 面向对象方法的基本思想是从现实世界中客观存在的事物出发构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。 • Coad和Yourdon给出定义:“面向对象=对象+类+继承+通信”。 • 如果一个软件系统是使用这样 4 个概念设计和实现的,则我们认为这个软件系统是面向对象的。 问题域 • 面向对象软件工程方法是面向对象方法在软件工程领域的全面运用。它包括 面向对象分析 面向对象设计 面向对象编程 面向对象测试 面向对象的软件维护 OOA 自然语言 OOD OOP 面向对象的编程语言 OOT 计算机 面向对象的软件工程方法

  8. 面向对象分析领域分析 领域分析----创建可以广泛地用于整个应用领域范畴的可复用类(构件) 领域分析的输入输出 领域知识源 领域 分析 技术文件 提取类 航空 领域 分析 模型 已有应用 复用标准 银行 客户评定 模型 专家建议 电子设备 语言 需求 多媒体视频 领域分析活动: •定义被调查的领域,相关的设计、规约、代码、政策、标准、规程等项 •对领域中提取的项,划分种类并提取模式,命名,并且分层。 •收集领域中应用的代表性样本 •分析每个样本中的应用,标识对象、说明理由、定义适应性、估算复用率等 •开发对象分析模型,作为设计和构造类的基础

  9. 面向对象设计 Object Oriented Design,OOD • OOA的职责:OOA针对问题域运用OO方法,建立一反映问题域的OOA模型,而不考虑与系统实现有关的因素(包括编程语言、图形用户界面、数据库等),从而使OOA独立于具体的实现。 • OOD的职责:针对系统的一个具体实现运用OO方法。其中包括两方面工作,一是把OOA模型直接搬到OOD(不经过转换,仅作某些必要的修改和调整),作为OOD的一个部分;二是针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分,这些部分与OOA采用相同的表示法和模型结构。

  10. 面向对象编程:Object Oriented Program,OOP • 面向对象编程(OOP)又称作面向对象实现(OOI),OOP工作就是用同一种面向对象编程语言把OOD模型中的每个成分,用面向对象程序设计语言实现。 面向对象测试:Object Oriented Test,OOT • 面向对象测试(OOT):对于用OO技术开发的软件,在测试过程中,运用OO技术进行以对象概念为中心的软件测试。 • 在用OOP编写的程序中,对象的封装性,把对象的静态和动态特征组合在一起,使对象成为一个独立的程序单位,从而大大减少了错误的影响范围。 • OOT以对象的类作为基本测试单位,查错范围: 1. 类定义之内的属性和服务。 2. 类的继承关系所产生的不同方法的测试。对基类测试完成之后,派生类的测试重点只是那些新定义的属性和服务。

  11. 面向对象维护 Object Oriented Maintenance • 面向对象软件工程方法为改进软件维护提供了有效的途径。 1. 程序与问题域一致,各阶段表示一致,从而降低了理解的难度。 2. 无论是程序错误而逆向追溯到问题域,还是需求发生变化而从问题域正向追踪到程序,道路都是比较平坦 • 面向对象维护将系统中最容易变化的因素(功能)作为对象的服务封装在对象内部,使得一个对象的修改对其它影响很小。

  12. 面向对象基本概念——对象(Object) 客观世界是由各种对象组成的,任何事物都是复杂的对象,可以由比较简单的对象以某种方式组合而成。这样,可以把整个世界看做一个最复杂的对象。因此,对象是指一个实体,它能够保存一个状态(或称信息或数据),并且它能提供一系列操作(或称行为),这些操作或能检查或能影响对象的状态。 • 对象具有封装性(encapsulation) • 对象具有自治性(autonomy) • 对象具有通信性。 • 对象具有被动性。 • 对象具有暂存性。 • 对象可具有持久性(persistence) object chair cost $50 texture wood location sanctum color black object Move()

  13. 类(Class) 把所有对象都划分成各种对象类(简称为类),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,用于描述对象的当前状态。方法用于描述对象的动态特征,用于描述对象状态的改变过程。 object class class furniture cost texture location color object chair cost $50 texture wood location scantum color black Move() Move() attribute abstract

  14. 消息(Message) • OO方法中的消息 消息就是向对象发出的服务请求,它应含有下述信息:提供服务的对象标识、服务标识、输入信息和回答信息。 • 信息的接受者是提供服务的对象。在设计时,它对外提供的每个服务都应该规定消息的格式,这种规定称做消息协议。 发送者对象 属性: 接收者对象 属性: 操作: message: [sender, return value(s)] 操作:

  15. 面向对象基本特征——封装性(Encapsulation) 对象是进行处理的主体,必须发消息请求执行它的某个操作,处理它的私有数据,同时不能从外界直接对它的私有数据进行操作。也就是说,一切局部于该对象的私有信息,都被封装在该对象类的定义中,在对象的外部是不可见的,即不能直接使用,这就是“封装性”。 • 数据和过程的内部实现细节对外界隐藏(信息隐藏),这将减少当变化发生时副作用的传播。 • 数据结构和操纵它们的操作被合并在单个命名实体(类)中,这将便于构建复用。 • 被封装对象间的接口被简化。一个发送消息的对象不需要关心接收对象的内部数据结构。因此,接口被简化,系统耦合度被降低。

  16. 面向对象基本特征——继承性(Inheritance) 按照子类(派生类)与父类(基类)的关系,把若干个对象类组成一个层次结构的系统。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种表示方法称为继承。 class human name, ID, sex Talking() class athlete class student club, salary lessons, SID object: Wang Ning object: Hao Haidong sport() Learning()

  17. 面向对象基本特征——多态性(Polymorphism) • 对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。 • 多态性的表示有静态类型和动态类型。动态类型(虚函数)可以在程序执行期间在实例之间进行变化。静态类型(函数重载)是在程序上下文中由实体说明决定的。 虚基类 class vehicle appearance (纯)虚函数 moving() class car class plane class ship appearance appearance appearance moving() moving() moving()

  18. 类/对象之间的关系——一般与特殊 • 一般-特殊:是由一组具有一般-特殊关系的类所组成的结构。它是一个以类为结点,以继承关系为边的连通有向图。如果由一些存在单继承关系的类形成的结构又称作层次结构或树型结构,如果由一些存在多继承关系的类形成的结构又称作网状结构。 学生 交通工具 大学生 中学生 轮船 客运工具 初中生 高中生 客轮 树型结构 网状结构

  19. 类/对象之间的关系 ——部分与整体 类/对象之间的关系 ——实例连接 • 一个对象是另一个(组)对象的组成部或分。整体——部分结构由一组彼此间存在着这种组成关系的对象构成。整体-部分结构又称做组装结构(Composition Structure)。 • 实例连接反映对象与对象之间的静态联系。这种双边关系在实现中可以通过对象的属性表达出来。所以这种关系称作实例连接。 汽车 轮胎 车身 教与学 学生 教师 车外壳 底盘 组成结构

  20. 类/对象之间的关系——消息连接 • 描述对象之间的动态联系是用消息连接。若一个对象在执行自己的服务时需要请求另一个对象为它完成某个服务。那么这两个对象之间存在着消息连接。消息连接是有向的,从消息的发送者指向消息的接受者。 a b fun1() fun2() fun3() fun4() d c 消息 fun5() fun6() fun7() fun8()

  21. 面向过程开发模型 • 面向过程开发模式产生过程的抽象。 • 这些抽象的基础是把软件视为处理流,并定义成由一系列步骤构成的算法。 • 每一步骤都是带有预定输入和特定输出的一个过程,把这些步骤串联在一起可产生合理的稳定的贯通于整个程序的控制流,最终产生一个简单的具有静态结构的体系结构。 面向过程开发模型特点 • 过程性开发模式侧重建立构成问题解决的处理流。 • 数据抽象、数据结构根据算法步骤的要求开发,它贯穿于过程,提供过程所要求操作的信息。 • 系统的状态是一组全局变量,这组全局变量保存状态的值,把它们从一个过程传送到另一个过程。

  22. 面向对象开发模型 • 在面向过程开发模式中优先考虑的是过程抽象,在面向对象开发模式中优先考虑的是实体(问题论域的对象)。 • 在面向对象开发模式中,把标识和模型化问题论域中的主要实体做为系统开发的起点,主要考虑对象的行为而不是必须执行的一系列动作。 面向对象开发模型特点 • 面向对象系统中的对象是数据抽象与过程抽象的综合。 • 系统的状态保存在各个数据抽象的所定义的数据存储中。 • 控制流包含在各个数据抽象中的操作内。 • 在面向对象体系结构:消息从一个对象传送到另一个对象; • 算法被分布到各种实体中。

  23. 举 例:数据流图

  24. 举 例:系统层次结构图 银行存取款子系统 客户 信息 验证 密码 验证 模块 帐户 新增 模块 存取 记帐 模块 信息 打印 模块 记录 日志 模块

  25. 客户 银行职员 系统 姓名 身份证号 电话 姓名 身份证号 电话 姓名 员工号 权限 校验用户信息 验证密码 更改帐户信息 增加帐户 注销帐户 记录日志 打印收据 存款 取款 设置密码 挂失 转帐 检验客户信息 收款 付款 收凭证 付凭证 录入业务信息 举 例:类对象关系图 消息 消息 消息 消息

  26. 面向对象项目估算和进度安排 • 由于OOA的方法不同于传统方法,因此,有必要对明显设计用于OO软件的方法补充传统软件成本估算: • 使用工作量分解、FP分析以及任何其它可应用于传统应用的方法来进行估算。 • 使用OOA开发场景脚本(use-case)并确定计数。 • 使用OOA确定关键类的数量。 • 划分应用的界面类型并确定支持类的倍数:将关键类的数量和上面的倍数相乘可得到支持类数量的估算。 • 将整个类的数量和每个类的平均工作单元相乘,一般每个类10~15个人日。 • 通过乘上每个场景脚本的平均工作单元,对基于类的估算进行交叉检查。

  27. 面向对象分析方法 • Rambaugh方法 也称为对象建模技术(Object Modeling Technique,OMT),用于分析、系统设计和对象级设计。分析活动创建三个模型:对象模型、动态模型和功能模型。 • Coad和Yourdon方法 被认为是最容易学习的OOA方法。建模符号简单,且开发分析模型的指导原则是直接的。该方法OOA过程如下: • 标识对象 • 定义一般/特殊结构 • 定义整体/部分结构 • 标识主题 • 定义属性 • 定义服务

  28. 面向对象模型的组成____ _对象模型、动态模型、功能模型 • 面向对象分析的关键是识别出问题领域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。在面向对象观点建立起的模型中,对象模型是最基本、最重要、最核心的模型。 面向对象分析过程从分析用户需求陈述的文件开始。 面向对象得到的模型包含对象的三个要素: • 静态结构(对象模型) • 交互次序(动态模型) • 数据变换(功能模型)

  29. 对象模型 类名 属性 服务 类名 属性 服务 “类”符号 “类--&--对象”符号 对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。面向对象方法强调围绕对象而不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。 对象模型的图形符号 对象模型的命名 “类--&--对象”是一个专用术语,它的含义是“一个类及属于该类的对象”。 1. 使用标准术语 2. 使用具有确切含义的名词 3. 必要时用名词短语作名字

  30. 对象模型——表示模型 一般化类 整体 经理 1+ 主持 项目 项目名 预算 优先级 具体类1 部分1 具体类2 部分2 关联关系 一般-特殊关系 整体-部分关系

  31. 对象模型的层次 • 大型系统的对象模型是由下述四个层次组成:主题层、对象层、特征层、关系层。 • 主题层:所谓主题是把一些具有较强联系的类组织在一起而得的类集合。(当系统中类较多时,对整体模型的理解是很困难的。运用力度控制原则,把它们组合为数量较少的几个主题,就使得模型的开发者和使用者都能在不同的粒度层次上表示或理解系统模型。当系统规模不大时,可以不用主题层。)

  32. 对象层 特征层 关系层 • 对象层:给出系统中所有反映问题域与系统责任的对象。 (用类符号表达属于每一类的对象。类作为对象的抽 象描述,是构成系统的基本单位。) • 特征层:给出每一类(及其所代表的对象)的内部特征。即 给出每个类的属性与服务。(这个层次描述了对象 的内部构成状况,以分析阶段所能达到的程度为限 给出对象的内部细节) • 关系层:给出各个类(及其所代表的对象)彼此之间的关系。 (包括 • 继承关系,用一般-特殊结构表示; • 组装关系,用整体-部分结构表示; • 反映于属性的静态依赖关系,用实例连接表示; • 反映于服务的动态依赖关系,用消息连接表示。 这个层次描述了对象外部的联系状况。

  33. 动态模型 动态模型规定了对象模型中的对象的合法变化序列。 • 事件:在某个特定时刻所发生的事情称为事件。它是对引起对象从一种状态转换到另一种状态的现实世界中的事件的抽象。实际上事件就是引起对象状态转换的控制信息。 • 状态:对象在某个特定阶段所处的情形就是状态。它是对象行为属性值的一种抽象。 • 行为:对象达到某种状态时所作的一系列处理操作。 通常用状态图来描绘对象的状态、出发状态转换事件、以及对象的行为。 状态1 do: 行为1 状态2 do: 行为2 初始事件 事件1[条件1] 状态图中使用的符号

  34. 要想对一个系统了解得比较清楚,还应当考察在任何时刻对象及其关系的改变。要想对一个系统了解得比较清楚,还应当考察在任何时刻对象及其关系的改变。 • 系统的这些涉及时序和改变状况用动态模型来描述。 • 动态模型着重于系统的控制逻辑。 功能模型 功能模型表示的系统的“功能”性质,它指明了系统应该“做什么”,因此更直观的反映了用户对系统的需求。 通常,功能模型由一组数据流图组成。在面向对方法学中,数据流图并没有增加新的信息。 功能模型指明了系统应该“做什么”,动态模型明确规定了什么时候(即在何种状态下接受了什么事件的触发)做;对象模型则定义了做事情的实体。

  35. 面向对象分析步骤 分析工作主要包括对问题空间中对象的确定和对对象和对象之间的关联的确定,对对象的确定包括对对象属性和行为的确定,对连接的确定包括对对象结构关系、实例连接关系和消息连接关系的确定,具体工作内容和步骤如图所示。

  36. 在概念上可以认为,面向对象分析大体上按照下列顺序进行:在概念上可以认为,面向对象分析大体上按照下列顺序进行: • 寻找问题中事物 • 寻找对象 • 定义属性与服务(类或者对象内部的事情) • 识别问题中结构 • 识别主题 • 建立动态模型 • 建立功能模型。

  37. 面向对象分析过程的主要活动 1)发现对象,定义它们的类。 2)识别对象的内部特征。(定义属性和服务) 3)识别对象的外部关系。 A 建立一般-特殊结构。 B 建立整体-部分结构。 C 建立实例连接。 D 建立消息连接。 以上活动总目标是建立面向对象分析基本模型――类图

  38. 面向对象分析过程的主要活动 4) 划分主题,建立主题图。 5) 定义use case,建立交互图。 A 发现活动者。 B 定义use case。 C 建立交互图。 6) 建立详细说明 这是对模型的详细定义与解释,可以作为一个独立的活动,更自然的作法是分散在其它活动中。 7) 原型开发 这个活动应该在面向对象分析过程中反复进行。

  39. 对象的发现与标识 • 发现对象的根本出发点是问题域和系统任务。分析员的主要工作就是:通过不断地研究问题域,建立一个能满足用户需求的系统模型。 找出候选的类—&—对象。通常包括: • 外部实体:它们生产或消费被基于计算机的系统使用的信息。例如系统、设备、人员等。 • 事物:它们时问题的细细域的一部分。例如报告、显示、文字、信号 • 发生的事情或事件:它们出现咱系统运行的语境内。 • 角色:指由与系统交互的人员所扮演的角色。例如管理者、工程师、销售人员等。 • 组织单位:例如分支、小组、小队 • 结构:它们定义一个对象类,或者在极端情况下定义对象的相关关系。例如:传感器、四轮交通工具 • 其它潜在对象

  40. 类名 属性1 …….. 属性n 服务1 ….... 服务n 定义属性 对象的属性只能由这个对象的服务存取。其内部服务只供对象内部的其它服务使用,不对外提供;外部服务对外提供一个消息接口,通过这个接口接收对象外部的消息并为之提供服务。 • 对象的某些属性可以根据常识来定义。 • 某些属性可以根据系统责任来定义 • 某些属性是为了在对象服务中实现 某些功能,而需要增设辅助属性 • 如果有些问题与实现条件有关,就要 考虑这些问题可以推迟到设计阶段

  41. 定义行为 对象的一系列行为都可以说是对象的服务: 1 .系统行为 系统分析中,与对象有关的某些行为实际上不是对象自身的行为,而是系统把对象看作一个整体来处理时施加于对象的行为。例如“教师”对象,自身并没有删除、建立、更新等行为,而是系统给对象增加的系统行为。 2.对象的基本服务 根据面向对象封装原则,对象外部的行为不能对对象内部的属性作任何读、写直接操作。而只能由对象内部的行为(服务)向外提供相应的服务。于是每个对象都要设立许多读取或设置属性的值的服务。这类服务的算法都是简单的。 3.对象的特殊服务 面向对象的重点就是发现和描述这类服务,此类服务描述了对象所映射事物的固有行为,其算法是进行某些计算或监控操作。

  42. 多边形 正多边形 轴向矩形 边数 顶点数据 *顶点数据 ×边数 *顶点数据 绘图 *绘图 *绘图 发现一般——特殊结构 1. 按领域知识、常识分类。 2. 分析类的属性和服务。有些类之间的一般-特殊结构是由于他们的属性与服务的特点产生的。所以要发现系统中类的结构关系:首先分析类的属性服务是否适合这个类的全部对象。如果有些类属性服务仅适合该类的一部分对象,那么就要建立一般-特殊结构。

  43. 从特殊类发现一般类 ? 公司职员 姓名 身分证号码 …… …… 股东 职员 股东 职员 姓名 身分证号码 股份 …… 姓名 身分证号码 工资 …… 股份 …… 工资 …… …… …… …… ……

  44. 收款机 A B C 收款机类成为 可供本领域其 它系统复用的 领域构件 现钞收款机 A B C D E F X Y 现钞收款机 D E F X Y Z 为支持复用建立结构 Z

  45. 取消没有特殊属性的特殊类 学生 学生 姓名 学号 班级 …… 姓名 学号 班级 …… …… …… 大学生 研究生 研究生 研究方向 指导教师 研究方向 指导教师 …… ……

  46. 通过增加属性简化一般-特殊结构 人员 …… …… 男人 女人 中国人 美国人 日本人 …… …… …… …… …… …… …… …… …… …… 人员 性别 国籍 …… ……

  47. 两种结构的变通 汽车 汽车 冷藏车 制冷设备 …… …… …… …… …… …… …… …… 冷藏车 汽车 冷藏车 制冷设备 制冷设备 …… …… …… …… …… …… …… …… …… …… 仅用一般 -特殊结构 两种结构 同 用 仅用整体 -部分结构

  48. 教室 桌椅 显示板 发现整体——部分结构 1 .组织机构(学校) 2.空间上的包容关系(教室) 3.物理上整体-部分关系(电梯) 4.集合与成员关系 5.对象与个别抽象关系 6.抽象事物的整体与部分(学科和分支学科) 1 33.88 0.1 0.1 整体-部分关系

  49. 用整体-部分结构实现复用 机床 起重机 送料车 …… …… …… …… …… …… 刨床 车床 钻床 电动机 …… …… …… …… …… …… …… ……

  50. 毕业论文 论文题目 答辩时间 成绩 教师 学生 教师 学生 实例连接 实例连接是用于表达对象之间的静态关系。这种静态关系是指最终可通过对象属性来表示的一个对象对另一个对象的依赖关系。 1. 复杂的实例连接概念 对象之间的关系有时通过一个由对象实例构成的二元组不能充分表达,可以允许实。例连接带有一组属性,这些属性通过关联(association)来描述。 2. 用对象表示实例连接带有复杂信息的两类对象之间的联系是否说明它们之间存在着某种事物。 指导论文 0,m 1 论文题目 答辩时间 成绩 指导 写作 1 1 0,m 1

More Related