版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第5 5章章建立需求模型建立需求模型用况图用况图5.1 需求分析和系统分析需求分析和系统分析需求分析需求分析的确切含义是对用户需求进行分析,旨在产生一份的确切含义是对用户需求进行分析,旨在产生一份明确、规范的需求定义。明确、规范的需求定义。OOA的主要内容是研究问题域中与需求有关的事物,把它们的主要内容是研究问题域中与需求有关的事物,把它们抽象为系统中的对象,建立类图。确切地讲,这些工作应该抽象为系统中的对象,建立类图。确切地讲,这些工作应该叫做叫做系统分析系统分析,而不是严格意义上的需求分析。,而不是严格意义上的需求分析。早期的早期的OOA缺乏一个良好的基础缺乏一个良好的基础对需求的规范描
2、述。对需求的规范描述。需求说明需求说明需求分析需求分析健壮分析健壮分析需求模型需求模型分析模型分析模型分析过程分析过程Jacobson方法(方法(OOSE)提出用况()提出用况(use case)概念,)概念,解决了对需求的描述问题,其分析过程如下:解决了对需求的描述问题,其分析过程如下:问题域问题域(抽象的来源)(抽象的来源)OOA模型模型(类图)(类图)抽象抽象OOA是将问题域中的事物抽象为系统中的对象是将问题域中的事物抽象为系统中的对象系统责任系统责任(抽象的目标)(抽象的目标)抽象的目标是系统责任抽象的目标是系统责任需求需求用况的概念解决了对需求的描述问题用况的概念解决了对需求的描述问
3、题需求模型需求模型(用况图)(用况图)5.2 5.2 基本思路基本思路问题的提出:问题的提出:在系统尚未存在时,如何描绘用户需要一个什么样的系统?如何规范地定义用户需求?考虑问题的思路:考虑问题的思路:把系统看作一个黑箱,看它对外部的客观世界发挥什么作用,描述其外部可见的行为外部可见的行为。系统是由一条系统是由一条边界包围起来边界包围起来的未知空间的未知空间只通过有限只通过有限的几个接口的几个接口与外部交互与外部交互系统边界以外系统边界以外是与系统进行是与系统进行交互的参与者交互的参与者把内外交互情况描把内外交互情况描述清楚,就确切地述清楚,就确切地定义了系统的需求定义了系统的需求系统边界系统
4、边界系统边界:系统边界:一个系统所包含的所有系统成分与系统以外一个系统所包含的所有系统成分与系统以外各种事物的分界线。各种事物的分界线。系统:系统:被开发的计算机软硬件系统,不是指现实系统。被开发的计算机软硬件系统,不是指现实系统。系统成分:系统成分:在在OOA和和OOD中定义并且在编程时加以实中定义并且在编程时加以实现的系统元素现的系统元素对象对象对对象象对象对象对象对象对象对象对象对象对象对象参与者参与者( (人员人员) )参与者参与者( (设备设备) )参与者参与者( (外系统外系统) )参与者:参与者:在系在系统边界以外,统边界以外,与系统进行交与系统进行交互的事物互的事物人员、设备、
5、人员、设备、外系统外系统5.3 系统边界与参与者系统边界与参与者现实世界中的事物与系统之间的关系现实世界中的事物与系统之间的关系分四种情况分四种情况(1)被抽象为系统中的对象)被抽象为系统中的对象汽车飞机奖杯钟表起重机职员楼房天平(2)只作为系统外部的参与者与系统交互)只作为系统外部的参与者与系统交互(4)与系统无关)与系统无关操作员(3)既是系统中的对象,本身又作为参与者与系统交互)既是系统中的对象,本身又作为参与者与系统交互人员人员系统的直接使用者系统的直接使用者直接为系统服务的人员直接为系统服务的人员设备设备与系统直接相联的设备与系统直接相联的设备为系统提供信息为系统提供信息在系统控制下
6、运行在系统控制下运行不与系统相连的设备不与系统相连的设备 计算机设备计算机设备 外系统外系统上级系统上级系统子系统子系统其它系统其它系统如何发现参与者如何发现参与者考虑人员、设备、外系统考虑人员、设备、外系统什么是用况什么是用况I. Jacobson:用况是通过使用系统功能的某些部分而使用系统的一种具体方式。每个用况是通过使用系统功能的某些部分而使用系统的一种具体方式。每个用况包括用况包括一一个个由参与者发动的由参与者发动的完整的事件过程。它详细说明了参与者和完整的事件过程。它详细说明了参与者和系统之间发生的交互。因此,一个用况是一个由参与者和系统在一次对系统之间发生的交互。因此,一个用况是一
7、个由参与者和系统在一次对话中执行的特定的相关事务序列。全部用况的集合则说明了所有可能存话中执行的特定的相关事务序列。全部用况的集合则说明了所有可能存在的系统使用方式。在的系统使用方式。对象技术词典对象技术词典:1对一个系统或者一个应用的一种单一的使用方式所进行的描述。对一个系统或者一个应用的一种单一的使用方式所进行的描述。2关于关于单个参与者单个参与者在与系统的对话中所执行的处理的行为陈述序列。在与系统的对话中所执行的处理的行为陈述序列。UML:对对系统系统在与它的参与者交互时所能执行的一组动作序列(包括其变体)在与它的参与者交互时所能执行的一组动作序列(包括其变体)的描述。的描述。?本书的定
8、义:本书的定义:用况是对参与者使用系统的一项功能时所进行的交互过程用况是对参与者使用系统的一项功能时所进行的交互过程的描述,其中包含由双方交替执行的一系列动作。的描述,其中包含由双方交替执行的一系列动作。5.4 用况(用况(use case)术语术语“use case”use case”的准确含义的准确含义使用情况使用情况是对一项系统功能使用情况的一般描述,它对于每一次使是对一项系统功能使用情况的一般描述,它对于每一次使用都普遍适应,既不是应用实例,也不是举例说明。用都普遍适应,既不是应用实例,也不是举例说明。因此译为因此译为“用况用况”,而不是,而不是“用例用例”。几点说明:几点说明:(1
9、1)一个用况只描述参与者对一个用况只描述参与者对单独一项单独一项系统功能的使用情况;系统功能的使用情况;(2 2)通常是平铺直叙的)通常是平铺直叙的文字文字描述,描述,UMLUML也允许其他描述方式;也允许其他描述方式;(3 3)陈述参与者和系统在交互过程中)陈述参与者和系统在交互过程中双方双方所做的事;所做的事;(4 4)所描述的交互既可能由所描述的交互既可能由参与者发起参与者发起也可能由也可能由系统发起系统发起 ;(5 5)描述彼此为对方)描述彼此为对方直接地直接地做什么事,不描述怎么做;做什么事,不描述怎么做;(6 6)描述应力求准确,允许概括,但)描述应力求准确,允许概括,但不要把双方
10、的行为混在一起不要把双方的行为混在一起;(7 7)一个用况可以由一个用况可以由多种参与者多种参与者分别参与或共同参与。分别参与或共同参与。 内容与书写格式内容与书写格式 :名称名称行为陈述(分左右栏)行为陈述(分左右栏)调用语句调用语句控制语句控制语句括号或标号括号或标号收款收款输入开始本次收款的命令; 作好收款准备,应收款总作好收款准备,应收款总 数置为数置为0,输出提示信息;,输出提示信息;for 顾客选购的每种商品 do 输入商品编号; if 此种商品多于一件 then 输入商品数量 end if; 检索商品名称及单价;检索商品名称及单价; 货架商品数减去售出数;货架商品数减去售出数;
11、if 货架商品数低于下限货架商品数低于下限 then call 通知上货通知上货 end if; 计算本种商品总价并打印编号、计算本种商品总价并打印编号、 名称、数量、单价、总价;名称、数量、单价、总价; 总价累加到应收款总数;总价累加到应收款总数;end for; 打印应收款总数;打印应收款总数;输入顾客付款数; 计算应找回款数,计算应找回款数, 打印付款数及找回款,打印付款数及找回款, 应收款数应收款数计入账册。计入账册。例例如何定义用况如何定义用况针对单个用况的描述策略:针对单个用况的描述策略:把自己当作参与者,与设想中的系统进行交互。考虑:交互的目的是什么?需要向系统输入什么信息?希望
12、由系统进行什么处理并从它得到何种结果?把上述交互过程描述出来 。定义系统中所有的用况:定义系统中所有的用况:(1)全面地了解和收集用户所要求的各项系统功能,找出所有的参与者,了解与各项功能相关的业务流程;(2)把用户提出的功能组织成适当的单位,每一项功能完成一项完整而相对独立的工作;(3)穷举每一类参与者所使用的每一项系统功能,定义相应的用况;(4)检查用户对系统的各项功能需求是否都通过相应的用况做了描述。12北京大学信息学院研究生课程面向对象分析与设计参与者参与者基用况基用况 includeextendinclude用况用况 基用况基用况 基用况基用况 被包含用况被包含用况 延伸用况延伸用况
13、 用况用况 5.5 5.5 用况图用况图参与者参与者参与者参与者模型元素:模型元素:参与者参与者用况用况延伸延伸包含包含泛化泛化5.5 5.5 用况图用况图用况之间的关系用况之间的关系包含、延伸、泛化包含、延伸、泛化延伸延伸包含包含问题:问题:延伸与包含的相似性延伸与包含的相似性延伸的方向问题延伸的方向问题“条件条件”和和“延伸点延伸点”问题问题“泛化泛化”问题问题系统边界问题系统边界问题Perform ATMPerform ATMTransactionTransactionWithdrawWithdrawDepositDepositFundsFunds泛化泛化TransfeTransfer
14、r FundsFunds 用况的两种复杂情况用况的两种复杂情况1 1、两个(或多个)参与者共享一个用况、两个(或多个)参与者共享一个用况不同种类的参与者可能都要使用某一项系统功能,因不同种类的参与者可能都要使用某一项系统功能,因此它们可能共享同一个用况此它们可能共享同一个用况例:例:系统维护系统维护登录登录系统管理员系统管理员普通用户普通用户2、一个用况的执行,可能需要两个(甚至多个)参与者同时一个用况的执行,可能需要两个(甚至多个)参与者同时与系统交互。与系统交互。例:网上购物例:网上购物网上购物客户供货商用况图的开发过程用况图的开发过程确定系统边界确定系统边界发现参与者发现参与者 定义用况
15、定义用况 建立用况之间的关系建立用况之间的关系 确定参与者和用况之间的关系确定参与者和用况之间的关系 绘制用况图绘制用况图 使用用况图的几条建议使用用况图的几条建议最重要的工作是对用况的描述最重要的工作是对用况的描述不要过分深入地描述系统内部的行为细节不要过分深入地描述系统内部的行为细节 运用最主要概念,加强用况内容的描述运用最主要概念,加强用况内容的描述不要陷入延伸与包含、延伸点、泛化等问题的争论和辨别不要陷入延伸与包含、延伸点、泛化等问题的争论和辨别了解用况的局限性了解用况的局限性主要作用是描述功能需求主要作用是描述功能需求5.6 开发过程与建议开发过程与建议概念:概念:对象(对象(obj
16、ect)是系统中用来描述客观事物的一个实体,是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和施加于这组它是构成系统的一个基本单位,由一组属性和施加于这组属性的一组操作构成。属性的一组操作构成。类(类(class)是具有相同属性和操作的一组对象的集合,是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,它由一它为属于该类的全部对象提供了统一的抽象描述,它由一个类名、一组属性和一组操作构成。个类名、一组属性和一组操作构成。 类和对象的关系类和对象的关系集合与成员,对象是类的实例集合与成员,对象是类的实例在一般在一般-特殊结构中,特殊类特殊结
17、构中,特殊类的对象实例在逻辑上也都是其的对象实例在逻辑上也都是其一般类的对象实例。一般类的对象实例。不直接创建对象实例的类称为不直接创建对象实例的类称为抽象类(抽象类(abstract class) 学生学生本科生本科生研究生研究生例:例:第第6 6章章 发现对象,定义对象类发现对象,定义对象类6.1 对象和类的概念及其运用对象和类的概念及其运用主动对象(主动对象(active object)至少有一个操作不需至少有一个操作不需要接收消息就能主动执行的对象要接收消息就能主动执行的对象用于描述具有主动行为的事物用于描述具有主动行为的事物主动对象的类叫做主动对象的类叫做主动类(主动类(active
18、 class)被动对象(被动对象(passive object) 每个操作都必须在每个操作都必须在消息的驱动下才能执行的对象消息的驱动下才能执行的对象类的语义类的语义OO方法中的类在不同的语境下有两种不同的语义:方法中的类在不同的语境下有两种不同的语义:1. 一个类代表由它的全部对象实例所构成的群体一个类代表由它的全部对象实例所构成的群体日常语言表达中的例子:日常语言表达中的例子:“公司里有管理人员、技术人员和市场人员公司里有管理人员、技术人员和市场人员”“马路上汽车很多马路上汽车很多” 在在OO模型中:模型中:每个类都是由它的全部对象实例所构成的集合每个类都是由它的全部对象实例所构成的集合类
19、代表了它的全部对象实例。类代表了它的全部对象实例。2. 一个类代表属于该类的任意一个对象实例一个类代表属于该类的任意一个对象实例从大量的个体中抽象出一个概念,再运用这个概念时就从大量的个体中抽象出一个概念,再运用这个概念时就可以代表其中的任何一个个体,例如:可以代表其中的任何一个个体,例如: “学生有一个学号,属于一个班级,要上课学生有一个学号,属于一个班级,要上课” 在在OO系统模型中定义了一个类,它就可以代表它的任系统模型中定义了一个类,它就可以代表它的任何一个对象实例,例如:何一个对象实例,例如:汽车与发动机之间的聚合关系,表示任何一辆汽车都有一台发汽车与发动机之间的聚合关系,表示任何一
20、辆汽车都有一台发动机,任何一台发动机都可以装在动机,任何一台发动机都可以装在01辆汽车上辆汽车上在类的抽象层次建模在类的抽象层次建模理由:理由:(1)充分性:模型中一个类描述了它的全部对象实例)充分性:模型中一个类描述了它的全部对象实例(2)必要性:个别对象实例不能代表其他对象实例)必要性:个别对象实例不能代表其他对象实例(3)符合人类的思维方式:在概念层次上表达描述事物规律)符合人类的思维方式:在概念层次上表达描述事物规律(4)与)与OOPL保持良好的对应保持良好的对应(5)避免建模概念复杂化)避免建模概念复杂化 (6)消除抽象层次的混乱)消除抽象层次的混乱如何运用类和对象的概念如何运用类和
21、对象的概念从对象出发认识问题域从对象出发认识问题域将问题域中的事物抽象为对象;将问题域中的事物抽象为对象;将具有共同特征的对象抽象为类将具有共同特征的对象抽象为类用类以及它们之间的关系构成整个系统模型;用类以及它们之间的关系构成整个系统模型;归纳归纳演绎演绎在模型中用类表示属于该类的任何对象在模型中用类表示属于该类的任何对象在类的规约中说明这个类将创建那些对象实例在类的规约中说明这个类将创建那些对象实例在程序中用类定义它的全部对象在程序中用类定义它的全部对象编程时静态声明类的对象编程时静态声明类的对象运行时动态创建类的对象运行时动态创建类的对象类类 名名压缩方式压缩方式类类 名名属性名属性名:
22、类型名类型名操作名操作名()展开方式展开方式主动类主动类active类类 名名衍型(衍型(stereotype)用关键字或者用关键字或者用图标表示用图标表示类名类名UML2 主动类表示法主动类表示法主动主动类类 名名6.2 表示法表示法在在模型模型中用类符号来表示一个类中用类符号来表示一个类它代表了属于该类的全部对象实例它代表了属于该类的全部对象实例对象名对象名: :类名类名压缩方式压缩方式属性名属性名=值值UML的对象表示法:的对象表示法:细节方式细节方式对象名对象名: :类名类名匿名对象匿名对象: :类名类名压缩方式压缩方式属性名属性名=值值细节方式细节方式: :类名类名用所谓“匿名对象”
23、代表类的任何一个对象实例,然而这恰恰是类的作用。6.3 发现对象发现对象研究问题域研究问题域亲临现场深入调查研究亲临现场深入调查研究直接观察并向用户及相关的业务人员进行调查和直接观察并向用户及相关的业务人员进行调查和交流交流,考察问题域中各种各样的事物、它们的特征及相互关系 听取问题域专家的见解听取问题域专家的见解领域专家领域专家包括技术人员、管理者、老职员和包括技术人员、管理者、老职员和富有经验的工人等富有经验的工人等阅读相关材料阅读相关材料阅读各种与问题域有关的材料,学习相关行业和阅读各种与问题域有关的材料,学习相关行业和领域的基本知识领域的基本知识借鉴以往的系统借鉴以往的系统查阅以往在该
24、问题域中开发过的同类系统的分析查阅以往在该问题域中开发过的同类系统的分析文档文档 ,吸取经验,发现可以复用的类,吸取经验,发现可以复用的类 正确地运用抽象原则正确地运用抽象原则对什么进行抽象对什么进行抽象问题域问题域当前目标当前目标系统责任系统责任忽略与系统责任无关的事物忽略与系统责任无关的事物只注意与之有关的事物只注意与之有关的事物 ,抽象为系统中的对象,抽象为系统中的对象 例如:学校的教师、学生、教务员例如:学校的教师、学生、教务员 和和 警卫警卫忽略与系统责任无关的事物特征忽略与系统责任无关的事物特征只注意与之有关的特征,抽象为对象的属性或操作只注意与之有关的特征,抽象为对象的属性或操作
25、 例如:教师的专业、职称例如:教师的专业、职称 和和 身高、体重身高、体重正确地提炼对象正确地提炼对象 例如:对书的不同抽象例如:对书的不同抽象在图书馆管理系统中以在图书馆管理系统中以一本书一本书作为一个对象实例作为一个对象实例在书店管理系统中以在书店管理系统中以一种书一种书作为一个对象实例作为一个对象实例由系统管理或使用由系统管理或使用其信息,或者在系其信息,或者在系统中呈现某些行为统中呈现某些行为的各类人员的各类人员由系统管理或使用由系统管理或使用其信息,或者在系其信息,或者在系统中呈现某些行为统中呈现某些行为的各类组织的各类组织由系统进行管由系统进行管理的各种物品理的各种物品其他其他策略
26、与启发策略与启发(1 1)考虑问题域:)考虑问题域:抽象事物抽象事物事件事件文件文件结构结构人员人员组织组织物品物品设备设备由系统进行管理或由系统进行管理或控制,或者在系统控制,或者在系统中呈现某些行为的中呈现某些行为的各种设备各种设备例如:课程、计例如:课程、计划、交易、账户划、交易、账户需要长期记忆的事件需要长期记忆的事件例如:银行的取款、例如:银行的取款、存款,保险公司的索存款,保险公司的索赔,车辆管理中的驾赔,车辆管理中的驾驶违章驶违章泛指各种表格、档案、证件、票据等文件泛指各种表格、档案、证件、票据等文件例如:业务报表,人事档案,身份证,合例如:业务报表,人事档案,身份证,合同,商品
27、订单等同,商品订单等 注意三个问题:非基础数据,同一事物的注意三个问题:非基础数据,同一事物的重复描述,多种事物信息组合重复描述,多种事物信息组合从结构得到启发,从结构得到启发,联想到新的对象联想到新的对象其他一切有助于发其他一切有助于发现对象的事物现对象的事物(2 2)考虑系统边界:)考虑系统边界:考察在系统边界以外与系统交互的各类参与者考察在系统边界以外与系统交互的各类参与者考虑通过那些对象处理这些参与者的交互考虑通过那些对象处理这些参与者的交互人员人员设备设备外系统外系统(3 3)考虑系统责任:)考虑系统责任:检查每一项功能需求是否已有相应的对象提供,检查每一项功能需求是否已有相应的对象
28、提供,发现遗漏的对象发现遗漏的对象审查与筛选审查与筛选(1)舍弃无用的对象)舍弃无用的对象通过属性判断:通过属性判断:是否通过属性记录了某些有用的信息?是否通过属性记录了某些有用的信息?通过操作判断:通过操作判断:是否通过操作提供了某些有用的功能?是否通过操作提供了某些有用的功能?二者都不是二者都不是无用无用(2)对象的精简)对象的精简只有一个属性的对象只有一个属性的对象班级班级班主任班主任姓名姓名11班级班级班主任姓名班主任姓名只有一个操作的对象只有一个操作的对象输出设备输出设备格式转换器格式转换器文件格式转换文件格式转换输出设备输出设备文件格式转换文件格式转换call(3)与实现条件有关的
29、对象)与实现条件有关的对象例如:与例如:与图形用户界面(图形用户界面(GUI)数据管理系统数据管理系统硬件硬件 及及操作系统操作系统 有关的对象有关的对象推迟到推迟到OOD考虑考虑6.4 对象分类对象分类(1 1)将对象抽象为类,用类表示它的全部对象)将对象抽象为类,用类表示它的全部对象(2 2)审查和调整)审查和调整类的属性或操作不适合该类的全部对象实例类的属性或操作不适合该类的全部对象实例例:例:“汽车汽车”类的类的“乘客限量乘客限量”属性属性进一步划分特殊类进一步划分特殊类属性及操作相同的类属性及操作相同的类经过抽象,差别很大的事物可能只保留相同的特征经过抽象,差别很大的事物可能只保留相
30、同的特征考虑能否合并为一个类考虑能否合并为一个类属性及操作相似的类属性及操作相似的类考虑能否提升出一个一般类考虑能否提升出一个一般类同一事物的重复描述同一事物的重复描述例:例:“职员职员”和和“工作证工作证”取消其中一个取消其中一个(3 3)类的命名)类的命名类的名字应适合该类(及其特殊类)的全部对象实例类的名字应适合该类(及其特殊类)的全部对象实例反映个体而不是群体反映个体而不是群体使用名词使用名词 或或 带定语的名词带定语的名词避免避免市井俚语和市井俚语和无意义的符号无意义的符号使用问题域通用的词汇使用问题域通用的词汇使用便于交流的语言文字使用便于交流的语言文字可以用本地文字和英文双重命名
31、可以用本地文字和英文双重命名属性属性(attributeattribute)是用来描述对象静态特征的一个数据项。)是用来描述对象静态特征的一个数据项。实例属性实例属性(instance attribute)和和类属性类属性(class attribute)的区别的区别例如:仪表类例如:仪表类输入电压、功率及各种规定的质量指标输入电压、功率及各种规定的质量指标类属性类属性编号、出厂日期、精度等实际性能参数编号、出厂日期、精度等实际性能参数实例属性实例属性第第7 7章章 定义对象的属性和操作定义对象的属性和操作7.1 属性和操作属性和操作 操作操作(operationoperation)是用来描述
32、对象动态特征(行为)的)是用来描述对象动态特征(行为)的一个动作序列一个动作序列 。近义词:方法(近义词:方法(methodmethod),服务(),服务(serviceservice) 被动操作被动操作(passive operation):):只有接收到消息才能执行的操作只有接收到消息才能执行的操作 编程语言中的函数、过程等被动成分编程语言中的函数、过程等被动成分主动操作主动操作(active operation):):不需要接收消息就能主动执行的操作不需要接收消息就能主动执行的操作编程语言中的进程、线程等主动成分编程语言中的进程、线程等主动成分 实现级细节方式实现级细节方式分析级细节方式
33、分析级细节方式7.2 属性和操作的表示法属性和操作的表示法类类 名名属性名属性名:类型名类型名=值值操作名操作名(参数表参数表):返回类型:返回类型类类 名名属性名属性名:类型名类型名操作名操作名()用衍型表示用衍型表示主动操作主动操作主动主动 类名类名操作名操作名()主动主动操作名操作名()类名类名操作名操作名()主动主动操作名操作名()操作名操作名()主动主动操作名操作名()7.3 7.3 定义属性定义属性(1 1)策略与启发)策略与启发按常识这个对象应该有哪些属性?按常识这个对象应该有哪些属性?人人姓名、地址、出生年月姓名、地址、出生年月在当前的问题域中,对象应该有哪些属性?在当前的问题
34、域中,对象应该有哪些属性?商品商品条形码条形码根据系统责任,这个对象应具有哪些属性?根据系统责任,这个对象应具有哪些属性?乘客乘客手机号码手机号码建立这个对象是为了保存和管理哪些信息?建立这个对象是为了保存和管理哪些信息?物资物资型号、规格、库存量型号、规格、库存量为实现操作的功能,需要增设哪些属性?为实现操作的功能,需要增设哪些属性?传感器(信号采集功能)传感器(信号采集功能)时间间隔时间间隔是否需要增加描述对象状态的属性?是否需要增加描述对象状态的属性?设备设备状态状态 用什么属性表示关联和聚合?用什么属性表示关联和聚合?课程课程任课教师,汽车任课教师,汽车发动机发动机(2)审查与筛选)审
35、查与筛选是否体现了以系统责任为目标的抽象是否体现了以系统责任为目标的抽象例:书例:书重量?重量?是否描述对象本身的特征是否描述对象本身的特征例:课程例:课程电话号码?电话号码?是否可通过继承得到?是否可通过继承得到?是否可从其他属性直接导出?是否可从其他属性直接导出?(3)推迟到)推迟到OOD考虑的问题考虑的问题规范化问题规范化问题对象标识对象标识性能问题性能问题(4)属性的命名与定位)属性的命名与定位命名:原则与类的命名相同命名:原则与类的命名相同定位:针对所描述的对象定位:针对所描述的对象适合类(及其子类)的全部对象实例适合类(及其子类)的全部对象实例(1 1)对象行为分类)对象行为分类系
36、统行为系统行为例:创建、删除、复制、转存例:创建、删除、复制、转存对象自身的行为对象自身的行为算法简单的操作算法简单的操作例:读、写属性值例:读、写属性值对象自身的行为对象自身的行为算法复杂的操作算法复杂的操作计算或监控计算或监控7.4 7.4 定义操作定义操作考虑系统责任考虑系统责任有哪些功能要求在本对象提供?有哪些功能要求在本对象提供?考虑问题域考虑问题域对象在问题域对应的事物有哪些行为?对象在问题域对应的事物有哪些行为?分析对象状态分析对象状态对象状态的转换是由哪些操作引起的对象状态的转换是由哪些操作引起的?追踪操作的执行路线追踪操作的执行路线模拟操作的执行,并在整个系统中跟踪模拟操作的
37、执行,并在整个系统中跟踪(2)策略与启发)策略与启发审查对象的每个操作是否审查对象的每个操作是否真正有用真正有用是否直接提供系统责任所要求的某项功能?是否直接提供系统责任所要求的某项功能?或者或者 响应其它操作的请求间接地完成这种功能响应其它操作的请求间接地完成这种功能的某些局部操作?的某些局部操作?调整调整取消无用的操作取消无用的操作审查操作是不是审查操作是不是高内聚高内聚的的一个操作应该只完成一项单一的、完整的功能一个操作应该只完成一项单一的、完整的功能调整调整拆分拆分 或或 合并合并(3 3)审查与调整)审查与调整考虑问题域考虑问题域对象行为是被引发的,对象行为是被引发的,还是主动呈现的
38、?还是主动呈现的?(4 4)认识对象的主动行为)认识对象的主动行为操作执行路线逆向追踪操作执行路线逆向追踪与参与者直接交互的对象操作与参与者直接交互的对象操作问题:分析阶段为什么要给出操作流程?问题:分析阶段为什么要给出操作流程?关于关于OOA/OOD分工的两种不同观点分工的两种不同观点(5)操作过程描述)操作过程描述可采用流程图或活动图可采用流程图或活动图yesno动作陈述框,在框内动作陈述框,在框内填写要执行的动作。填写要执行的动作。条件判断框,给出一条件判断框,给出一个判断条件。个判断条件。转接,用于连接各个框,转接,用于连接各个框,表示它们之间的转接关系。表示它们之间的转接关系。入口入
39、口/出口标记,指出出口标记,指出操作的开始或结束。操作的开始或结束。流程图:流程图:活动图:活动图:在流程图基础上进行了一些扩展,在流程图基础上进行了一些扩展,有更强的描述能力(第有更强的描述能力(第9章介绍)章介绍)命名:动词或动宾结构命名:动词或动宾结构定位:定位:与实际事物一致与实际事物一致例:售货员例:售货员售货,商品售货,商品售出售出在一般在一般-特殊结构中的位置特殊结构中的位置适合类的全部对象实例适合类的全部对象实例(6)操作的命名和定位)操作的命名和定位商品商品售出售出从主语从主语-谓语谓语-宾语结构看对象操作的设置宾语结构看对象操作的设置“售货员销售商品售货员销售商品”操作应该
40、放在哪里?操作应该放在哪里?售货员售货员售货售货call7.5 接口的概念及用途接口的概念及用途早期的面向对象方法并没有把接口作为正式的早期的面向对象方法并没有把接口作为正式的OO概念概念 和系统成分,只是用来解释和系统成分,只是用来解释OO概念概念“操作是对象(类)对外提供的访问接口操作是对象(类)对外提供的访问接口”20世纪世纪90年代中后期,接口才作为一种系统成分出现年代中后期,接口才作为一种系统成分出现在在OOPL中,并且被中,并且被UML作为一种模型元素作为一种模型元素UML对接口的定义及解释:对接口的定义及解释:“接口(接口(interface)是一种类目(是一种类目(classi
41、fier) ,它,它表示对一组紧凑的公共特征和职责的声明。一个接表示对一组紧凑的公共特征和职责的声明。一个接口说明了一个合约;实现接口的任何类目的实例必口说明了一个合约;实现接口的任何类目的实例必须履行这个合约。须履行这个合约。”“一个给定的类目可以实现多个接口,而一个接口一个给定的类目可以实现多个接口,而一个接口可以由多个不同的类目来实现。可以由多个不同的类目来实现。” 为什么引入接口的概念为什么引入接口的概念售货员售货员商品商品采购员采购员callcall针对不同的应用场合组织对象的操作针对不同的应用场合组织对象的操作售货员售货员商品商品销售销售采购员采购员采购采购把与销售有关把与销售有关
42、的操作组织成的操作组织成销售接口销售接口把与采购有关把与采购有关的操作组织成的操作组织成采购接口采购接口可替换(例如根据销可替换(例如根据销售策略的变化开发一售策略的变化开发一个新的商品类)个新的商品类)接口提供了更灵活的衔接机制接口提供了更灵活的衔接机制接口(接口(interface)是由一组操作所形成的一个集合,它由一个名字和代表其是由一组操作所形成的一个集合,它由一个名字和代表其中每个操作的特征标记构成。中每个操作的特征标记构成。特征标记(特征标记(signature)代表了一个操作,但并不具体地定义操作的实现代表了一个操作,但并不具体地定义操作的实现特征标记特征标记 := (:,:):
43、 interface接口名称接口名称操作操作1()()操作操作n()()表示法表示法(详细方式):(详细方式):接口与类的关系接口与类的关系接口由某些类实现(提供),被另外某些类使用(需要)接口由某些类实现(提供),被另外某些类使用(需要)前者与接口的关系称为前者与接口的关系称为实现实现(realization)后者与接口的关系称为后者与接口的关系称为使用使用(use)interface销售销售查询()查询()售出()售出()售货员售货员商品商品使用使用实现实现同一个接口同一个接口 对实现者而言是对实现者而言是供接口供接口(provided interface) 对使用者而言是对使用者而言是需
44、接口需接口(required interface)表示法表示法(简略方式):(简略方式):托球托球-托座托座使用者使用者提供者提供者提供者的供接口(托球)提供者的供接口(托球)使用者的需接口(托座)使用者的需接口(托座)售货员售货员商品商品销售销售例:例:interface销售销售查询()查询()售出()售出()售货员售货员商品商品在一个类上可以画出它所有的供接口和需接口在一个类上可以画出它所有的供接口和需接口类类供接口供接口需接口需接口一个接口可以由多个类使用,它也可以由多个类实现一个接口可以由多个类使用,它也可以由多个类实现类类B类类D类类A类类E类类C多个类可以共同使用多个类可以共同使用
45、同一个接口同一个接口正如对象的一个操作正如对象的一个操作可以被多个对象调用可以被多个对象调用多个类都可以分别实多个类都可以分别实现同一个接口现同一个接口这里表示它们可以这里表示它们可以相互替换相互替换接口与类的区别接口与类的区别类既有属性又有操作;类既有属性又有操作;接口只是声明了一组操作,没有属性。接口只是声明了一组操作,没有属性。在一个类中定义了一个操作,就要在这个类中真正地实现它;在一个类中定义了一个操作,就要在这个类中真正地实现它;接口中的操作只是一个声明,不需要在接口中加以实现。接口中的操作只是一个声明,不需要在接口中加以实现。类可以创建对象实例;类可以创建对象实例;接口则没有任何实
46、例。接口则没有任何实例。引入接口概念的好处引入接口概念的好处在接口的使用者和提供者之间建立了一种灵活的衔接机制,有在接口的使用者和提供者之间建立了一种灵活的衔接机制,有利于对类、构件等软件成分进行灵活的组装和复用。利于对类、构件等软件成分进行灵活的组装和复用。将操作的声明与实现相分离,隔离了接口的使用者和提供者的将操作的声明与实现相分离,隔离了接口的使用者和提供者的相互影响。使用者只需关注接口的声明,不必关心它的实现;相互影响。使用者只需关注接口的声明,不必关心它的实现;提供者不必关心哪些类将使用这个接口,只是根据接口的声明提供者不必关心哪些类将使用这个接口,只是根据接口的声明中所承诺的功能来
47、实现它,并且可以有多种不同的实现。中所承诺的功能来实现它,并且可以有多种不同的实现。 接口既可用于类图,也可用于构件图,对后者更为重要接口既可用于类图,也可用于构件图,对后者更为重要教材第教材第9章将做进一步介绍章将做进一步介绍接口与多继承的比较接口与多继承的比较接口果真能部分地解决多继承问题吗?接口果真能部分地解决多继承问题吗?interfaceinterface接口接口 A A操作操作A-1A-1()()操作操作A-nA-n()()interfaceinterface接口接口 B B操作操作B-1B-1()()操作操作B-mB-m()()类类 C C类类 E操作操作A-1()()操作操作A
48、-n()()操作操作B-1()()操作操作B-m()()类类 D D操作操作A-1()()操作操作A-n()()操作操作B-1()()操作操作B-m()()类类 A A操作操作A-1A-1()()操作操作A-nA-n()()类类 B B操作操作B-1B-1()()操作操作B-mB-m()()类类 C C操作操作A-1A-1()()操作操作A-nA-n()()操作操作B-1()()操作操作B-m()()类类 E E类类 D D对象之间的四种关系对象之间的四种关系1 1一般一般- -特殊关系特殊关系 又称又称继承继承关系,反映事物关系,反映事物的分类。由这种关系可以形成的分类。由这种关系可以形成一
49、般一般- -特殊结构特殊结构。2 2整体整体- -部分关系部分关系即即聚合聚合关系。反映事物的构关系。反映事物的构成。由这种关系可以形成成。由这种关系可以形成整体整体- -部分结构部分结构。3 3关联关系关联关系对象实例集合(类)上的一个关对象实例集合(类)上的一个关系,其中的元素提供了被开发系统的应用领域中一系,其中的元素提供了被开发系统的应用领域中一组有意义的信息。组有意义的信息。4 4消息关系消息关系 对象之间的动态联系,即一个对对象之间的动态联系,即一个对象在执行其操作时,请求其他对象为它执行某个操象在执行其操作时,请求其他对象为它执行某个操作,或者向其他对象传送某些信息。反映了事物之
50、作,或者向其他对象传送某些信息。反映了事物之间的行为依赖关系。间的行为依赖关系。这些关系形成了类图的关系层这些关系形成了类图的关系层第第8 8章章定义对象间的关系定义对象间的关系概念及术语概念及术语同义词同义词 和和 近义词近义词继承(继承(inheritance)是描述一般类和特殊类之间关系的最传统、是描述一般类和特殊类之间关系的最传统、最经典的术语。有时作为动词或形容词出现。最经典的术语。有时作为动词或形容词出现。一般一般-特殊(特殊(generalization-specialization)含义最准确,而且不含义最准确,而且不容易产生误解,恰切地反映了一般类(概念)和特殊类(概念)之容
51、易产生误解,恰切地反映了一般类(概念)和特殊类(概念)之间的相对关系;也用于描述结构,即一般间的相对关系;也用于描述结构,即一般-特殊结构。缺点是书写特殊结构。缺点是书写和阅读比较累赘。和阅读比较累赘。泛化(泛化(generalization)取取“一般一般-特殊特殊” 的一半,是的一半,是UML的做法的做法。比较简练,但是只反映了问题的一方面。作为关系的名称尚可,。比较简练,但是只反映了问题的一方面。作为关系的名称尚可,说结构是一个说结构是一个“泛化泛化”则很勉强。则很勉强。分类(分类(classification)接近人类日常的语言习惯,接近人类日常的语言习惯, 体现了类的层体现了类的层次
52、划分,也作为结构的名称。在许多的场合被作为一种原则。次划分,也作为结构的名称。在许多的场合被作为一种原则。本书主要采用本书主要采用“一般一般-特殊特殊”这个术语这个术语8.1一般一般-特殊结构特殊结构相关概念:一般类、特殊类、继承、多继承、多态相关概念:一般类、特殊类、继承、多继承、多态语义:语义:“is a kind of ”一般一般-特殊关系(继承关系)是类之间的一种二元关系特殊关系(继承关系)是类之间的一种二元关系是一种是一种基本的模型元素基本的模型元素;由这种关系所形成的结构是一般由这种关系所形成的结构是一般-特殊结构特殊结构是一种是一种复合的模型成分复合的模型成分。人员人员股东股东职
53、员职员顾客顾客股东职员股东职员例:例:这是这是1个一般个一般-特殊结构特殊结构 包含包含5个一般个一般-特殊关系特殊关系特殊类一般类的特征一般类特殊类的特征只要有这些特征必须有这些特征对象实例集合对象实例集合特征集合特征集合理解一般类与特殊类之间的关系定义定义1:如果类如果类A A具有类具有类B B的全部属性和全部操作,而且具的全部属性和全部操作,而且具有自己特有的某些属性或操作,则有自己特有的某些属性或操作,则A A叫做叫做B B的特殊类,的特殊类,B B叫叫做做A A的一般类。一般类与特殊类又称父类与子类。的一般类。一般类与特殊类又称父类与子类。定义定义2 2:如果类如果类A A的全部对象
54、都是类的全部对象都是类B B的对象,而且类的对象,而且类B B中存中存在不属于类在不属于类A A的对象,则的对象,则A A是是B B的特殊类,的特殊类,B B是是A A的一般类。的一般类。书中证明,以上两种定义是等价的书中证明,以上两种定义是等价的一般类和特殊类的两个定义一般类和特殊类的两个定义表示法表示法一般类一般类特殊类特殊类特殊类特殊类集中式集中式一般类一般类特殊类特殊类特殊类特殊类分散式分散式如何发现一般如何发现一般-特殊结构特殊结构(1)学习当前领域的分类学知识)学习当前领域的分类学知识(2)按常识考虑事物的分类)按常识考虑事物的分类(3)根据一般类和特殊类的两种定义)根据一般类和特
55、殊类的两种定义(4)考察属性与操作的适应范围)考察属性与操作的适应范围?公司人员公司人员姓名姓名身份证号身份证号股份股份工资工资 ?公司人员公司人员姓名姓名身份证号身份证号 股东股东股份股份 职员职员工资工资 股东股东姓名姓名身份证号身份证号股份股份 职员职员姓名姓名身份证号身份证号工资工资 股东股东股份股份职员职员工资工资 ?公司人员公司人员姓名姓名身份证号身份证号 (5 5)考虑领域范围内的复用)考虑领域范围内的复用现钞收款机现钞收款机 A A B B C C D D E E F F X X Y Y Z Z收款机收款机A AB BC CX XY Y现钞收款机现钞收款机 D D E E F
56、F Z Z领域构件(1 1)问题域是否需要这样的分类?(例:书)问题域是否需要这样的分类?(例:书线装书)线装书)(2 2)系统责任是否需要这样的分类?(例:职员)系统责任是否需要这样的分类?(例:职员本市职员)本市职员)(3 3)是否符合分类学的常识?(用)是否符合分类学的常识?(用“is a kind of ”is a kind of ”来衡量)来衡量)审查与调整审查与调整(4 4)是否真正的继承了一些属性或操作?)是否真正的继承了一些属性或操作? 飞机飞行高度 自动导航 ? 汽车发动机载重量速度运输运输工具发动机载重量速度 飞机飞行高度 自动导航 汽车运输一般一般- -特殊结构的简化特殊
57、结构的简化(1 1)取消没有特殊性的特殊类)取消没有特殊性的特殊类运输工具发动机载重量速度 飞机飞行高度 自动导航 汽车运输运输工具发动机载重量速度 飞机飞行高度 自动导航 运输(2 2)增加属性简化一般特殊结构)增加属性简化一般特殊结构 人员人员男男 人人女女 人人中国人中国人美国人美国人日本人日本人人员人员性别性别国籍国籍(3 3)取消用途单一的一般类,减少继承层次)取消用途单一的一般类,减少继承层次一般类存在的理由:一般类存在的理由:* * 有两个或两个上以上的特殊类有两个或两个上以上的特殊类* * 需要用它创建对象实例需要用它创建对象实例* * 有助于软件复用有助于软件复用设设 备备型
58、号型号生产厂生产厂开启开启关闭关闭 雷雷 达达安装地点安装地点 监控监控 雷达雷达型号型号生产厂生产厂安装地点安装地点 开启开启关闭关闭监控监控电子设备电子设备激光打印机激光打印机传真机传真机通讯设备设备电子设备计算机设备打印机民用通讯设备激光打印机传真机多继承:多继承:允许一个允许一个特殊类具有一个以上一般类的继承模式特殊类具有一个以上一般类的继承模式多继承特殊类的内部情况在职研究生在职研究生姓名姓名学号学号班级班级专业专业职称职称专业专业在职单位在职单位来自来自“人员人员”类类来自来自“研究生研究生”类类来自来自“教职工教职工”类类本类中显式定义本类中显式定义人员人员姓名姓名教职工教职工职
59、称职称专业专业研究生研究生学号学号班级班级专业专业在职研究生在职研究生在职单位在职单位 例例:命名命名冲突冲突多态多态:多态是指同一个命名可具有不同的语义。多态是指同一个命名可具有不同的语义。OO方法中,方法中,常指在一般类中定义的属性或操作被特殊类继承之后,常指在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。可以具有不同的数据类型或表现出不同的行为。多边形边数顶点数据绘图XY矩形边数*顶点数据*绘图正多边形*顶点数据*绘图例:例:概念:概念:聚合(聚合(aggregation),组合(),组合(composition)整体整体-部分(部分(whole-p
60、art )整体对象,部分对象整体对象,部分对象语义:语义:“a part of”或或“has a”聚合关系描述了对象实例之间的构成情况,然而它的聚合关系描述了对象实例之间的构成情况,然而它的定义却是在类的抽象层次给出的。定义却是在类的抽象层次给出的。从集合论的观点看聚合关系从集合论的观点看聚合关系整体整体-部分关系(聚合关系)部分关系(聚合关系)是两个类之间的二元关系是两个类之间的二元关系,其中一个类的某些对象是另一个类的某些对象的组,其中一个类的某些对象是另一个类的某些对象的组成部分。成部分。整体整体-部分结构部分结构是把若干具有聚合关系的类组织在一起是把若干具有聚合关系的类组织在一起所形成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026内蒙古乌兰察布凉城县消防救援大队招聘3人考试备考试题及答案解析
- 2026江西省建材集团有限公司管理人员岗位招聘1人考试备考试题及答案解析
- 2026湖南株洲市资源投资集团有限公司高端紧缺急需人才猎聘2人考试备考试题及答案解析
- 2026春季中国石油中国昆仑工程有限公司高校毕业生招聘5人考试参考题库及答案解析
- 2026浙江杭州市萧山区人民法院招聘14人笔试备考试题及答案解析
- 2026浙江丽水市残联康复医院招募笔试备考题库及答案解析
- 2026河北承德市宽城满族自治县人力资源和社会保障局招聘公益性岗位人员14人考试参考题库及答案解析
- 2026河南新乡市工程勘察设计协会行政办公专职人员招聘1人笔试参考题库及答案解析
- 2026贵州理工学院第十四届贵州人才博览会引进人才2人考试参考题库及答案解析
- 检验科质量管理体系相关知识测试卷含答案
- 企业环保工作绩效考核方案
- 2026年航空航天基础知识模拟题库
- 肿瘤免疫治疗伦理审查的特殊考量
- 华为财务制度与工作流程
- 激光技术发展
- 宁夏滩羊介绍
- 煤矿事故应急培训课件
- 胸痛CBL的课件教学课件
- 团委书工作面试题集
- 2026年资料员之资料员基础知识考试题库300道含答案(培优a卷)
- 全国园林绿化养护概算定额(2018版)
评论
0/150
提交评论