2015版 第11章 问题域部分的设计
OOD模型设计
OOD模型设计目录1 面向对象设计(OOD)的定义? (3)2 面向对象设计(OOD)与面向对象分析(OOA)的关系? (3)3 面向对象设计(OOD)的特点? (3)4 面向对象设计(OOD)过程以及过程模型? (4)4.1 问题域部分的设计 (6)4.2 人机交互部分的设计 (7)4.3 控制驱动部分的设计 (8)4.4 数据管理部分的设计 (9)4.5 构件及部署部分的设计 (10)1 面向对象设计(OOD)的定义?在面向对象分析阶段,已经针对用户需求建立起用面向对象概念描述的系统分析模型。
在设计阶段,要考虑为实现系统而采用的计算机设备、操作系统、网络、数据库管理系统以及所采用的编程语言等有关因素,进一步运用面向对象的方法对系统进行设计,最后形成一个可以实现的设计模型,即面向对象设计模型。
2 面向对象设计(OOD)与面向对象分析(OOA)的关系?在面向对象分析阶段,针对的是现实世界,把需求转化为面向对象概念所建立的模型,以易于理解问题域和系统责任,最终建立一个映射问题域,满足用户需求,独立于实现的OOA模型,面向对象的设计就是在面向对象分析的基础上运用面向对象方法主要解决与实现有关的问题,目标是产生一个符合具体实现条件的OOD模型。
由于OOD以OOA为基础,且OOA与OOD采用一致的表示法,使得从OOA到OOD不存在转换,只需做必要的修改与调整。
OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,二者能够紧密衔接。
OOA与OOD之间不强调阶段划分,但是OOA与OOD有着不同的侧重点和不同的分工,并因此具有不同的开发过程及具体策略。
“分析”只针对问题域和系统责任,不考虑实现有关的因素,建立一个独立于实现的OOA模型;”设计“则考虑与实现有关的问题,如选用的编程语言、数据库系统和图形用户界面等,建立一个针对具体实现的OOD模型。
3 面向对象设计(OOD)的特点?•以面向对象的分析为基础,一般不依赖结构化分析•与相应的OOA方法共同构成OOA&D方法体系,OOA和OOD采用一致的概念与原则,但属于软件生命周期的不同阶段,有不同的目标和策略•较全面地体现了面向对象方法的概念与原则•大多数OOD方法独立于编程语言,但是具体应用OOD时,则要考虑特定编程语言,因为它通过面向对象的设计所得到的系统模型,要由确定的编程语言实现4 面向对象设计(OOD)过程以及过程模型?在OOA 阶段只考虑问题域和系统责任,在OOD阶段则要考虑与具体实现有关的问题,这样做的目的是•使反映问题域本质的总体框架和组织结构长期稳定,而细节可变•把稳定部分(问题域部分)与可变部分(与实现有关的部分)分开,使得系统能从容地适应变化•有利于同一个分析模型用于不同的设计和实现•支持系统族和相似系统的分析与设计•使一个成功的系统具有超出其生存期的可扩展性为达到上述目的,设计如下的面向对象设计模型从一个侧面观察OOD模型,它包括一个核心部分,即问题域部分;还包括四个外围部分,即人机交互部分、控制驱动部分、数据管理部分以及构件及部署部分。
OOA与OOD
交互界面子系统的设计:与界面有关的类及类间结构的设计,以及有关算法的设计。.
交互界面子系统和应用之间接口的设计。.
应用控制部分的设计:这部分对象主要完成应用的驱动工作。这部分对象不同于从现实
世界中抽象出来的对象,在现实世界和问题域中没有原型,它们同界面子系统中的对象及问题
OOA和OOD方法,Shlaer&Mellor的OOA方法,Rumbaugh的OOAD方法等。不同的方法
体系都分别体现了人们对OOA、OOD,以及面向对象软件开发过程的不同认识。本文的主要
目的就是,试图通过对现有OOA与OOD方法的共性进行纵观分析,弄清二者之间的边界问
题,评析从OOA到OOD过渡的难易,并讨论实现这种过渡所涉及的主要工作。
了理解问题;而在OOD阶段,它们的引入则主要是针对软件的构造和实现。分类结构通过继
承机制来实现,因而代码得到了有效地复用;组装结构则将一些类组合在一起构成较大的软件
构件。
7)OOA并没有考虑对象的产生问题,当其对应的实体在现实世界中出现时,它也就在问
题域中产生了。OOA也不考虑对象属性的取值和服务算法的实现。而在OOD阶段这些问题
要求进行这方面的工作,有的则将它放到设计阶段去完成,这主要是由OOA、OOD阶段划分
的不同所造成的。动态模型一般由一组状态转换图构成,从这组状态转换图可以映射到对象模
型。系统的动态模型从对象行为的角度刻划了系统功能,方便了从OOA到OOD的过渡。有的
方法虽未提供动态模型,但也提供了表示对象行为的类似方法。早期的OOA方法对建立系
什么是OOA/OOD
Object Oriented Analyzing
仓库管理系统设计说明书
仓库管理系统设计说明书发布信息✧作者✧发布范围✧版本✧发布日期修改记录✧发布日期✧版本✧说明✧作者目录1引言 (4)1。
1编写目的 (4)1。
2读者对象 (4)1.3项目背景 (4)1.4参考资料 (4)2系统总体设计 (5)2。
1系统结构模式 (5)2。
2系统运行流程 (5)3系统详细设计 (5)3。
1问题域部分的设计 (6)3.2人机交互部分的设计 (8)3。
3任务管理部分的设计 (12)3.4数据管理部分的设计 (13)1引言●仓库管理系统设计说明书,是在分析中小型企业库存管理流程资料的基础上,根据《仓库管理系统需求说明书》而编写的.●本说明书为2004级军人本科学员《信息系统原理与工程》的课程设计作业产品的一部分,项目由国防科技大学信息系统与管理学院学员四队指挥自动化工程专业课程设计作业第四小组负责组织实施.1。
1编写目的编写该设计说明书的目的是为了给该系统的使用者和开发者提供:●软件总体需求:向用户描述仓库人事管理系统的基本功能.●功能要求和数据结构:开发人员进行详细设计和编码的基础。
●软件综合测试的依据:第三方进行软件测试的指南和参考。
1.2读者对象该设计说明书的读者为:小型企业公司相关人员、项目组成员及辅导教员。
1。
3项目背景软件系统名称:仓库管理系统仓库管理系统是企业信息系统中一个相当重要的组成部分。
仓库管理系统的好坏直接影响企业物流管理效果,并直接影响企业的经济效益。
其主要作用是帮助企业的仓库管理人员建立物料管理账目、规范物料出入库手续、分析库存物料利用及资金占用情况,并为物料采购供应、生产计划、销售部门提供必要的库存数据。
1.4参考资料●张维明,戴长华,陈卫东,信息系统原理与工程,电子工业出版社,北京,2004年7月(第2版).●Curtis HK Tsang, Clarence SW Lau, Ying K Leung, 面向对象技术—-使用VP—UML实现图到代码的转换, 清华大学出版社,北京,2007年2月(第1版)。
ly_新标准C++程序设计教材1120章课后题答案
新标准C++程序设计教材11-20章课后题答案第11章:1.简述结构化程序设计有什么不足,面向对象的程序如何改进这些不足。
答案:结构化程序设计的缺点:(1)用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。
(2)用系统开发每个阶段的成果来进行控制,不适应事物变化的要求。
(3)系统的开发周期长。
面向对象的程序设计如何改进这些不足:面向对象程序设计技术汲取了结构忧程序设计中好的思想,并将这些思想与一些新的、强大的理念相结台,从而蛤程序设计工作提供了一种全新的方法。
通常,在面向对象的程序设计风格中,会将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据与函数。
同时会以某种方式将这些子集分为不同等级,而一个对象就就是已定义的某个类型的变量。
2.以下说怯正确的就是( )。
A、每个对象内部都有成员函数的实现代码B、一个类的私有成员函数内部不能访问本类的私有成员变量C、类的成员函数之间可以互相调用D、编写一个类时,至少要编写一个成员函数答案:C3.以下对类A的定义正确的就是( )。
A.class A{B.class A{private: int v; int v; A * next;public: void Func() {} void Func() {}} };C.class A{ D、class A{int v; int v;public: public:void Func(); A next;}; void Func() {}A::void Func() { } };答案:B4.假设有以下类A:class A{public:int func(int a) { return a * a; }};以下程序段不正确的就是( )。
A.A a; a、func(5);B.A * p = new A; p->func(5);C.A a; A&r =a ; r、func(5);D.A a,b; if(a!=b) a、func(5);答案:D5.以下程序段不正确的就是(A)。
软件工程导论第11章
【还可以把适配接口再进一步细分为转换接口和扩充接口。转换接口, 是为了克服与表示方法、数据结构或硬件特点相关的操作给重用带来 的困难而设计的,这类接口是每个类构件在重用时都必须重新定义的 服务的集合。当使用C++语言编程时,应该在根类(或适当的基类)中, 把属于转换接口的服务定义为纯虚函数。如果某个服务有多种可能的 实现算法,则应该把它当作扩充接口。扩充接口与转换接口不同,并 不需要强迫用户在派生类中重新定义它们,相反,如果在派生类中没 有给出扩充接口的新算法,则将继承父类中的算法。当用C++语言实现 时,在基类中把这类服务定义为普通的虚函数。】
4. 弱耦合 耦合:指一个软件结构内不同模块之间互连的紧 密程度。 在面向对象方法中,对象是最基本的模块,因此, 耦合主要指不同对象之间相互关联的紧密程度。 弱耦合是优秀设计的一个重要标准。
5
对象之间的耦合分为两大类: (1) 交互耦合: 对象之间的耦合通过消息连接来实现。 使交互耦合尽可能松散,应遵守下述准则: 尽量降低消息连接的复杂程度。 应该尽量减少消息中包含的参数个数,降低参数的复 杂程度。 减少对象发送(或接收)的消息数。 (2) 继承耦合 与交互耦合相反,应该提高继承耦合程度。 通过继承关系结合起来的基类和派生类,构成系统中 粒度更大的模块。设计时应该使特殊类尽量多继承并 使用其一般化类的属性和服务,从而更紧密地耦合到 其一般化类。
13
2. 软件成分的重用级别 (1) 代码重用 源代码剪贴:最原始的重用形式。 复制或修改原有代码时可能出错,存在严重的配臵 管理问题,人们几乎无法跟踪原始代码块多次修改 重用的过程。 源代码包含:许多程序设计语言都提供包含库中 源代码的机制。配臵管理问题有所缓解,修改了库 中源代码之后,所有包含它的程序自然都必须重新 编译。 继承:利用继承机制重用类库中的类时,无须修 改已有的代码,就可以扩充或具体化在库中找出的 类,基本上不存在配臵管理问题。
软件工程课本讲解面向对象的OMT方法
化旳动态模型 + 细化旳功能模型。
16
第11章 面向对象的OMT方法
对象模型化技术OMT 对象模型化技术把分析时搜集旳信息构造在三类
模型中,即对象模型、功能模型和动态模型。
这个模型化旳过程是一种迭代过程。
17
第11章 面向对象的OMT方法
图11.4 三元关联 29
第11章 面向对象的OMT方法
角色为关联旳端点,阐明类在关联中旳作用和角 色。不同类旳关联角色可有可无,同类旳关联角色不 能省。角色旳表达如图11.5所示。
教师
讲授
课程
主讲
内容
图11.5 关联旳角色旳表达
30
第11章 面向对象的OMT方法
2) 受限关联
受限关联由两个类及一种限定词构成,限定词是 一种特定旳属性,用来有效地降低关联旳重数,限定 词在关联旳终端对象集中阐明。
技术之上旳,OMT措施旳基础是开发系统旳3个模型,再 细化这3种模型,并优化以构成设计。对象模型由系统中 旳对象及其关系构成,动态模型描述系统中对象对事件旳响应及对 象间旳相互作用,功能模型则拟定对象值上旳多种变换及变换上旳
约束。
6
第11章 面向对象的OMT方法
11.1.2 系统分析
分析旳目旳是拟定一种系统“干什么”旳模型,该模型经过 使用对象、关联、动态控制流和功能变换等来描述。分析过程是 一种不断获取需求及不断与顾客磋商旳过程。
8
第11章 面向对象的OMT方法
3. 构造动态模型
构造动态模型旳环节如下: (1) 准备经典交互序列旳脚本。 (2) 拟定对象间旳事件并为各脚本安排事件跟踪。 (3) 准备系统旳事件流图。 (4) 开发具有主要动态行为旳各个类旳状态图。 (5) 检验状态图中共享事件旳一致性和完整性。 最终得到:动态模型 = 状态图 + 全局事件流图。
面向对象分析模型总结
2
主要原则
(1)抽象 什么叫抽象? OO方法广泛地运用抽象原则,例如: ·系统中的对象是对现实世界中事物的抽象, ·类是对象的抽象, ·一般类是对特殊类的进一步抽象, ·属性是事物静态特征的抽象, ·操作是事物动态特征的抽象。 过程抽象 任何一个完成确定功能的操作序列,其使用者都 可把它看作一个单一的实体,尽管实际上它可能 是由一系列更低级的操作完成的。 数据抽象 根据施加于数据之上的操作来定义数据类型,并 限定数据的值只能由这些操作来修改和观察。
汽车
奖杯
钟表
操作员 职员
天平 楼房 飞机
起重机
23
如何发现参与者 ——考虑人员、设备、外系统
人员—— 系统的直接使用者 直接为系统服务的人员 设备—— 与系统直接相联的设备 为系统提供信息 在系统控制下运行 不与系统相连的设备 × 计算机设备 × 外系统—— 上级系统 子系统 其它系统
24
用况(use case)
7
基本模型——类图 面向对象的建模中最重要、最基本的模型图 集中而完整地体现了面向对象的概念 为面向对象的编程提供了直接、可靠的依据 可以从三个层次来看
对象层
需求模型——用况图 每个用况是一项系统功能使用情况的 说明,把每一类参与者对每一项系统 功能的使用情况确切地描述出来,便 全面地定义了系统的功能需求
数据接口部分设计
构件化与系统部署
向OOP输出OOD模型
12
OOA与OOD的关系
一致的概念与表示法 OOA和OOD采用一致的概念和表示法,从而不存在分析与 设计之间的鸿沟。 不同的内容、目标和抽象层次
OOA:研究问题域和用户需求,运用面向对象的观点发现 问题域中与系统责任有关的对象,以及对象的特征和相互 关系。目标是建立一个直接映射问题域,符合用户需求的 OOA模型。 OOD:在OOA模型基础上,针对选定的实现平台进行系统 设计,按照实现的要求进行具体的设计,目标是产生一个 能够在选定的软硬件平台上实现的OOD模型。 OOA模型:抽象层次较高,忽略了与实现有关的因素 OOD模型:抽象层次较低,包含了与实现平台有关的细节
软件需求分析1-12章作业及部分答案
《软件需求分析》作业第一章需求工程概述1.将下列描述与其相符的术语匹配。
1)问题所存在的现实世界中的那个部分。
2)关注问题域与解系统之间交互的需求工程任务。
3)客户希望在问题域内产生的效果。
4)条理化技术在开发复杂的有用人工制品中的应用。
5)关注解系统内部运作实现的任务。
6)对问题域及需求作调查研究和描述,设计将满足那些需求的解系统的特性并用文档说明。
7)关于解系统所要求的应用范围的知识。
8)在问题域内用以产生想要的效果的系统。
9)关注问题域和存在于其中的问题的需求工程任务。
10)用来处理有关问题域的信息查询的解系统。
●()分析--------------------------------9)●()设计--------------------------------5)●()工程--------------------------------4)●()需求--------------------------------3)●()信息系统--------------------------10)●()需求工程---------------------------2)●()规格说明---------------------------6)●()问题域知识------------------------7)●()问题域(或应用领域)---------1)●()解系统(或应用,机器)------8)以下有许多描述,每一条陈述或者是对问题域的描述,或者指定了一条需求,请按照表1-1确定其类别。
1)当用户选择“修改赛艇详细资料”选项时,系统将提示它们输入赛艇的名字。
(一般需求)2)系统必须用三个主要模块来实现,即检测、记录和统计模块,每个模块各自实现一个主要功能。
(设计约束)3)当电梯在传感器额定位置的垂直方向(之上或之下)20cm范围内,传感器发出一个hi 信号,否则发出一个lo信号。
(问题域描述)4)对于每一艘赛艇,其实际用时定义为比赛开始时间与完成时间之差(以s为单位)。
软件工程导论(第11章)
3. 信息隐蔽
在面向对象方法中,信息隐蔽通过对象的封
装性实现:类结构分离了类的接口与类的实
现,从而支持了信息隐蔽。
4. 弱耦合
弱的耦合可以提高软件模块的独立性,避免 某一部分模块发生变化对其它模块有较大的影 响。
一般来说,对象间的耦合有两大类:
A.交互耦合:对象间的耦合通过信息连接来
实现。应使交互耦合尽量松散。
2. 一般—特殊结构的深度应适当
中等规模的系统中,类等级层次数应保持 为7±2。不是必要情况,不应该随意创建派生类;
3. 设计简单的类:设计小而简单的类,便于
开发和管理;
1)避免包含过多的属性; 2)有明确的定义; 3)尽量简化对象之间的合作关系; 4)不要提供太多服务。
4. 使用简单的协议:设计简单的类接口,发送 的消息中参数要少。 5. 使用简单的服务:编写实现每一个服务时, 避免复杂的语句和结构; 6. 把设计变动减至最小。
2.
两个方向的关联都用属性实现,这种方法能 实现快速访问。
3.
用独立的关联对象实现双向关联。关联对象 不属于相互关联的任何一个类,它是独立的 关联类的实例 。
40
41
4、关联对象的实现
关联对象的实现方法取决于关联的阶数:
一对一关联:
• 关联对象可以与参与关联的任一个对象合并。
一对多关联:
• 关联对象可以与“多”端对象合并。
11.9 设计类中的服务 11.9.1 确定类中应有的服务 11.9.2 设计实现服务的方法
1. 设计实现服务的算法
1)算法复杂度;
2)容易理解、容易实现;
3)容易修改;
2. 选择数据结构 3. 定义内部类和内部操作
第11章 面向问题域的需求分析方法汇总
2019/3/6
21
11.6 问题框架实例间的关系及其组合
交互方面,两个问题框架实例相关本质上 是指它们的机器与机器之间存在由并行的划分 所引发的并发关系,这类似于两个并发进程间 的关系。 形式上两个问题框架实例间的关系可分为 三种类型:无关、具有公共的域、一个问题框 架实例的需求是另一个问题框架实例中的域。
2019/3/6
3
11.1 问题域
需求分析文档、规格说明文档和程序之间的关 系
需 求 分 析 文 档
需 求 规 格 说 明 文 档
程
序
问 题 域
接
口
机 器 域
2019/3/6
4
11.2 问题域的划分
对于复杂问题的分析,一般的做法是采用 “分而治之”的策略。人们一般采用层次式 功能分解的方法。
1. 2.
需求式行为问题框架图
带连接域的需求式行为问题框架图
2019/3/6 9
11.4 问题框架的类型
命令式行为问题框架 思想:存在客观世界的某个部分,其行为 要依据操作者发出的命令来控制。问题是要建 立一个机器,该机器接受操作者的命令并施加 相应控制。
命令式行为问题框架图
2019/3/6 10
11.4 问题框架的类型
特点
将关注的重点定位在问题及其相关的问题 域上,通过对问题及其问题域进行合理的分类, 为分析人员提供解决具体问题的相关指南。同 时从问题域的角度出发,使用户能参与整个需 求过程,有利于更直观和真实地反映问题域的 信息和用户的需求。
2019/3/6
15
11.5 PDOA方法的分析步骤
1. 2. 3.
第 11 章 面向问题域的需求 分析方法
《软件工程》课件第11章 面向对象的OMT方法
1. 问题陈述 问题陈述为记下或获取对问题的初步描述。
第11章 面向对象的OMT方法
2. 构造对象模型 构造对象模型的步骤如下: (1) 确定对象类。 (2) 编制类、属性及关联描述的数据词典。 (3) 在类之间加入关联。 (4) 给对象和链加属性。 (5) 使用继承构造和简化对象类。 (6) 将类组合成模块,这种组合在紧耦合和相关 功能上进行。 最后得到:对象模型=对象模型图+数据词典。
第11章 面向对象的OMT方法
两个类之间的关联称为二元关联,三个类之间的 关联称为三元关联。关联的表示是在类之间画一连线。 图11.3表示了二元关联,图11.4表示一种三元关联, 说明程序员使用计算机语言来开发项目。
第11章 面向对象的OMT方法 图11.3 二元关联
第11章 面向对象的OMT方法 图11.4 三元关联
第11章 面向对象的OMT方法
操作的表示如图11.2底部区域所示,操作名后可跟 参数表,用括号括起来,每个参数之间用逗号分开,参 数名后可跟类型,用冒号与参数名分开,参数表后面用 冒号来分隔结果类型,结果类型不能省略。
2. 关联和链 关联和链是建立对象及类之间关系的一种手段。 1) 关联和链的含义 链表示对象间的物理与概念的联结,如张三为通 达公司工作。关联表示类之间的一种关系,就是一些可 能的链的集合。 正如对象与类的关系一样,对象是类的实例,类是 对象的抽象。而链是关联的实例,关联是链的抽象。
第11章 面向对象的OMT方法
3. 构造动态模型 构造动态模型的步骤如下: (1) 准备典型交互序列的脚本。 (2) 确定对象间的事件并为各脚本安排事件跟踪。 (3) 准备系统的事件流图。 (4) 开发具有重要动态行为的各个类的状态图。 (5) 检查状态图中共享事件的一致性和完整性。 最后得到:动态模型 = 状态图 + 全局事件流图。
面向对象系统分析与设计——超星试题及答案
1・1传统开发方法及存在的问,第一章面向对象方法概论1【单选题】下面关于功能分解法的优点描述错误的是()A、以系统需要提供的功能为中心组织系统B、与模块化编程结合使用后,使开发效率有很大提高C、删除了GoTo语句,使软件能得到有效维护D、具有较强的应对需求变化的能力我的答案:D2【单选题】下面的开发方法能够兼顾功能和数据的是()A、功能分解法B、结构化方法C、信息建模法D、面向对象方法我的答案:D3【填空题】 _____ 开发方法强调对数据的组织,忽略系统功能。
我的答案:第一空:信息建模法4【填空题】功能分解法是以系统需要提供的__________ 中心组织系统。
我的答案:第一空:功能5【判断题】结构化方法采用数据流、加工进行建模,需求变化极易引起两者的变动,进而引起其他数据流和加工的变化。
我的答案:V6【判断题】功能分解法以功能作为系统的构造块,数据组织能力强。
我的答案:X1 【单选题】面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,分析、 设计和实现一个软件系统的方法和过程,尽可能接近于人类认识世界解决问题的方法和过 程。
因此面向对象方法有许多特征,如软件系统是由对象组成的;();对象彼此之间仅能 通过传递消息互相联系;层次结构的继承。
A 、 开发过程基于功能分析和功能分解B 、 强调需求分析重要性C 、 把对彖划分成类,每个对象类都定义一组数据和方法D 、对既存类进行调整我的答案:C2【单选题】一个设计良好的信息系统应具有()的特征A 、 低内聚、低耦合B 、 高内聚、低耦合C 、 高内聚、高耦合D 、低内聚、高耦合我的答案:B3[填空题]面向对象方法通过 ________ 关系表达类之间的静态关系。
我的答案:第一空:关联4【填空题】对象的 _______ 与操作结为一体,成为一个独立不可分的实体,对外屏蔽其内部 细节。
我的答案:第一空:属性5【判断题】面向对象方法比以往的方法更接近人类的日常思维方式,强调运用人类在日常 的逻辑思维中经常采用的思想方法与原则。
软件需求工程 第11章 面向问题域的需求分析方法
问题框架可根据问题域特征、接口特征和需求特征定义一个直观的、可标识的问题类。对于上面所提 及的五类基本问题,可以用五个不同的基本问题框架分别进行描述。 在形式上,一个问题框架类似于一个问题图。 与问题图稍微不同的是,问题框架中对每个域1的类型与共享现象的类型都进行了描述。 问题框架不对应具体问题,其中的组成元素也不具有任何实际的意义。 具体应用一个问题框架于某个实际问题称为实例化该问题框架,实例化后的结果称为问题框架实例。
11ቤተ መጻሕፍቲ ባይዱ4 问题框架的类型
信息显示问题框架的其他两种变体
除带连接域的变体外,信息显示问题框架还有两种常见的变体。第一种变体引进一 个模型域,并将信息显示问题框架用两个子框架表示,其中第一个子框架对现实世界 进行建模,生成一个反映现实世界的模型域; 第二个子框架基于该模型域显示需求 中所要求的信息,如图所示:
11-2 问题域的划分
11-2 问题域的划分
分治策略
对于复杂问题的分析,一般的做法是采用“分而治之”的策略。人们一般采用层次式功能 分解的方法。 1. 确定系统所需的各项功能; 2. 若某些(或个)功能对应于一个足够小的具体实现单元,则由该实现单元直接实现这些 (或个)功能; 3. 否则,把功能分解为一系列子功能,并重复步骤2和3,直到所有子功能可分别对应一个 足够小的具体实现单元。
问题框架是一种模式,它捕获并定义了常见的简单子问题的类型。问题框架的作用类似于设计模式,只 是前者用于问题的分析和描述,后者用于解决方案的设计。
11-4 问题框架的类型
Part3_Chap03问题域部分的设计2014-04-22课件
部
部
分
分
控制驱动部分
3.2 实现条件对问题域部分的影响
1. 编程语言
编程语言对问题域部分的设计影响最大,其中包括两方面的问题:
(1)选定的编程语言可能不支持某些面向对象的概念与原则,例如不 支持多继承或者多态性,此时要根据编程语言的实际表达能力对模 型进行调整,以保证设计模型和源程序的一致。
(2)OOA阶段可能把某些与编程语言有关的对象细节推迟到OOD阶段来 定义,例如对象的创建、删除、复制、转存、初始化等系统行为, 属性的数据类型,和属性和操作的可见性等。编程语言确定之后, 这些问题都要给出完整的解决。
1
1
公司人员
14
3.3.2 设计内容及策略 3.3.2.1 针对编程语言支持能力的调整
(1)对继承的调整
公司人员
方法2:压平
顾主
顾主职员
职员
问题:有什么缺点?
15
3.3.2 设计内容及策略 3.3.2.1 针对编程语言支持能力的调整
(1)对继承的调整
公司人员
顾主
顾主职员
职员
顾主信息
职员信息
16
(1)对继承的调整
5. 界面支持系统
主要影响人机交互部分的设计,但需要与问题域部分进行消息 的传递。
3.3 设计过程
(1)为复用设计与编程的类而增加结构; (2)增加一般类以建立共同协议; (3)按编程语言调整继承; (4)提高性能; (5)为数据存储管理增补属性与服务; (6)为编程方便增加底层成分; (7) 决定关系的实现方式; (8)对例外的处理; (9)编程语言限制了可用的属性类型;
对于需要设计的操作,要从如下几方面进行详细地定义: (1) 按照定义操作的格式: [可见性] 操作名[‘(’参数列表‘)’][‘:’返回类 型] 完善操作的定义。 (2)从问题域的角度,根据其责任,考虑实现操作的算法,即对象是怎 样提供操作的。 (3)若操作有前后置条件或不变式,考虑编程语言是否予以支持。若不 支持,在操作的方法中要予以实现。
问题域部分的设计
OOD过程:设计OOD模型的五个部分问题域部分的设计、人机交互部分的设计、控制流管理部分的设计、数据管理部分的设计、构件部署设计。
前4项不强调次序,每个部分均采用与OOA一致的概念、表示法及活动,但具有自己独特的策略。
进行构件部署设计要在其前面四个部分完成后进行。
2、问题域部分的设计对OOA结果按实现条件进行补充与调整就是问题域部分。
进行问题域部分设计,要继续运用OOA的方法,包括概念、表示法及一部分策略。
不但要根据实现条件进行OOD设计,而且由于需求变化或新发现了错误,也要对OOA的结果进行修改。
本章的重点是对OOA结果进行补充与调整,要强调的是这部分工作主要不是细化,但OOA未完成的细节定义要在OOD完成。
1、为复用类而增加结构2、提高性能3、增加一般类以建立共同协议4、按编程语言调整继承5、转化复杂关联决定关系的实现方式6、调整与完善属性7、构造及优化算法8、决定对象间的可访问性9、定义对象实例10、其他如下针对一些主要的情况讲述如何进行问题域的设计1、为复用类而增加结构如果在OOA识别和定义的类是本次开发中新定义的,而且没有可复用的资源,则需要进一步设计和编程。
如果已存在一些可复用的类,而且这些类既有分析、设计时的定义,又有源程序,那么,复用这些类即可提高开发效率与质量。
可复用的类可能只是与OOA模型中的类相似,而不是完全相同对二者进行修改。
1)如果完全相同,就把可复用的类直接加到问题域,并用{复用}标记所复用的类。
2)如果大于,就把可复用的类直接加到问题域,并用{复用}标记所复用的类,所需要的累再继承它。
3)如果大于,就把可复用的类直接加到问题域,删除可复用类中的多余信息,并用{复用}标记所复用的类。
4)如果相似,按如下方法处理;在算法中还要考虑对例外和特殊情况的处理。
如考虑对输入错误、来自中间件或其它软硬件的错误的消息以及其它例外情况的处理。
在系统较为复杂或需要处理大批量的数据的情况下,若系统在性能上有要求,就要对系统的体系结构和算法进行优化。
第11章(119)
图形设计在计算机应用领域占有很重要的地位,它广 泛应用于计算机辅助设计、计算机辅助制造、医学等领域, 即使是软件本身也越来越多地以图形界面进行人机交互。 各种微机上的C语言都提供了图形处理功能,事实上,各 自的标准库函数中大部分是图形处理函数。不同的C编译 系统,图形功能可能有些差别,相同功能所用的库函数名 也可能不一样,但它们的处理方法基本上是一致的。本章 以Turbo C 2.0作为工作环境,介绍图形程序的设计。
17
11.2 文本模式下的图形处理
在文本模式下,Turbo C提供了一系列屏幕处理函数, 这些函数包含在头文件“conio.h”中。
18
11.2.1 文本模式设置
文本模式的设置可以通过函数textmode()来实现。该函 数的使用格式如下:
textmode(int mode); 其中:参数mode是将要设置的文本模式,可以取的参 数值如表11.1所示。
7
4. MCGA
MCGA的功能与CGA相似,它和CGA部分兼容,但有 些功能又和VGA类似,它有640 × 480像素的2色模式。
8
5. IBM8514
IBM8514适配器有较强的图形功能,最高分辨率可达 1024 × 768像素,有256种颜色。
9
6. EGAMONO
EGAMONO(单色适配器)是一种640 × 350像素单色 显示模式。
34
例11.1 显示彩色文本。
#include <stdio.h> #include <conio.h>
/*将文本模式处理函数头文件包 含进来*/
main()
{ char str[80]="彩色文字"; textmode(C80); textcolor(YELLOW); textbackground(CYAN);
面向对象分析与设计(卓越计划)3.10 第10课 问题域部分的设计-开发类
LOGO
实例:提出用人申请
4.开发类实例(续)
LOGO
1)将概念类图中的类用英文表示产生开发类图<第1次迭代>
4.开发类实例(续)
LOGO
将类拖放到对应的包中
4.开发类实例(续)
LOGO
产生的结果<第1次迭代>
4.开发类实例(续)
LOGO
2)描述类属性
我们研究主要的招聘需求申报表的相关属性
面向对象分析与设计
主讲教师:孔磊
LOGO
上节回顾
LOGO
上次课学习了面向对象设计的基本概念 软件重用 面向对象设计模型 体系结构 本次课将学习问题域部分的设计-开发类
第10课 问题域部分的设计-开发类 LOGO
1 什么是问题域部分的设计? 2 开发类 3 开发类设计方法 4 开发类实例
4.开发类实例(续)
LOGO
9)获取错误提示信息GetErrorMessage 10)返回错误提示信息string 11)错误提示ShowErrorMessage 12)保存
招聘需求申报表Save
13)通知人力资源部主管Mail 14)获取成功提示信息GetSuccessMessage 15)返回成功提示信息string 16)成功提示ShowSuccessMessage
4.开发类实例(续)
LOGO
增加属性后的开发类图为<第1次迭代>
4.开发类实例(续)
LOGO
3)通过顺序图描述类方法 将之前的顺序图中的中文翻译成英文 根据开发的经验修订英文名称
LOGO
4.开发类实例(续)
LOGO
1)请求新招聘需求申报表Get 2)请求新招聘需求申报表doGet 3)返回新招聘需求申报表Page 4)展示招聘需求申报表界面Page_Load 5)输入招聘需求申报表信息Input 6)提交申请Sumbit 7)提交申请Sumbit_Click 8)验证提交的信息Validate
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题域 部分
控制驱动部分
数 据 接 口 部 分
6
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
CCUTSE 2012
11.2 实现条件对问题域部分的影响
编程语言 语言的实现能力 硬件、操作系统及网络设施 对象分布、并发、通信、性能 复用支持 根据复用支持对模型做适当调整,以实现复用 数据管理系统 为实现对象的持久存储,对问题域部分做某些修改 界面支持系统 问题域部分与人机界面之间的消息传输
CCUTSE 2012 广义菱形
9
方法1:简单转换
A B A
1
1
B
或
A
1 1 1
B
1
职员
学员
职员
学员 1
?
在职学员
1 1 1 在职学员
C
C1
(a) 一般方法
C
(c) 不合适的例子
A
汽车 制冷设备 汽车 制冷设备 汽车 制冷设备
A
1 1
冷藏车 冷藏车
或
1 1 1
冷藏车
1
B
C
?
B D
C
D
(b) 合适的例子 (d) 转换产生信息重复
计算机科学与技术专业与软件工程专业
软件建模与分析
2015.9-2015.10
软件建模与分析
第三部分:设计篇
回顾
OOD模型框架
——从两个侧面来描述
从另一侧面看: OOD模型每个部分 如何用OO概念表达? 采用与OOA相同的概念及 模型组织方式
需 求 模 型
类 图
辅 助 模 型
模
型
规
人 机 交 互 部 分
在逻辑上,一个类的对象实例是: 问题域中所有可用这个类描述的实际事物 在物理上,一个类的对象实例可以是: 内存中的对象变量 文件的一个记录,或数据库表的一个元组 一个类的对象实例可以分布到不同的处理机上 对每一台处理机 说明在它之上创建的每一个(或组)内存对象 说明在它之上保存的外存对象 类的对象实例说明: { 处理机:<结点名>{,<结点名>} 内存对象:{<名称>[(n元数组)][<文字描述>]} 外存对象:{<名称>[<文字描述>]} 吉林省优秀课程 长春工业大学精品课程:软件建模与分析 CCUTSE 2012 }
必要时用流程图或者活动图表示
(4)设计表示关联的属性
区分多重性的3种情况,决定属性设置在哪一端
(5)设计表示聚合的属性
区分组合与松散的聚合 对于组合,用嵌套对象实现 对于松散的聚合,采用与关联相同的策略
吉林省优秀课程 长春工业大学精品课程:软件建模与分析 CCUTSE 2012 22
7、定义对象实例
流速调节器
指定流速 ……
« call»
流速探测器
当前流速 ……
流速控制器
指定流速 当前流速 …… 流速调节 流速探测 ……
流速调节 ……
流速探测 取当前流速 ……
合并前
合并后
(4)增加属性以减少重复计算
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
CCUTSE 2012
19
(5)降低算法的计算复杂性 (6)细化对象的分类
问题域 部分
控制驱动部分
数 据 接 口 部 分
约
从一个侧面看: OOD模型包括几个主要部分? 一个核心加三个外围
吉林省优秀课程 长春工业大学精品课程:软件建模与分析 CCUTSE 2012 3
输入OOA模型
OOD 过程
问题域部分设计
人机交互部分设计
控制驱动部分设计
数据接口部分设计
构件化与系统部署
向OOP输出OOD模型
23
8、修改或补充辅助模型及模型规约
包图 类的增减、拆分、合并以及各个类之间关系的变化 顺序图 操作与消息 活动图 操作流程 其他模型图 状态机图、定时图、交互概览图、组合结构图 模型规约 类的属性、操作及其对外关系的修改或细化
吉林省优秀课程 长春工业大学精品课程:软件建模与分析 CCUTSE 2012 24
比
≈
删除多余信息,通过继承而复用
CCUTSE 2012 16
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
例:
可复用的类
«复用» 车辆
序号 厂商 式样 序号认证
问题域部分的类 可复用的类
车辆
车辆 序号 颜色 式样 出厂年月 序号认证
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
序号 厂商 式样 序号认证
方法3:保持分类,剥离多继承信息
人员
不适当的方法增加程序代码
人员 职员 在职学员 学员
1 1 1
1
1 1 1
1 职员 在职学员 学员
职员信息
学员信息
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
CCUTSE 2012
12
(2)取消多态性
多边形
多边形
线条色 线型
线条色 线型 边数 顶点坐标 绘图 填充
二次曲线 二次曲线
绘图 椭圆 抛物线 双曲线
绘图
绘图
绘图
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
CCUTSE 2012
20
(7)将复杂对象化为整体-部分结构
帧
* 1
1
1
背景
前景
显示
显示
5、为数据存储管理增补属性与操作
在数据接口部分设计中介绍
吉林省优秀课程 长春工业大学精品课程:软件建模与分析 CCUTSE 2012 21
CCUTSE 2012
15
3、实现复用的设计策略
如果已存在一些可复用的类,而且这些类既有分析、设 计时的定义,又有源程序,那么,复用这些类即可提高 开发效率与质量。 目标:尽可能使复用成分增多,新开发的成分减少 可 复 用 类 定 义 的 信 息 当 前 所 需 的 类 的 信 息
= < >
直接复用 通过继承复用 删除可复用类的多余信息
CCUTSE 2012
17
4、提高性能
(1)调整对象分布
类A « call» 类B 类A 甲机
甲机 乙机 « send» 类C 乙机 « send» 类B « call» 类C
(2)缩短对象存取时间 设立缓冲区
吉林省优秀课程 长春工业大学精品课程:软件建模与分析 CCUTSE 2012 18
(3)合并通讯频繁的类
吉林省优秀课程 长春工业大学精品课程:软件建模与分析 CCUTSE 2012 7
11.3 设计过程
设计准备
保留OOA文档,复制OOA文档,作为OOD的输入 根据需求的变化和发现的错误进行修改
设计内容与策略
针对编程语言支持能力的调整 增加一般类以建立共同协议 实现复用 提高性能 为实现对象持久存储所做的修改 完善对象的细节 定义对象实例 对辅助模型、模型规约的修改和补充 建立OOD文档与OOA文档的映射
OOA 类与 OOD 类映射表
建立与OOA文档的映射
映射方式 1 =o 1
指出OOA模型中的哪 个(或哪些)类演化 为OOD模型中的哪个 (或哪些)类
1 to m
m to 1
m to m
0 to 1
图 3.13 OOA 类与 OOD 类的映射表 吉林省优秀课程 长春工业大学精品课程:软件建模与分析 CCUTSE 2012
增加其他一般类:提供局部通用的协议 例:提供持久存储及恢复功能
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
CCUTSE 2012
14
例:
Object « 复用»
A 属性 操作
D 属性 操作 1
F 属性 操作
* B 属性 C 属性 操作 E 属性 操作
操作
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
OOA 模型
将OOA模型搬到OOD 作为OOD的基础
问题域 部分
控制驱动部分
数 据 接 口 部 分
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
CCUTSE 2012
5
OOA 模型
编程语言、网络、 操作系统、复用支 持等实现条件
从MDA的 观点看问 题域部分 的产生
OOD过程
人 机 交 互 部 分
吉林省优秀课程 长春工业大学精品课程:软件建模与分析 CCUTSE 2012 8
1、按编程语言调整继承与多态
起因:OOA强调如实地反映问题域,OOD考虑实现问题, 如果语言不支持多继承或多态,就要进行对模型调整 (1)多继承化为单继承
多继承模式
吉林省优秀课程 长春工业大学精品课程:软件建模与分析 狭义菱形
6、完善对象的细节
OOD在OOA模型基础上所做的主要工作,不能用“细化” 二字概括,但细化是不可缺少的
(1)完善与问题域有关的属性和操作
在OOA阶段允许不详尽,OOD必须加以完善
(2)解决OOA阶段推迟考虑的问题,包括:
因封装原则而设立的对象操作 与OOD模型其他部分有关的属性和操作
(3)设计类的每个操作
25
Thanks
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
CCUTSE 2012
10
方法2:重新定义对象类,化解多继承
人员 人员
人员
1
1 1
0..2
职员
学员
0..1 0..1
身份 职员身份 学员身份
在职学员 职员身份 学员身份
吉林省优秀课程 长春工业大学精品课程:软件建模与分析
CCUTSE 2012
11
填充
正多边形 *顶点坐标