软件工程第10章 面向对象实现

合集下载

软件工程ppt课件第10章面向对象分析

软件工程ppt课件第10章面向对象分析

§3.建立 Object Model
⑤派生关联:即可用其它关联定义的冗余关联
总行拥有多台ATM 分行提供分行计算机和柜员终端 储户拥有账户 总行由各个分行组成 分行保管账户 总行拥有中央计算机 现金兑换卡访问账户 储户拥有现金兑换卡 分行雇用柜员
分行计算机处理事务 分行计算机维护账户 柜员终端与分行计算机通信 柜员输入事务 事务修改账户 ATM与中央计算机通信 在ATM上输入事务 中央计算机确定事务与分行的对应关系
④标明阶数(可能经常变动,不要花太多时间)
中央计算机
分行计算机
现金兑换卡
总 行
分 行
拥有
分行 代码
组成
通信
1+
通信
拥有
柜员终端
柜员事务
分 行
通信
1+
1+
拥有
1+
雇用
输入
1+
1+
输入
账 户
修改
1+
储 户
保管
1+
拥有
1+
远程事务
ATM
拥有
1+
1+
1+
访问
1+
1+
修改
授权
1+
输入
1+
§3.建立 Object Model
筛选时依下列标准删除:
、通信链路、事务日志
冗余
无关
笼统
属性
操作 既可为名词又可为动词的词,应慎重考虑。
实现
第1步:收集 ——
§3.建立 Object Model
2、确定关联 结构层
① 需求陈述中涉及objets的动词短语:

第10章 面向对象分析

第10章 面向对象分析
软件工程
第10章 面向对象分析
第10章 面向对象分析
• 面向对象软件开发技术
– 面向对象分析(OOA) – 面向对象设计(OOD) – 面向对象实现(OOP)
面向对象技术是一个有全新概念 的开发模式,其特点是:
(1)方法是对软件开发过程所有阶段进 行综合考虑而得到的; (2)从生存期的一个阶段到下一个阶段 所使用的方法与技术具有高度的连 续性;
取消交易
顾客可在按下选择键前任何一个时刻,拉动退币杆取 消交易收回硬币。
自动售货系统系统
-端1 * -端2
自动售货系统::售货
*
顾客
-端2
-端1 *
自动售货系统::供货
*
供货人
-端1 * -端2
自动售货系统::取货款
*
收银员
自动售货系统系统
-端1 *
-端2
售货
*
<<extends>>
售散装饮料
顾客
• 业务中的执行者扮演什么角色?这些角色可以 看作类,如客户、操作员等。
(2)筛选对象类,确定最终对象类 我们可以用以下选择特征来确定最终的对象: 1) 保留的信息:仅当必须记住有关潜在对象的 信息,系统才能运作时,则该潜在对象在分 析阶段是有用的; 2) 需要的服务:潜在对象必须拥有一组可标识 的操作,它们可以按某种方式修改对象属性 的值; 3) 多个属性:在分析阶段,关注点应该是“较 大的”信息(仅具有单个属性的对象在设计 时可能有用,但在分析阶段,最好把它表示 为另一对象的属性);
定义服务
• 对象=属性+操作(服务) • 因为在动态模型和功能模型中更明确地描 述了每个类中应该提供哪些服务,所以在 建立了这两个模型后才能最终确定类中应 有的服务。 • 事实上,在确定类中应有的服务时,既要 考虑该类实体的常规行为,又要考虑在本 系统中特殊需要的服务。

张海藩《软件工程导论》(第6版,清华大学出版社)(考研用)辅导书 第(10-13)章【圣才出品】

张海藩《软件工程导论》(第6版,清华大学出版社)(考研用)辅导书 第(10-13)章【圣才出品】
圣才电子书

