问题域部分的设计

合集下载

OOD模型设计

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
。主要工作包括:.
交互界面子系统的设计:与界面有关的类及类间结构的设计,以及有关算法的设计。.
交互界面子系统和应用之间接口的设计。.
应用控制部分的设计:这部分对象主要完成应用的驱动工作。这部分对象不同于从现实
世界中抽象出来的对象,在现实世界和问题域中没有原型,它们同界面子系统中的对象及问题
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

OOD模型-旅游信息管理系统

OOD模型-旅游信息管理系统

OOD模型-旅游信息管理系统OOD 部分一一: 问题域部分系统中涉及到一些永久对象需要保存,另外,为了实现对象的保存和恢复,为系统设置了一个新的“对象存取器”类。

“对象存取器”可以根据对象所在地类,将对象的信息保存到同名的数据库表中。

“对象存取器”类统一负责所有对象的保存和恢复。

由于每个类请求保存、请求恢复的语句语法上都是相同的,设置了一个高层的类“永久对象”类,它提供统一的协议,有各个需要在数据库存储其对象实例的类继承。

二二: 数据接口部分本系统数据结构设计主要采用关系式数据库模型。

但因为系统中的有旅游景点和路线的图片两个类,对象都是图片,所以这两个类采用文件系统。

对于设计过程中发现的各对象及其之间的关系进行分析之后,构造出本系统的基本E-R 图。

图中说明了数据结构中各对象间的逻辑关系。

景点1n旅游团游客服务人员酒店、餐馆、特色商店事故活动计划业绩记录业绩统计选择路线1n包含1n属于属于制定1n1n包含属于改变参照活动属于负责111nn11n111n1n属于n1系统分布设计与子系统划分1) 表示层服务:旅游景点信息管理网页服务(所有人)旅游路线信息管理网页服务(限管理层人员,员工)旅游组团业务管理网页服务(限管理层人员,员工)组团活动计划管理网页服务(限管理层人员,员工)组团游客登记管理网页服务(限管理层人员权限)旅游情况登记统计分析管理网页服务(限管理层人员)带团人员业绩记录管理网页服务(限管理层人员,员工)2) 数据存储服务旅游景点信息管理的数据库操作服务旅游路线信息管理的数据库操作服务旅游组团业务管理的数据库操作服务组团活动计划管理的数据库操作服务组团游客登记管理的数据库操作服务旅游情况登记统计分析管理的数据库操作服务带团人员业绩记录管理的数据库操作服务关系数据库中建立的表;使用关系数据库存储数据,为系统中的类建立相应的数据库表,实现从类图到数据库的映射。

