面向对象的分析与设计课件-分析篇.ppt
《面向对象的分析与设计课件-分析篇.ppt》由会员分享,可在线阅读,更多相关《面向对象的分析与设计课件-分析篇.ppt(185页珍藏版)》请在三一办公上搜索。
1、第二部分:分析篇,北京大学信息科学技术学院研究生课程面向对象的分析与设计,主讲教师:邵维忠,2,课件说明 这组课件是本人多年来在北京大学讲授“面向对象的分析与设计”课程时制作的,随着该领域理论与技术的发展而逐年改进。目前的最新版本所适应的教材是邵维忠、杨芙清合写的著作面向对象的分析与设计(清华大学出版社2013年1月)。为了促进学术交流和资源共享,现将这套课件无偿提供给国内讲授同类课程的教师和同行,欢迎他们在教学工作中使用或作为参考。课件共包括“基础篇”、“分析篇”和“设计篇”三部分,是按照54学时研究生课程制作的,各位教师可根据自己的授课对象及教学计划,对原课件进行剪裁或重新组织。北京大学信
2、息学院 邵维忠电子信箱:2013年7月2日,3,第5章建立需求模型用况图,5.1 需求分析和系统分析需求分析的确切含义是对用户需求进行分析,旨在产生一份明确、规范的需求定义。OOA的主要内容是研究问题域中与需求有关的事物,把它们抽象为系统中的对象,建立类图。确切地讲,这些工作应该叫做系统分析,而不是严格意义上的需求分析。早期的OOA缺乏一个良好的基础对需求的规范描述。,4,问题域(抽象的来源),OOA模型(类图),抽象,OOA是将问题域中的事物抽象为系统中的对象,5,5.2 基本思路问题的提出:在系统尚未存在时,如何描绘用户需要一个什么样的系统?如何规范地定义用户需求?考虑问题的思路:把系统看
3、作一个黑箱,看它对外部的客观世界发挥什么作用,描述其外部可见的行为。,把内外交互情况描述清楚,就确切地定义了系统的需求,6,系统边界,系统边界:一个系统所包含的所有系统成分与系统以外各种事物的分界线。系统:被开发的计算机软硬件系统,不是指现实系统。系统成分:在OOA和OOD中定义并且在编程时加以实现的系统元素对象,对象,对象,对象,对象,对象,对象,5.3 系统边界与参与者,7,现实世界中的事物与系统之间的关系分四种情况,8,人员系统的直接使用者直接为系统服务的人员设备与系统直接相联的设备为系统提供信息在系统控制下运行不与系统相连的设备 计算机设备 外系统上级系统子系统其它系统,如何发现参与者
4、考虑人员、设备、外系统,9,什么是用况I.Jacobson:用况是通过使用系统功能的某些部分而使用系统的一种具体方式。每个用况包括一个由参与者发动的完整的事件过程。它详细说明了参与者和系统之间发生的交互。因此,一个用况是一个由参与者和系统在一次对话中执行的特定的相关事务序列。全部用况的集合则说明了所有可能存在的系统使用方式。对象技术词典:1对一个系统或者一个应用的一种单一的使用方式所进行的描述。2关于单个参与者在与系统的对话中所执行的处理的行为陈述序列。UML:对系统在与它的参与者交互时所能执行的一组动作序列(包括其变体)的描述。,本书的定义:用况是对参与者使用系统的一项功能时所进行的交互过程
5、的描述,其中包含由双方交替执行的一系列动作。,5.4 用况(use case),10,术语“use case”的准确含义使用情况是对一项系统功能使用情况的一般描述,它对于每一次使用都普遍适应,既不是应用实例,也不是举例说明。因此译为“用况”,而不是“用例”。几点说明:(1)一个用况只描述参与者对单独一项系统功能的使用情况;(2)通常是平铺直叙的文字描述,UML也允许其他描述方式;(3)陈述参与者和系统在交互过程中双方所做的事;(4)所描述的交互既可能由参与者发起也可能由系统发起;(5)描述彼此为对方直接地做什么事,不描述怎么做;(6)描述应力求准确,允许概括,但不要把双方的行为混在一起;(7)
6、一个用况可以由多种参与者分别参与或共同参与。,11,内容与书写格式:名称行为陈述(分左右栏)调用语句控制语句括号或标号,12,如何定义用况,针对单个用况的描述策略:把自己当作参与者,与设想中的系统进行交互。考虑:交互的目的是什么?需要向系统输入什么信息?希望由系统进行什么处理并从它得到何种结果?把上述交互过程描述出来。定义系统中所有的用况:(1)全面地了解和收集用户所要求的各项系统功能,找出所有的参与者,了解与各项功能相关的业务流程;(2)把用户提出的功能组织成适当的单位,每一项功能完成一项完整而相对独立的工作;(3)穷举每一类参与者所使用的每一项系统功能,定义相应的用况;(4)检查用户对系统
7、的各项功能需求是否都通过相应的用况做了描述。,13,参与者,基用况,include,extend,include,用况,基用况,基用况,被包含用况,延伸用况,用况,5.5 用况图,参与者,参与者,模型元素:参与者用况延伸包含泛化,5.5 用况图,14,用况之间的关系包含、延伸、泛化,延伸,包含,问题:延伸与包含的相似性延伸的方向问题“条件”和“延伸点”问题“泛化”问题系统边界问题,15,用况的两种复杂情况1、两个(或多个)参与者共享一个用况不同种类的参与者可能都要使用某一项系统功能,因此它们可能共享同一个用况,16,2、一个用况的执行,可能需要两个(甚至多个)参与者同时与系统交互。,17,用况
8、图的开发过程确定系统边界发现参与者 定义用况 建立用况之间的关系 确定参与者和用况之间的关系 绘制用况图,使用用况图的几条建议最重要的工作是对用况的描述不要过分深入地描述系统内部的行为细节 运用最主要概念,加强用况内容的描述不要陷入延伸与包含、延伸点、泛化等问题的争论和辨别了解用况的局限性主要作用是描述功能需求,5.6 开发过程与建议,18,概念:对象(object)是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和施加于这组属性的一组操作构成。类(class)是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,它由一个类名、一组属性和一
9、组操作构成。类和对象的关系集合与成员,对象是类的实例,第6章 发现对象,定义对象类,6.1 对象和类的概念及其运用,19,主动对象(active object)至少有一个操作不需要接收消息就能主动执行的对象用于描述具有主动行为的事物主动对象的类叫做主动类(active class)被动对象(passive object)每个操作都必须在消息的驱动下才能执行的对象,20,类的语义,OO方法中的类在不同的语境下有两种不同的语义:1.一个类代表由它的全部对象实例所构成的群体日常语言表达中的例子:“公司里有管理人员、技术人员和市场人员”“马路上汽车很多”在OO模型中:每个类都是由它的全部对象实例所构成
10、的集合类代表了它的全部对象实例。,2.一个类代表属于该类的任意一个对象实例从大量的个体中抽象出一个概念,再运用这个概念时就可以代表其中的任何一个个体,例如:“学生有一个学号,属于一个班级,要上课”在OO系统模型中定义了一个类,它就可以代表它的任何一个对象实例,例如:汽车与发动机之间的聚合关系,表示任何一辆汽车都有一台发动机,任何一台发动机都可以装在01辆汽车上,21,在类的抽象层次建模,理由:(1)充分性:模型中一个类描述了它的全部对象实例(2)必要性:个别对象实例不能代表其他对象实例(3)符合人类的思维方式:在概念层次上表达描述事物规律(4)与OOPL保持良好的对应(5)避免建模概念复杂化(
11、6)消除抽象层次的混乱,22,如何运用类和对象的概念,从对象出发认识问题域将问题域中的事物抽象为对象;将具有共同特征的对象抽象为类用类以及它们之间的关系构成整个系统模型;,归纳,23,类 名,压缩方式,类 名,属性名:类型名,操作名(),展开方式,6.2 表示法在模型中用类符号来表示一个类它代表了属于该类的全部对象实例,24,对象名:类名,压缩方式,属性名=值,UML的对象表示法:,细节方式,对象名:类名,25,6.3 发现对象,研究问题域亲临现场深入调查研究直接观察并向用户及相关的业务人员进行调查和交流,考察问题域中各种各样的事物、它们的特征及相互关系 听取问题域专家的见解领域专家包括技术人
12、员、管理者、老职员和富有经验的工人等阅读相关材料阅读各种与问题域有关的材料,学习相关行业和领域的基本知识借鉴以往的系统查阅以往在该问题域中开发过的同类系统的分析文档,吸取经验,发现可以复用的类,26,正确地运用抽象原则对什么进行抽象问题域当前目标系统责任,忽略与系统责任无关的事物只注意与之有关的事物,抽象为系统中的对象 例如:学校的教师、学生、教务员 和 警卫忽略与系统责任无关的事物特征只注意与之有关的特征,抽象为对象的属性或操作 例如:教师的专业、职称 和 身高、体重,正确地提炼对象 例如:对书的不同抽象在图书馆管理系统中以一本书作为一个对象实例在书店管理系统中以一种书作为一个对象实例,27
13、,由系统管理或使用其信息,或者在系统中呈现某些行为的各类人员,由系统管理或使用其信息,或者在系统中呈现某些行为的各类组织,由系统进行管理的各种物品,其他,策略与启发,(1)考虑问题域:,抽象事物,事件,文件,结构,人员,组织,物品,设备,由系统进行管理或控制,或者在系统中呈现某些行为的各种设备,例如:课程、计划、交易、账户,需要长期记忆的事件例如:银行的取款、存款,保险公司的索赔,车辆管理中的驾驶违章,泛指各种表格、档案、证件、票据等文件例如:业务报表,人事档案,身份证,合同,商品订单等 注意三个问题:非基础数据,同一事物的重复描述,多种事物信息组合,从结构得到启发,联想到新的对象,其他一切有
14、助于发现对象的事物,28,(2)考虑系统边界:考察在系统边界以外与系统交互的各类参与者考虑通过那些对象处理这些参与者的交互,人员,设备,外系统,(3)考虑系统责任:检查每一项功能需求是否已有相应的对象提供,发现遗漏的对象,29,审查与筛选,(1)舍弃无用的对象通过属性判断:是否通过属性记录了某些有用的信息?通过操作判断:是否通过操作提供了某些有用的功能?二者都不是无用,30,(2)对象的精简只有一个属性的对象,班级,班主任姓名,1,1,班级班主任姓名,31,(3)与实现条件有关的对象例如:与图形用户界面(GUI)数据管理系统硬件 及操作系统 有关的对象推迟到OOD考虑,32,6.4 对象分类,
15、(1)将对象抽象为类,用类表示它的全部对象(2)审查和调整类的属性或操作不适合该类的全部对象实例例:“汽车”类的“乘客限量”属性进一步划分特殊类属性及操作相同的类经过抽象,差别很大的事物可能只保留相同的特征考虑能否合并为一个类属性及操作相似的类考虑能否提升出一个一般类同一事物的重复描述例:“职员”和“工作证”取消其中一个,33,(3)类的命名类的名字应适合该类(及其特殊类)的全部对象实例反映个体而不是群体使用名词 或 带定语的名词避免市井俚语和无意义的符号使用问题域通用的词汇使用便于交流的语言文字可以用本地文字和英文双重命名,34,属性(attribute)是用来描述对象静态特征的一个数据项。
16、实例属性(instance attribute)和类属性(class attribute)的区别例如:仪表类输入电压、功率及各种规定的质量指标类属性编号、出厂日期、精度等实际性能参数实例属性,第7章 定义对象的属性和操作,7.1 属性和操作,35,操作(operation)是用来描述对象动态特征(行为)的一个动作序列。近义词:方法(method),服务(service)被动操作(passive operation):只有接收到消息才能执行的操作 编程语言中的函数、过程等被动成分主动操作(active operation):不需要接收消息就能主动执行的操作编程语言中的进程、线程等主动成分,36,
17、实现级细节方式,分析级细节方式,7.2 属性和操作的表示法,类 名,属性名:类型名=值,操作名(参数表):返回类型,类 名,属性名:类型名,操作名(),37,7.3 定义属性,(1)策略与启发按常识这个对象应该有哪些属性?人姓名、地址、出生年月在当前的问题域中,对象应该有哪些属性?商品条形码根据系统责任,这个对象应具有哪些属性?乘客手机号码建立这个对象是为了保存和管理哪些信息?物资型号、规格、库存量为实现操作的功能,需要增设哪些属性?传感器(信号采集功能)时间间隔是否需要增加描述对象状态的属性?设备状态 用什么属性表示关联和聚合?课程任课教师,汽车发动机,38,(2)审查与筛选是否体现了以系统
18、责任为目标的抽象例:书重量?是否描述对象本身的特征例:课程电话号码?是否可通过继承得到?是否可从其他属性直接导出?,(3)推迟到OOD考虑的问题规范化问题对象标识性能问题,(4)属性的命名与定位命名:原则与类的命名相同定位:针对所描述的对象适合类(及其子类)的全部对象实例,39,(1)对象行为分类系统行为例:创建、删除、复制、转存对象自身的行为算法简单的操作例:读、写属性值对象自身的行为算法复杂的操作计算或监控,7.4 定义操作,40,考虑系统责任有哪些功能要求在本对象提供?考虑问题域对象在问题域对应的事物有哪些行为?分析对象状态对象状态的转换是由哪些操作引起的?追踪操作的执行路线模拟操作的执
19、行,并在整个系统中跟踪,(3)策略与启发,41,审查对象的每个操作是否真正有用是否直接提供系统责任所要求的某项功能?或者 响应其它操作的请求间接地完成这种功能的某些局部操作?调整取消无用的操作审查操作是不是高内聚的一个操作应该只完成一项单一的、完整的功能调整拆分 或 合并,(3)审查与调整,42,考虑问题域对象行为是被引发的,还是主动呈现的?,(4)认识对象的主动行为,操作执行路线逆向追踪,与参与者直接交互的对象操作,43,问题:分析阶段为什么要给出操作流程?关于OOA/OOD分工的两种不同观点,(5)操作过程描述可采用流程图或活动图,yes,no,动作陈述框,在框内填写要执行的动作。,条件判
20、断框,给出一个判断条件。,转接,用于连接各个框,表示它们之间的转接关系。,入口/出口标记,指出操作的开始或结束。,流程图:,活动图:在流程图基础上进行了一些扩展,有更强的描述能力(第9章介绍),44,命名:动词或动宾结构定位:与实际事物一致例:售货员售货,商品售出在一般-特殊结构中的位置适合类的全部对象实例,(6)操作的命名和定位,从主语-谓语-宾语结构看对象操作的设置“售货员销售商品”操作应该放在哪里?,45,7.5 接口的概念及用途,早期的面向对象方法并没有把接口作为正式的OO概念 和系统成分,只是用来解释OO概念“操作是对象(类)对外提供的访问接口”20世纪90年代中后期,接口才作为一种
21、系统成分出现在OOPL中,并且被UML作为一种模型元素UML对接口的定义及解释:“接口(interface)是一种类目(classifier),它表示对一组紧凑的公共特征和职责的声明。一个接口说明了一个合约;实现接口的任何类目的实例必须履行这个合约。”“一个给定的类目可以实现多个接口,而一个接口可以由多个不同的类目来实现。”,46,为什么引入接口的概念,47,接口(interface)是由一组操作所形成的一个集合,它由一个名字和代表其中每个操作的特征标记构成。特征标记(signature)代表了一个操作,但并不具体地定义操作的实现特征标记:=(:,:):,interface接口名称操作1()操
22、作n(),表示法(详细方式):,48,接口与类的关系接口由某些类实现(提供),被另外某些类使用(需要)前者与接口的关系称为实现(realization)后者与接口的关系称为使用(use),interface销售查询()售出(),售货员,商品,使用,实现,同一个接口 对实现者而言是供接口(provided interface)对使用者而言是需接口(required interface),49,表示法(简略方式):托球-托座,使用者,提供者,提供者的供接口(托球)使用者的需接口(托座),50,在一个类上可以画出它所有的供接口和需接口,类,供接口,需接口,一个接口可以由多个类使用,它也可以由多个类实
23、现,类B,类D,类A,类E,类C,多个类可以共同使用同一个接口正如对象的一个操作可以被多个对象调用,多个类都可以分别实现同一个接口这里表示它们可以相互替换,51,接口与类的区别类既有属性又有操作;接口只是声明了一组操作,没有属性。在一个类中定义了一个操作,就要在这个类中真正地实现它;接口中的操作只是一个声明,不需要在接口中加以实现。类可以创建对象实例;接口则没有任何实例。,引入接口概念的好处在接口的使用者和提供者之间建立了一种灵活的衔接机制,有利于对类、构件等软件成分进行灵活的组装和复用。将操作的声明与实现相分离,隔离了接口的使用者和提供者的相互影响。使用者只需关注接口的声明,不必关心它的实现
24、;提供者不必关心哪些类将使用这个接口,只是根据接口的声明中所承诺的功能来实现它,并且可以有多种不同的实现。,接口概念对描述构件之间的关系具有更重要的意义教材第9章将做进一步介绍,52,接口与多继承的比较接口果真能部分地解决多继承问题吗?,interface接口 A操作A-1()操作A-n(),interface接口 B操作B-1()操作B-m(),类 C,操作A-1()操作A-n()操作B-1()操作B-m(),53,对象之间的四种关系1一般-特殊关系 又称继承关系,反映事物的分类。由这种关系可以形成一般-特殊结构。2整体-部分关系即聚合关系。反映事物的构成。由这种关系可以形成整体-部分结构。
25、3关联关系对象实例集合(类)上的一个关系,其中的元素提供了被开发系统的应用领域中一组有意义的信息。4消息关系 对象之间的动态联系,即一个对象在执行其操作时,请求其他对象为它执行某个操作,或者向其他对象传送某些信息。反映了事物之间的行为依赖关系。,这些关系形成了类图的关系层,第8章定义对象间的关系,54,概念同义词 和 近义词继承(inheritance)是描述一般类和特殊类之间关系的最传统、最经典的术语。有时作为动词或形容词出现。一般-特殊(generalization-specialization)含义最准确,而且不容易产生误解,恰切地反映了一般类(概念)和特殊类(概念)之间的相对(二元)关
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 分析 设计 课件
链接地址:https://www.31ppt.com/p-6034383.html