十万种考研考证电子书、题库视频学习平台
第 10 章 面向对象分析
10.1 复习笔记
一、面向对象分析的基本过程 1.概述 (1)定义 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。 (2)过程 ①分析陈述用户需求的文件; ②深入理解用户需求,抽象出目标系统的本质属性; ③用模型准确地表示。 (3)目的 全面深入地理解问题域和用户的真实需求,建立问题域的精确模型。
2.信息来源 需求陈述、应用领域的专业知识、客观世界的常识是建立对象模型时的主要信息来源。
3.建立对象模型的步骤 (1)确定类与对象。 ①找出候选的类与对象; ②筛选出正确的类与对象。 (2)确定关联。 【注意】在分析确定关联的过程中,不必花过多的精力去区分关联和聚集,聚集是一种 特殊的关联。 (3)划分主题。 (4)确定属性。 (5)识别继承关系。 (6)反复修改。
5.画状态图 (1)定义 状态图描绘事件与对象状态的关系,它确定了由事件序列引出的状态序列。 (2)方法 ①仅考虑事件跟踪图中指向某条竖线的那些箭头线。把这些事件作为状态图中的有向 边,边上标以事件名。 ②给每个状态取个有意义的名字。 ③根据一张事件跟踪图画出状态图后,再把其他脚本的事件跟踪图合并到该图中。 ④考虑完正常事件后再考虑边界情况和特殊情况,包括在不适当时候发生的事件。
十万种考研考证电子书、题库视频学习平台
复杂问题的对象模型由 5 个层次组成,如图 10-1 所示。
图 10-1 复杂问题的对象模型的 5 个层次
二、需求陈述 1.内容 (1)阐明“做什么”而不是“怎样做”。 (2)描述用户的需求而不是提出解决问题的方法。 (3)指出哪些是系统必要的性质,哪些是任选的性质。 (4)避免对设计策略施加过多的约束,不描述系统的内部结构。

第10章-C++面向对象程序设计(Visual C++ 2010版)-温秀梅-清华大学出版社

第10章-C++面向对象程序设计(Visual C++ 2010版)-温秀梅-清华大学出版社

基本控件的共同属性
(1) ID属性 用于指定控件的标识符,Windows依靠ID来区分不同 的控件。
(2) Caption(标题)属性 对控件将要实现的功能进行文字说明。如果控件标题 中包含字符&,则紧跟其后的字符在显示时会有一条下划 线,通过这样的设置,按(Alt+带下划线的字符)组合键, 将触发控件被单击的事件或切换到相应的控件。
单击“下一步”按钮,弹出如图10.3所示的“MFC 应用 程序向导-ch10_1”之“应用程序类型”对话框,在该 对话框中选择“基于对话框”的应用程序类型。应用程 序有以下四种类型:单个文档(Single document)、 多个文档(Multiple documents)、基于对话框( Dialog based)和多个顶级文档。选择不同的应用程序 类型时,对话框左上角会显示不同风格的应用程序窗口 图标,不同类型应用程序的具体说明如表10.2所示。
图10.8 ch10_1应用程序的运行结果
使用AppWizard 工具生成的 程序和改变了的复选框
组合框 分组框 静态文本框
命令按钮 编辑框 列表框 单选按钮 图片框
10.3 基本控件
水平滚动条 滑块
进度条
列表框
选项卡控件
垂直滚动条 微调器 热键
树型列表框
IP地址
允许用户产生一个多文档界面(MDI)结构的应用程序。该项为默认选项。在 多文档界面应用程序中允许同时操作多个文档。在界面中可以同时打开多个文 件(同时也就为每个文件打开一个窗口),并通过切换窗口激活相应的文档进 行编辑
允许用户产生一个基于对话框的应用程序。基于对话框结构的应用程序,主要 用于人机对话,为用户传送一些消息给计算机
图10.3 “MFC 应用程序向导-ch10_1”之“应 用程序类型”对话框

软件工程面向对象

软件工程面向对象

面向对象软件工程面向对象方法学的提出•结构化软件工程方法学•面向过程、以算法为核心、把数据和过程作为相对独立的部分•对早期只重视编程、不重视用户需求和开发过程,只重视代码、不重视文档来说,是一个巨大的进步•给软件产业带来了巨大的进步,部分缓解了软件危机•在许多中小型软件项目中获得了很大的成功•但是,它存在着明显的缺点•当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功面向对象方法学概述•面向对象方法学的出发点和原则•尽可能模仿人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程•面向对象方法的特点•与人类习惯的思维方法一致:按照人们习惯的思维方式建立模型,模拟客观世界•稳定性好:实体是相对稳定的,以对象为中心构建的软件系统必然是相对稳定的•可重用性好:对象类提供了比较理想的模块化机制和可重用机制•易于开发大型软件:把大型产品看作一系列本质上相互独立的小产品来处理•可维护性好:容易理解、容易修改、易于测试四个要点:对象+类+继承+通信•面向对象软件是由对象组成•软件中的任何元素都是对象•对象是把静态属性的数据和动态属性的操作封装在一起而形成的统一体•复杂对象由简单对象组成•把所有对象都划分成若干类•每个类都定义了一组数据和方法(即施加于对象的操作);•按照子类与父类的关系,把若干个对象类组成一个层次结构的系统(即继承);•对象彼此之间仅能通过传递消息相互联系(对象的私有信息都被封装在对象类中)。

Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信基本概念(1)•类(Class)•是对具有相同属性和行为的一(多)个对象的描述•是一个支持继承的抽象数据类型•实例(Instance)•就是由某个特定的类所描述的一个具体的对象•消息(Message)•是要求某个对象执行类中所定义的某个操作的规格说明•其组成为:接收消息的对象、消息名和变元•方法(Method)•就是对象所能执行的操作(类中定义的服务)•属性(Attribute)•就是类中所定义的数据,是对客观世界实体所具有的性质的抽象基本概念(2)•封装•是把数据和实现操作的代码集中起来放在对象内部,不能从外部进行访问和修改。