具体数据库表设计如下: 2.1 景点信息表Attraction table 列名数据类型长度说明是否为空Attractions_ID Int 8主码F 表示层存储层旅游景点信息管理的数据库操作服带团人员业绩记录管理服务旅游路线信息管理的数据库操作服旅游景点信息管理服务旅游路线信息网页服务旅游组团业务网页服务组团活动计划网页组团游客登记网页服务旅游情况登记分析旅游组团业务管理的数据库操作服组团活动计划管理的数据库操作服组团游客登记管理的数据库操作服旅游情况登记统计分析管理的数据带团人员业绩记录管理的数据库操Attractions_NAME strig 50F Attractions_MAP strig 100F Attractions_CITY strig 50F Attractions___CTION strig 200F Attractions_TOP boolF Attractions_CAR boolF2.2 路线信息表Line table 列名数据类型长度说明是否为空Line_ID int 4 主码F Line_NAME string 50F Line_MAP string 100F Line_DAYS int 4F Line___MENT string 200F Line___RT string 100F Line_DINING __N string 50F Line_STAY PLACE string 50F Line_COSTS flaot 8F Line___T string 20F Line_NOT __ __IONS string 200F Line___N FOR __S string 100F Line___ string 50F Line_TEL string 20F Line_TOP boolF Line_CAR BoolF2.3 酒店信息表Hotel table 列名数据类型长度说明是否为空Hotel_ID int 4 主码F Hotel_NAME string 50F Hotel___ string 50F Hotel_ROOM STYE string 50F Hotel_STARS ushortF Hotel_PRICE float 8F Hotel_TIME string 50F2.4 餐馆信息表Restaurant table 列名数据类型长度说明是否为空Restaurant_ID int 4 主码 F Restaurant_NAME string 50F Restaurant_ADRESS string 100F Restaurant_PRICE string 50F Restaurant_TIME string 50F2.5 特色商店信息表Shop table 列名数据类型长度说明是否为空Shop_ID int 4 主码 F Shop_NAME string 50F Shop___ string 50F Shop_ __CTION string 200F2.6 票务查询表Ticket Inquire table 列名数据类型长度说明是否为空TicketInquire_ __RT string 50 主码F Ticket Inquire___RE string 50F Ticket Inquire___TION string 50F Ticket Inquire_TIME string 50F2.7 组团信息表Group regiment table 列名数据类型长度说明是否为空Group regiment_ID int 4 主码 F Plan_ID int 4F Businessmanagement_ID int4F Group regiment_START DATE string 50F Group regiment___E TIME string 50FGroup regiment_ACTUAL TIME string 50F Line_ID int 4F Group regiment_NUMBER int 4F Group regiment___ NUMBER int 4F ServicePeople_NUMBER Int 42.8 活动计划表Plan table 列名数据类型长度说明是否为空Plan_ID int 4 主码F Plan_STAGE ID int 4F Plan_ START DATE string 50F Plan_ __E TIME string50F Plan_ ACTUAL TIME string50F Plan_ __MENT string 50F Hotel_NAME string 50F Restaurant_NAME string50F Plan_ __ string50F Plan_TEL string 50F Plan_BUDGET flaot8F 2.9 业务管理表Businessmanagement table列名数据类型长度说明是否为空Business management_ID int 4 主码F Service people_ID int 4F Group regiment_ID int 4F Plan_ID Int 4F Service people_ROLE string50F2.10 员工信息表Service people table 列名数据类型长度说明是否为空Service people_ID int 4 主码F Service people_NAME string 50F Service people_SEX boolF Service people_AGE short 4FService people_NATION string 50F Service people_ID CARD string 50F Service people_TEL string 50F Service people___CTION string 50F Service people_ROLE string 50F2.11 游客信息表Visitor table 列名数据类型长度说明是否为空Visitor _ID int 4 主码F Visitor _NAME string 50F Visitor _SEX boolF Visitor _AGE Short 4F Visitor _NATION string 50F Visitor _ID CARD string 50F Visitor___T NUMBER string 50F Visitor _TEL String 50F Visitor _BODY __ON string 100F Visitor _DEMAND __RLY string 200F Group_ID Int 4Is_PAID bool2.12 旅游情况表Tourtable 列名数据类型长度说明是否为空Group regiment_ID int 4 主码 F Tour_TYPE string 10Tour_SIZEVisitor _ID int 4F Tour_ACCUSE __TION string 50F Tour_PRAISE __TION string 50F Tour___T __TION string 100F Tour___IVE boolF Service people_ROLE string 50F Tour_STAGE string 50F Businessmanagement_ID int 4F Tour___T NUMBER int 4F2.13 业绩记录表Achievement note table 列名数据类型长度说明是否为空Service people_ID int 4 主码F Group regiment_ID int 4F Tour___T NUMBER int 4F Achievement note_RESULT string 50F Achievement note_ADD int 4F Achievement note_CUT int 4F2.14 业绩统计表Achievement count table 列名数据类型长度说明是否为空Service people_ID int 4 主码 F Achievement count_ __N int 4F Achievement count_ START DATE string 50F Achievement count_ __E DATE string 50F Achievement count___F2.15 管理员表Administrator table 列名数据类型长度说明是否为空Administrator_ID int 4 主码 F Administrator___ string 50。

仓库管理系统设计说明书

仓库管理系统设计说明书

仓库管理系统设计说明书发布信息✧作者✧发布范围✧版本✧发布日期修改记录✧发布日期✧版本✧说明✧作者目录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版)。

电子商务系统分析与设计作业参考答案

电子商务系统分析与设计作业参考答案

《电子商务系统分析与设计》作业一答案一、名词解释1.广义电子商务是指企业利用Web进行的全部商务活动,包括电子交易、客户管理、物资调配、企业内部商务活动(如生产、管理、财务等)和企业间的商务活动,是企业利用电子手段实现各种商务活动及其运作管理的整个过程。

2.企业系统规划法是一种对企业管理信息系统进行规划和设计的结构化方法,它也是从企业目标入手,自上而下地识别系统目标,识别企业过程,识别数据类,逐步将企业目标转化为电子商务系统的目标和结构,然后自下而上设计系统,以支持企业目标的实现。

3. 数据字典:一个定义应用程序中使用的所有数据元素和结构的含义、类型、数据大小、格式、度量单位、精度以及允许取值范围的共享数据仓库。

4.面向对象分析方法:一种系统建模技术,它从系统的组成来进行分解,对问题进行自然分割,利用类和对象作为基本构造单元,以接近人类思维的方式建立问题域模型,使设计出的软件尽可能直接描述现实世界。

5.UML(统一建模语言):UML是用来对软件系统进行可视化建模的一种语言,是进行需求分析和概要设计的建模语言,UML为面向对象开发系统的产品进行说明、可视化和编制文档的一种标准语言。

二、填空题1.企业内部网Intranet2. 关键成功因素法,企业系统规划法3.树状因果图4.完备性检验,一致性检验,无冗余检验5.技术可行性,经济可行性6.成本,效益7.表示层,应用逻辑层8.计划与控制过程,产品与服务过程9.雏形阶段,发展阶段10. 概念模型三、选择题:1. B2. C3. B4. C5. B6. A7. D8. A9. A 10.C四、简答题1.电子商务系统的特点是什么?(1)是支持企业商务活动整个过程的技术平台(2)是企业业务流程重构、价值链增值的技术平台(3)采用B/S架构,提供基于WEB的分布式服务(4)对安全提出了很高要求(5)大多是依托企业原有信息资源运行的系统2.什么是电子商务系统规划?答:电子商务系统规划是指以企业实施电子商务为目标,制定企业的电子商务发展战略,给出企业未来的商务和盈利模式以及商务模型,并设计支持这种模型的体系结构,构造技术解决方案,确定实施步骤、时间安排和人员组织,最后评估系统建设的开销和收益,进行可行性分析并给出可行性研究报告。

现代设计方法

现代设计方法

③统一的产品信息模型
统一的产品信息模型是实施并行设计的基础,产品设计过 程是一个产品信息由少到多、由粗到细不断创作、积累和完 善的过程,这些信息不仅包含完备的几何形状、尺寸信息, 而且包含精度信息、加工工艺信息、装配工艺信息、成本信 息等。二维几何模型显然不能满足这一要求,仅包含几何信 息的三维模型也不能满足这一要求。因此,并行设计的产品 信息模型应能将来自不同部门、不同内容、不同表述形式、 不同抽象程度、不同关系、不同结构的产品信息包容在一个 统一的信息模型之中。质量、降低设计制造成本,而逐步形 成和建立起来的新的设计思想和策略方法。
为了缩短产品开发时间,人们首先从“硬件”入手:通 过装备更先进的加工设备来提高加工效率,用计算机代替人 工设计来提高设计效率。在取得了预期的效果后,人们又进 而认识到:要想大幅度地缩短产品开发时间,还要从研究和 改进产品开发过程本身入手,建立新的产品开发策略思想。
什么是模块?所谓模块,指一组具有同一功能和接合要素 (指联接部位的形状、尺寸、联接件间的配合或啮合等), 但性能、规格或结构不同却能互换的单元。
机床卡具、联轴器可称为模块,有些零部件如插头、插座, 广义上也可称为模块,但不如称为标准件更好。在模块化设 计中,也用到大量的标准件,但模块多指标准件之外、仍需 被设计而又可以用于不同的组合、从而形成具有不同功能的 设备的单元。
模块化设计,指在对产品进行市场预测、功能分析的基础 上,划分并设计出一系列通用的功能模块;根据用户的要求, 对这些模块进行选择和组合,就可以构成不同功能、或功能 相同但性能不同、规格不同的产品。这种设计方法称为模块 化设计。
(2)模块化设计的主要方式
① 横系列模块化设计。不改变产品主参数,利用模块发 展变形产品。这种方式是易实现,应用最广。通常是在基型 品种上更换或添加模块,形成新的变形品种。