软件工程导论_第十章

软件工程导论_第十章

2. OOA基本任务是:
运用面向对象的方法,对问题域和系统责任 进行分析和理解,找出描述问题域及系统责任所需的 对象,定义对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户功能需求的 OOA模型。
问题域:被开发系统的应用领域,记载现实世界中要
由这个系统进行处理的业务范围。现实世界中系统 所要解决问题的领域为“问题域”,如“银行业务” 属于“银行的问题域”。 系统责任:所开发的系统应该具备的职能。
• “小镇”是牙科诊所的地址属性,不是独 立的对象;“软件系统”和“系统”是 同义词,指的是将要开发的软件产品, 不是问题域中的对象;“就诊时间”、 “预约时间”和“约定时间”在本问题 陈述中的含义相同,指的都是预约的就 诊时间,实际上,预约的就诊时间既包 括日期又包括时间,但是,它们是预约 登记表包含的属性,不是问题域中的独 立的对象;“名字”和“姓名”是同义 词,应该作为病人和预约登记表的属性;
我们目标是尽可能全面的发现属性,宁可多费时, 也不要遗漏所需要的属性。
10.3.5 识别继承关系
继承关系的建立实质上是知识抽取过程,它应该 反映出一定深度的领域知识,因此必须有领域专家密 切配合才能完成。通常,许多归纳关系都是根据客观 世界现有的分类模式建立起来的,只要可能,就应该 使用现有的概念。
10.3 建立对象模型(类图)
1. 描述系统静态的对象模型(类图)是面向对象
的三个模型中的基本模型。 2. 它表述了系统中各个对象的类型及其间存在 的各种关系。在面向对象建模中,建立类图是最 基本的任务;建立类图也是最需要花费精力和时 间的技术活动。
3. 该模型主要关心系统中的:
①对象的结构; ②属性; ④关联; ⑤类的层次。 ③操作和方法;

软件工程_张海蕃

软件工程_张海蕃

应该推广使用在实践中总结出来的开发软件的成功 的技术和方法,并且研究探索更好更有效的技术和 方法,尽快消除在计算机系统早期发展阶段形成的 一些错误概念和做法。 应该开发和使用更好的软件工具。正如机械工具可 以“放大”人类的体力一样,软件工具可以“放大” 人类的智力。在软件开发的每个阶段都有许多繁琐 重复的工作需要做,在适当的软件工具辅助下,开 发人员可以把这类工作做得既快又好。如果把各个 阶段使用的软件工具有机地集合成一个整体,支持 软件开发的全过程,则称为软件工程支撑环境。
与软件开发和维护有关的许多错误认识和作法的形 成,可以归因于在计算机系统发展的早期阶段软件 开发的个体化特点。错误的认识和作法主要表现为 忽视软件需求分析的重要性,认为软件开发就是写 程序并设法使之运行,轻视软件维护等。
事实上,对用户要求没有完整准确的认识就匆忙着 手编写程序是许多软件开发工程失败的主要原因之 一。只有用户才真正了解他们自己的需要,但是许 多用户在开始时并不能准确具体地叙述他们的需要, 软件开发人员需要做大量深入细致的调查研究工作, 反复多次地和用户交流信息,才能真正全面、准确、 具体地了解用户的要求。对问题和目标的正确认识 是解决任何问题的前提和出发点,软件开发同样也 不例外。急于求成,仓促上阵,对用户要求没有正 确认识就匆忙着手编写程序,这就如同不打好地基 就盖高楼一样,最终必然垮台。事实上,越早开始 写程序,完成它所需要用的时间往往越长。
另一方面还必须认识到程序只是完整的软件产品的 一个组成部分,在上述软件生命周期的每个阶段都 要得出最终产品的一个或几个组成部分(这些组成 部分通常以文档资料的形式存在)。也就是说,一 个软件产品必须由一个完整的配置组成,软件配置 主要包括程序、文档和数据等成分。必须清除只重 视程序而忽视软件配置其余成分的糊涂观念。 作好软件定义时期的工作,是降低软件成本提高软 件质量的关键。如果软件开发人员在定义时期没有 正确全面地理解用户需求,直到测试阶段或软件交 付使用后才发现“已完成的”软件不完全符合用户 的需要,这时再修改就为时已晚了。