面向对象分析方法

面向对象分析方法1/2面向对象分析方法(Object-Oriented Analysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。

OOA与结构化分析有较大的区别。

OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。

OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。

在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。

分类结构就是所谓的一般与特殊的关系。

组装结构则反映了对象之间的整体与部分的关系。

OOA在定义属性的同时,要识别实例连接。

实例连接是一个实例与另一个实例的映射关系。

OOA在定义服务的同时要识别消息连接。

当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。

OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。

OOD模型由4个部分组成。

它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。

一、OOA的主要原则。

(1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。

抽象是形成概念的必须手段。

抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。

第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。

抽象是面向对象方法中使用最为广泛的原则。

抽象原则包括过程抽象和数据抽象两个方面。

过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。

数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。

面向对象分析模型总结


2
主要原则
(1)抽象 什么叫抽象? OO方法广泛地运用抽象原则,例如: ·系统中的对象是对现实世界中事物的抽象, ·类是对象的抽象, ·一般类是对特殊类的进一步抽象, ·属性是事物静态特征的抽象, ·操作是事物动态特征的抽象。 过程抽象 任何一个完成确定功能的操作序列,其使用者都 可把它看作一个单一的实体,尽管实际上它可能 是由一系列更低级的操作完成的。 数据抽象 根据施加于数据之上的操作来定义数据类型,并 限定数据的值只能由这些操作来修改和观察。
汽车
奖杯
钟表
操作员 职员
天平 楼房 飞机
起重机
23
如何发现参与者 ——考虑人员、设备、外系统
人员—— 系统的直接使用者 直接为系统服务的人员 设备—— 与系统直接相联的设备 为系统提供信息 在系统控制下运行 不与系统相连的设备 × 计算机设备 × 外系统—— 上级系统 子系统 其它系统
24
用况(use case)
7
基本模型——类图 面向对象的建模中最重要、最基本的模型图 集中而完整地体现了面向对象的概念 为面向对象的编程提供了直接、可靠的依据 可以从三个层次来看
对象层
需求模型——用况图 每个用况是一项系统功能使用情况的 说明,把每一类参与者对每一项系统 功能的使用情况确切地描述出来,便 全面地定义了系统的功能需求
数据接口部分设计
构件化与系统部署
向OOP输出OOD模型
12
OOA与OOD的关系
一致的概念与表示法 OOA和OOD采用一致的概念和表示法,从而不存在分析与 设计之间的鸿沟。 不同的内容、目标和抽象层次
OOA:研究问题域和用户需求,运用面向对象的观点发现 问题域中与系统责任有关的对象,以及对象的特征和相互 关系。目标是建立一个直接映射问题域,符合用户需求的 OOA模型。 OOD:在OOA模型基础上,针对选定的实现平台进行系统 设计,按照实现的要求进行具体的设计,目标是产生一个 能够在选定的软硬件平台上实现的OOD模型。 OOA模型:抽象层次较高,忽略了与实现有关的因素 OOD模型:抽象层次较低,包含了与实现平台有关的细节

面向对象分析与设计

《面向对象的分析与设计》是2013年清华大学出版社出版的图书,作者是邵维忠、杨芙清。

本书是一本全面论述面向对象分析与设计方法的专著。

全书分为3部分。

第一部分为基础篇,论述面向对象方法的基本思想和主要概念,对不同的分析与设计方法进行综述,对统一建模语言(UML)和本书提出的方法做概要介绍。

第二部分为分析篇,详细介绍面向对象分析的全过程,围绕面向对象建模中的需求模型(用况图)、基本模型(类图)、辅助模型(包图、顺序图、活动图以及其他各种UML模型图)和模型规约,对面向对象的分析进行深入讨论,给出详细的过程指导和工程策略,并对相关的UML内容做较详细的介绍。

第三部分为设计篇,介绍如何在面向对象分析模型基础上,针对具体的实现条件进行面向对象的系统设计,包括问题域部分、人机交互部分、控制驱动部分和数据接口部分4个主要部分的设计,最后介绍如何进行构件化与系统部署。

第一部分基础篇第1章面向对象方法概论31.1 什么是面向对象31.2 从认识论看面向对象方法的形成51.2.1 软件开发--对事物的认识和描述51.2.2 语言的鸿沟51.2.3 编程语言的发展使鸿沟变窄51.2.4 软件工程学的作用81.2.5 面向对象是软件方法学的返璞归真121.3.1 对象131.3.2 类141.3.3 封装161.3.4 继承171.3.5 聚合181.3.6 关联201.3.7 消息211.3.8 多态性221.3.9 其他221.3.10 术语对照241.4 面向对象方法的历史及现状261.4.1 历史261.4.2 发展到软件生存周期全过程271.4.3 渗透到计算机软件的各个领域30第2章不同的分析与设计方法332.1 功能分解法332.2 结构化方法342.3 信息建模法35目录面向对象的分析与设计2.4 面向对象方法362.4.1 什么是OOA362.4.2 什么是OOD372.4.4 几种典型的面向对象方法41 2.4.4.1 Booch方法432.4.4.2 Coad/Yourdon方法452.4.4.3 Jacobson方法482.4.4.4 Rumbaugh方法52第3章统一建模语言UML简介56 3.1 UML的背景与发展历史563.2 UML1概况583.2.1 UML1规范的主要组成部分58 3.2.2 语言体系结构和定义方式59 3.2.3 UML1的各种图和扩展机制62 3.3 UML2概况663.3.1 从UML1到UML2663.3.2 UML2的4个规范673.3.2.1 UML基础结构673.3.2.2 UML上层结构683.3.2.3 对象约束语言693.3.2.4 UML图交换703.3.3 UML2的各种图70第4章本书的OOA&D方法概貌74 4.1 引言744.2 主要概念744.2.1 主要模型元素754.2.2 面向对象建模的主要原则764.3 模型及其规约804.3.1 基本模型--类图804.3.2 需求模型--用况图814.3.3 辅助模型--其他各种图824.3.4 模型规约824.3.5 OOA模型框架OOA模型框架834.3.6 OOD模型框架OOD模型框架834.4 建模过程854.4.1 OOA过程854.4.2 OOD过程874.5 OOA与OOD的关系884.5.1 一致的概念与表示法884.5.2 不同的目标、内容和抽象层次894.5.3 在软件生存周期中的位置904.5.4 两种不同的分工观点904.5.5 从模型驱动的体系结构看OOA与OOD的关系92第二部分分析篇第5章建立需求模型--用况图975.1 需求分析和系统分析97 5.2 基于用况的需求分析基本思路985.3 系统边界与参与者98 5.3.1 系统边界985.3.2 参与者995.4 用况1015.4.1 什么是用况1015.4.2 用况的内容与格式103 5.4.3 如何定义用况104 5.5 用况图105。

OOA分析方法

面向对象分析方法(Object-Oriented Analysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。

OOA与结构化分析有较大的区别。

OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。

OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。

在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。

分类结构就是所谓的一般与特殊的关系。

组装结构则反映了对象之间的整体与部分的关系。

OOA在定义属性的同时,要识别实例连接。

实例连接是一个实例与另一个实例的映射关系。

OOA在定义服务的同时要识别消息连接。

当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。

OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。

OOD模型由4个部分组成。

它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。

一、OOA的主要原则。

(1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。

抽象是形成概念的必须手段。

抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。

第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。

抽象是面向对象方法中使用最为广泛的原则。

抽象原则包括过程抽象和数据抽象两个方面。

过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。

数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第六章问题域部分的设计一、什么是面向对象设计1、OOA与OOD的关系:1 )面向对象的设计就是在OOA的基础上运用面向对象方法,主要解决与现实有滚得问题,目标是产生一个符合现实条件的OOD模型。

与现实条件有关的因素有:图形用户系统、硬件、操作系统、网络、数据管理系统和编辑语言等。

2 )由于OOD以OOA模型为基础且OOA与OOD采用一致的表示方法,这使得从OOA到OOD不存在转换,只需做必要的修改和调整,或补充某些细节,并增加几个与现实关联的相独立部分即可。

因此OOA与OOD之间不存在分析与设计的鸿沟,二者能紧密衔接,大大降低了从OOA与OOD的难度、工作量和出错频率。

3 )OOA主要针对问题域,识别有关的对象以及它们之间的关系,产生一个映射问题域,满足用户需求,独立于实现的OOA模型。

OOD主要解决与实现有关的问题,基于OOA模型,针对具体的软、硬件条件(如机器、网络、OS、GUI、DBMS等)产生一个可实现的OOD模型。

2、OOD模型和过程在OOA阶段只考虑问题域和系统操作责任,在OOD阶段要考虑与具体实现的问题。

图6-1 OOD模型从一个侧面观察OOD模型包括五个主要部分——一个核心部分加四个外围部分问题域部分、人机交换部分、控制驱动部分、数据管理部分、构建及部署部分从另一侧面观察OOD模型每个部分仍采用OOA的概念和表示方法,只是在辅助模型中要增加分别于描述构件模型和部署的构件图和部署图。

OOD过程:设计OOD模型的五个部分问题域部分的设计、人机交互部分的设计、控制流管理部分的设计、数据管理部分的设计、构件部署设计。

前4项不强调次序,每个部分均采用与OOA一致的概念、表示法及活动,但具有自己独特的策略。

进行构件部署设计要在其前面四个部分完成后进行。

二、问题域部分的设计对OOA结果按实现条件进行补充与调整就是问题域部分。

进行问题域部分设计,要继续运用OOA的方法,包括概念、表示法及一部分策略。

不但要根据实现条件进行OOD设计,而且由于需求变化或新发现了错误,也要对OOA的结果进行修改。

本章的重点是对OOA结果进行补充与调整,要强调的是这部分工作主要不是细化,但OOA未完成的细节定义要在OOD完成。

1、为复用类而增加结构2、提高性能3、增加一般类以建立共同协议4、按编程语言调整继承5、转化复杂关联决定关系的实现方式6、调整与完善属性7、构造及优化算法8、决定对象间的可访问性9、定义对象实例10、其他如下针对一些主要的情况讲述如何进行问题域的设计1、为复用类而增加结构如果在 OOA识别和定义的类是本次开发中新定义的,而且没有可复用的资源,则需要进一步设计和编程。

如果已存在一些可复用的类,而且这些类既有分析、设计时的定义,又有源程序,那么,复用这些类即可提高开发效率与质量。

可复用的类可能只是与OOA模型中的类相似,而不是完全相同对二者进行修改。

1)如果完全相同,就把可复用的类直接加到问题域,并用{复用}标记所复用的类。

2)如果大于,就把可复用的类直接加到问题域,并用{复用}标记所复用的类,所需要的累再继承它。

3)如果大于,就把可复用的类直接加到问题域,删除可复用类中的多余信息,并用{复用}标记所复用的类。

4)如果相似,按如下方法处理;·把要复用的类加到问题域,标以“复用”。

·划掉(或标出)不用的属性与服务。

·建立从复用类到问题域原有的类之间的泛化关系。

·由于问题域的类继承了“复用”类的特征,所以有些属性和服务不需要了应该把它们划掉。

·考虑修改问题域原有类的结构和连接,必要时移到“复用”类。

图6-2问题域中例题2、提高性能1)调整对象的分布把需要频繁交换信息的对象,尽量地放在一台处理机上。

2)增加保存中间结果的属性或类避免以后重复计算。

3)提高或降低系统的并发度,可能要人为地增加或减少主动对象。

4)合并通讯频繁的类5)用聚合关系描述复杂类如果一个所描述事物过于复杂,其操作也可能比较复杂,因为其中间可能要包多项工作内容。

对这种情况的处理,可考虑用聚合关系描述复杂类。

6)细化对象的分类如果一个类的概念范畴过于大,那么它所描述的对象的实际情况可能就有若干差异。

解决的一个方法就是把类划分的更细一些,在原先较为一般的类之下定义一些针对不同具体情况的类。