软件工程第10章 面向对象分析

软件工程第10章 面向对象分析

10.1 面向对象分析的基本过程
10.1.1.概述
面向对象分析,就是抽取和整理用户需求并建立问题域 精确模型的过程。 面向对象分析过程从分析陈述用户需求的文件开始。 接下来,系统分析员应该深入理解用户需求,抽象出目
标系统的本质属性,并用模型准确地表示出来。 在面向对象建模的过程中,系统分析员必须认真向领域
首先,面向对象分析通过控制读者能见到的层次数目 来控制可见性。
其次,面向对象分析增加了一个主题层,它可以从一 个相当高的层次描述总体模型,并对读者的注意力加 以指导。
10.1 面向对象分析的基本过程
在概念上可以认为,面向对象分析大体上按照下列顺 序进行:
寻找类与对象,识别结构,识别主题,定义属性, 建立动态模型,建立功能模型,定义服务。 但是,分析不可能严格地按照预定顺序进行,大型、 复杂系统的模型需要反复构造多遍才能建成。 分析也不是一个机械的过程。系统分析员必须与领域 专家及用户反复交流,以便澄清二义性,改正错误的 概念,补足缺少的信息。
主要内容
10.1 面向对象分析的基本过程 10.2 需求陈述 10.3 建立对象模型 10.4 建立动态模型 10.5 建立功能模型 10.6 定义服务
10.2 需求陈述
10.2.1. 书写要点
需求陈述应该阐明“做什么”而不是“怎样做”!
应该描述用户的需求而不是提出解决问题的方法。 应该指出哪些是系统必要的性质,哪些是任选的性质。 应该避免对设计策略施加过多的约束,也不要描述系
10.3 建立对象模型
10.3.1. 确定类与对象
类与对象是在问题域中客观存在的,系统分析员的主 要任务就是通过分析找出这些类与对象。 首先找出所有候选的类与对象; 然后从候选的类与对象中筛选掉不正确的或不必
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
素时,做到两类文档完全一致几乎是不可能的。因此,维护人员 最终面对的往往只有源程序本身。
10.1.2 面向对象语言的技术特点
一般说来,纯面向对象语言着重支持面向对象方法研 究和快速原型的实现,而混合型面向对象语言的目标则是 提高运行速度和使传统程序员容易接受面向对象思想。成
熟的面向对象语言通常都提供丰富的类库和强有力的开发
非面向对象语言实现。使用面向对象语言时,由于语言本身 充分支持面向对象概念的实现,因此,编译程序可以自动地 把面向对象概念映射到目标程序中。使用非面向对象语言编 写面向对象程序,则必须由程序员自己把面向对象概念映射
到目标程序中。
10.1.1 面向对象语言的优点
到底应该选用面向对象语言还是非面向对象语言,关键不 在于语言功能强弱。选择编程语言的关键因素,是语言的一致 的表达能力、可重用性及可维护性。从面向对象观点看来,能
环境。
10.1.2 面向对象语言的技术特点
1.支持类与对象概念的机制
所有面向对象语言都允许用户动态创建对象,并且可以用 指针引用动态创建的对象。允许动态创建对象,就意味着系统必
须处理内存管理问题。有两种管理内存的方法:一种是由语言的
运行机制自动管理内存,即提供自动回收“垃圾”的机制;另一 种是由程序员编写释放内存的代码。
10.1.2 面向对象语言的技术特点
自动管理内存不仅方便而且安全,但是必须采用先进的 垃圾收集算法才能减少开销。某些面向对象的语言(如C++) 允许程序员定义析构函数(destructor)。每当一个对象超
出范围或被显式删除时,就自动调用析构函数。这种机制使
得程序员能够方便地构造和唤醒释放内存的操作,却又不是 垃圾收集机制。
第10章 面向对象实现
面向对象实现的主要工作 面向对象设计的质量 面向对象测试
10.1 面向对象语言
10.1.1 面向对象语言的优点 10.1.2 面向对象语言的技术特点 10.1.3 选择面向对象语言
10.1.1 面向对象语言的优点
面向对象设计的结果,既可以用面向对象语言,也可以用
10.1.2 面向对象语言的技术特点
2.实现整体一部分结构的机制
一般说来,有两种实现方法,分别使用指针和独立的 关联对象实现整体一部分结构。大多数现有的面向对象语言并
不显式支持独立的关联对象,在这种情况下,使用指针是最容
易的实现方法,通过增加内部指针可以方便地实现关联。
10.1.2 面向对象语言的技术特点
是弱类型的;如果语法规定每个变量或属性必须准确地属于某
个特定的类,则这样的语言是强类型的。面向对象语言在这方 面差异很大。
10.1.2 面向对象语言的技术特点
强类型语言主要有两个优点:一是有利于在编译时发 现程序错误,二是增加了优化的可能性。通常使用强类型 编译型语言开发软件产品,使用弱类型解释型语言快速开
10.1.2 面向对象语言的技术特点
4.实现属性和服务的机制
对于实现属性的机制应该着重考虑以下几个方面:支
持实例连接的机制;属性的可见性控制;对属性值的约束。
对于服务来说,主要应该考虑下列因素:支持消息连接(即 表达对象交互关系)的机制;控制服务可见性的机制;动态
联编。
10.1.2 面向对象语言的技术特点
发原型。总的来说,强类型语言有助于提高软件的可靠性
和运行效率,现代的程序语言理论支持强类型检查,大多 数新语言都是强类型的。
10.1.2 面向对象语言的技术特点
6.类库大多数面向对象语言都提供一个实用的类库
某些语言本身并没有规定提供什么样的类库,而是由实现这 种语言的编译系统自行提供类库。存在类库,许多软构件就不必由
所谓动态联编,是指应用系统在运行过程中,当需要执 行一个特定服务的时候,选择(或联编)实现该服务的适当 算法的能力。动态联编机制使得程序员在向对象发送消息时
拥有较大自由,在发送消息前,无须知道接受消息的对象当
时属于哪个类。
10.1.2 面向对象语言的技术特点
5.类型检查
程序设计语言可以按照编译时进行类型检查的严格程度 来分类。如果语言仅要求每个变量或属性隶属于一个对象,则
程序员重头编写了,这为实现软件重用带来很大方便。
10.1.2 面向对象语言的技术特点
7.效率
事实上,使用拥有完整类库的面向对象பைடு நூலகம்言,有时能比 使用非面向对象语言得到运行更快的代码,这是因为类库中提供
了更高效的算法和更好的数据结构。例如,程序员已经无须编写
实现哈希表或平衡树算法的代码了,类库中已经提供了这类数据 结构,而且算法先进、代码精巧可靠。
3.实现一般一特殊结
这里既包括实现继承的机制也包括解决名字冲突的机 制。所谓解决名字冲突,指的是处理在多个基类中可能出现的
重名问题,这个问题仅在支持多重继承的语言中才会遇到。某
些语言拒绝接受有名字冲突的程序,另一些语言提供了解决冲 突的协议。不论使用何种语言,程序员都应该尽力避免出现名 字冲突。
够更完整、更准确地表达问题域语义的面向对象语言的语法是
非常重要的,因为这会带来下述几个重要优点。
10.1.1 面向对象语言的优点
1.一致的表示方法
从前面章节的讲述中可以知道,面向对象开发基于不 随时间变化的、一致的表示方法。这种表示方法应该从问题域
到 OOA , 从 OOA 到 OOD , 最 后 从 OOD 到 面 向 对 象 编 程
( OOP ),始终稳定不变。一致的表示方法既有利于在软件 开发过程中始终使用统一的概念,也有利于维护人员理解软件 的各种配臵成分。
10.1.1 面向对象语言的优点
2.可重用性
为了能带来可观的商业利益,必须在更广泛的范围中 运用重用机制,而不是仅仅在程序设计这个层次上进行重用。
因此,在OOA、OOD直到OOP中都显式地表示问题域语义,
其意义是十分深远的。随着时间的推移,软件开发组织既可能 重用它在某个问题域内的 OOA 结果,也可能重用相应的 OOD 和OOP结果。
10.1.1 面向对象语言的优点
3.可维护性
尽管人们反复强调保持文档与源程序一致的必要性,但 是,在实际工作中很难做到交付两类不同的文档,并使它们保持
彼此完全一致。特别是考虑到进度、预算、能力、人员等限制因
相关文档
最新文档