在每个特殊类中分别定义适合各自对象的操作。

3、增加一般类以建立共同协议1)增加一个类,将所有具有相同操作和属性的类组织在一起,提供通用的协议。

2)增加一般的类,提供局部通用的协议。

3)对相似操作的处理。

通过对特征标记做小的修改,以使他们相同,然后再把他们提升到一般类中。

4 、按编程语言调整继承由于在OOA强调如实地反映问题域,OOD考虑实现问题,所用语言不支持多继承,甚至不支持继承。

1)对多继承的调整方法一:采用聚合把多继承转换为单继承因为聚合和泛化是不同的概念,这种方法并不是通用的(按定义)。

在大多数情况下,需要考虑形成多继承的原因,将本来在特殊类中显式定义的信息离出来,作为部分对象,以原来的一般类作为整体对象。

图6-3多继承中的一个继承换为聚合示例图6-4所示的模型中有一个多继承,现假设编程语言不支持多继承,仅支持单继承。

图6-4多继承示例图6-5采用聚合的方式把多继承转换为单位继承示例由于在图6-4所示的模型是按人员身份对一本类“人员”进行分类,并形成了其下的两个特殊类“研究生”和“教职工”,现在用身份作为一个类,依据它对原模型进行调整,如图6-5所示。

图6-5用类“人员”创建对象的用意不变。

创建类“研究生”的对象时,使用类“人员”和类“身份”以及自身的信息,类“教职工”也与此类似。

创建“在职研究生”的对象时,使用类图中的四个类的信息。

方法二:采用压平的方式采用这种方法,使得类“教职工”和“研究生”中的一些特征要在类的“在职研究生”中重复出现,导致信息冗余。

图6-6采用压平的方式把多继承转换为单位继承图6-7采用压平和聚合的方式把继承转换为单位继承2)取消继承方法一:把继承结构展平图6-8完全取消继承示例方法二:采用聚合的方法图6-9采用聚合的方式取消继承3)对多态性的调整在继承结构中,具有相同名字的属性和操作,在不同的类中可以具有不同的类型和行为。

这种在继承结构中对同一命令具有不同的含义的机制,就是继承的多态。

如果编程的语言不支持多态,就需要把多态有关的属性和操作的名字分别赋不同的含义,也即明确把他们是为不同的东西,不但如此,往往还要按实际要求,重新考虑对象的分类,并对属性和操作进行调整。

属性“边数”、“顶点坐标”和操作“绘图”不能被所有的特殊继承或不参加修改的继承,就说明它们只能适合多边形集合的一个子集,把这个子集定义为一个特殊的类“不规则多边形”,并把这些属性和操作下降到该特殊类中。

这样类“正多边形”和“矩形”也不能继承那些不适合自己的属性和操作,而是要自己进行的定义。

如图6-1所示。

图6-10多态性的调整示例5、转化复杂关联决定关系的实现方式(1)对复杂关联的转化1)把多元关联和N元关联转化为二元关联2)把多对多关联类转化为一对多关联图6-11把多对关联转化为一对关联在图6-11中类“供需合同”设立了两个属性“卖方”和“买方”在实例化后分别用于记录类“供货商”和“客户”的对象的标识。

若不仅仅需要从类“供需合同”的对象访问其他对象,还存在着其他对象的访问。

(2)关联的实现方式对关联进行调整后,要考虑关联的实现方式。

A.聚合决定在整体类中指出部分类时,是用部分类直接作为整体类中的属性的数据类型,还是把部分类用作指针或对象标识的基类型,再用这样的指针或对象标示定义整体类的属性。

如果是组合,最好用第1种方式,否则就需要在程序中保证整体对象与部分对象的生命周期的一致性。

B.关联通常,通过在对象中设立指针或对象标识以指向或记录另一端的对象的方法,来实现关联。

如果是单向关联,就在源端的类中设立属性,用来标记另一端的类将来创建的对象。

如果是双向关联,就在两端类中各设立属性,用来标记对方将来创建的对象。

如果关联中对方类的多重性是1,那么可在本方设立一个指向对方对象的指针,或设立一个记录对方对象引用的属性。

如果对方类的多重性大于1,那么可在本方设立一个指向对方对象的指针集合或引用集合。

若关联的某端有角色名,最好把其作为另一端类的属性名,以访问与角色名相邻的类。

6、调整完备与属性按照语法:[可见性] 属性名[‘:’类型][‘=’初始值]对属性的定义进行完善。

每一个属性或者包含单个值,或者包含作为一个整体的密切相关的一组值。

图6-12对编辑语言不支持的属性类型进行调整的示例若要给出对属性的性质的约束,如“工龄<60”或“0≤英语成绩≤100”等,也要看语言是否对其直接支持,否则要在算法上考虑如何实现。

为了维护数据的完整性,必须要考虑需要一起更新的多个相关联的数据值。

特别是,当基本的数据发生变化时,必须更新导出的属性。

通过下列方法可以做到这一点:1)显式的代码因为每一个导出属性是根据一个或多个基本对象属性定义的,更新导出属性的一种方法是,在更新基本对象属性的操作中插入更新导出属性的代码。

这种附加的代码将明确地更新依赖基本对象属性的导出属性,使得基本属性与导出属性的值同步。

2)批处理性的重计算当基本数据以批处理的方式改变时,可能在所有的基本数值改变之后,再重新计算所有的导出属性的值。

3)触发器凡是依赖基本属性的属性,都必须将它自己向基本属性注册。

当基本属性的值被更新时,由专门设置的触发器更新导出属性的值。

7、构造和优化算法对于需要设计的操作,要从如下几方面进行详细地定义:1)按照定义操作的格式:[可见性] 操作名[‘(’参数列表‘)’][‘:’返回类型]完善操作的定义。

2)从问题域的角度,根据其责任,考虑实现操作的算法,即对象是怎样提供操作的。

3)若操作有前后置条件或不变式,考虑编程语言是否予以支持。

若不支持,在操作的方法中要予以实现。

4)建议进一步地分析特定类的对象相关的所有交互图,找出其所有与之相关的消息。

一个对象所要响应的每个消息都要由该对象的操作处理,其中的一个操作也可能要使用其他操作。

如果类拥有状态图,还可根据内部转换以及外部转换上的动作,设计算法的详细逻辑。

可用自然语言或进行了一定结构化的自然语言描述算法,也可以使用程序框图或活动图描述算法。

在算法中还要考虑对例外和特殊情况的处理。

如考虑对输入错误、来自中间件或其它软硬件的错误的消息以及其它例外情况的处理。

在系统较为复杂或需要处理大批量的数据的情况下,若系统在性能上有要求,就要对系统的体系结构和算法进行优化。

8、决定对象间的可访问性从类A的对象到类B的对象有4种访问性(1)属性可见性:B是A的一个属性(关联、聚合)class A{ … ;B b;…}(2)参数可见性:B的对象是A的一个方法的参数(依赖)A.amethod(B b) //间接地找到一个对象,并赋给b(3)局部声明可见性:B的对象是在A的一个方法中声明的一个局部变量(依赖) class A::amethod{ …; B b;…}(4)全局可见性:B的对象在某种程度上全局可见(依赖)声明B的全局实例变量。

相关文档
最新文档