系统分析与设计_12_面向对象实现
面向对象的系统分析与设计

并 且 一 般情 况下 都 是 可行 的 。这 是 由 于 问题 域 关 ቤተ መጻሕፍቲ ባይዱ 简 单 , 涉 及 到 的 所
内部 构 造 、 系 比较 容 易解 释 。 对 于 当前 越 来 越 复杂 的系 统 , 问题 联 而 其
3面 向对 象 的 系统 分析 与 设计 .
计 算 机应 用 系 统 的 开发 过 程 是一 个 相 当复 杂 的 过 程 , 用 面 向对 使
维普资讯
科技信息
0I T技术论坛0
S IN E&T C N L G N O MA I CE C E H O O YIF R TON
20 0 8年
第2 0期
面向对象的系统分析与设计
杨继赢 ( 东工 业大学 实验教 学部 广 东 广 州 5 0 0 ) 广 1 0 6
1引 言 .
系统 来 重 新构 建 新 的 系统 。这 一 点不 仅 说 明 第 四点 中 的 复用 性 。 且 而
就是 将 并 没 有 通 过 严 格测 试 的子 系 统分 析 设 计 与设 计 是 系 统设 计 师 的 主 要 工 作 内 容 , 要求 系统 也 说 明 了 一个 我 们 常 常要 犯 的 错 误 . 它 匆 这 常 设 计 师 不仅 要 具 备 特定 领 域 的 专业 知识 . 要 具 备 系 统 工 程 方 面 的设 系统 , 忙 的加 入 到 大 系统 中 , 样做 不 利 于 系 统 的 基 层 , 常引 入 了 还 使得 系 统 频 频崩 溃 , 严 重会 导 致 系 统 的重 新 分析 。 最 计 能 力 。 面 对 简单 系 统 时 , 般 可 以很 顺 利 的 提 出 问题 的解 决 方 案 , 其 他 错 误 , 在 一
域 显 示 的 越 来 越 复 杂 , 且 内部 关 系 也 不 是 很 容 易 解 释 , 些 大 系 统 象 方 法 进 行 系 统 开发 . 要 任 务 是 采 用 面 向对 象 的概 念 及 其 抽 象 机 制 而 有 首 常 常 超 出 了人 解 决 问题 的能 力 。 由此 , 以往 面 对 过 程 的 解决 方 法 已经 将 开 发 的 系统 对 象 化 和 模 型 化 , 立 应 用 系 统 模 型 , 后 使 用 面 向 对 建 然
uml系统分析与设计uml系统建模基础教程课后习题答案.docx

UML系统建模基础教程课后答案第一章面向对象设计与UML1.填空题(1)UML(2)封装继承多态(3)继承(4)瀑布模型喷泉模型基于组件的开发模型XP开发模型2.选择题(1) C(2) A B C D(3) A B C D(4) A B C(5) A3.简答题1.试述对象和类的关系。
(1)类是具有相同或相似结构、操作和约束规则的对象组成的集合,而对彖是某一类的具体化实例,每一个类都是具有某些共同特征的对象的抽象。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类対象的抽象就是类.类描述了一组有相同特性和相同行为的对象。
第二章UML通用知识点综述1.填空题(1)依赖泛化关联实现(2)视图图模型元素(3)实现视图部署视图(4)构造型标记值约束(5)规格说明修饰通用划分2.选择题(1) D(2) C(3) A(4) A B(5) D3.简答题(1)在UML中面向对象的事物有哪几种?在UML中,定义了四种基本的面向对象的事物,分别是结构事物、行为事物、分组事物和注释事物等。
(2)请说出构件的种类。
构件种类有:源代码构件、二进制构件和可执行构件。
(3)请说出试图有哪些种类。
在UML中主要包括的视图为静态视图、用例视图、交互视图、实现视图、状态机视图、活动视图、部署视图和模型管理视图。
(4)请说出视图和图的关系。
视图和图是包含和被包含的关系。
在每一种视图中都包含一种或多种图。
(5)请简述UML的通用机制。
UML提供了一些通用的公共机制,使用这些通用的公共机制(通用机制)能够使UML在各种图中添加适当的描述信息,从而完善UML的语义表达。
逋常,使用模型元素的基本功能不能够完善的表达所要描述的实际信息,这些通用机制可以有效地帮助表达,帮助我们进行有效的UML 建模。
UML提供的这些通用机制,贯穿于整个建模过程的方方面面。
前面我们提到,UML的通用机制包括规格说明、修饰和通用划分三个方面。
第三章Rational统一过程1.填空题(1)角色活动产物工作流(2)逻辑视图过程视图物理视图开发视图用例视图(3)设计开发验证(4)二维(5)周期迭代过程里程碑2.选择题(1) A B C D(2) A C D(3) A C D(4) A B C(5) A B C D3.简答题(1)请描述迭代过程有几个阶段。
基于UML的面向对象的系统分析与设计

基于UML的面向对象的系统分析与设计基于UML的面向对象的系统分析与设计引言:在当今信息社会中,随着科技的不断进步和应用的不断扩展,各行各业都离不开计算机系统的支持。
为了满足用户的需求,开发出高质量、高效率的系统就显得尤为重要。
而面向对象的系统分析与设计作为一个重要的环节,可以帮助我们更好地理解用户需求并将其转化为实现系统的蓝图。
本文将介绍基于UML的面向对象的系统分析与设计方法,并通过一个实例来演示其应用过程。
一、基于UML的系统分析与设计基础1.1 面向对象的概念面向对象是一种思想方式和编程方法,它将问题领域的实体抽象为类,通过类的组织和交互来描述系统的行为。
面向对象的设计方法使得系统更易于理解、维护和扩展。
1.2 UML的介绍UML(Unified Modeling Language)是一种用于面向对象系统建模的标准化语言,它提供了丰富的符号和图形表示方法,可以帮助分析和设计人员更好地表达复杂的系统结构和行为。
二、基于UML的系统分析与设计方法2.1 需求分析系统的需求分析是整个分析与设计过程的起始点,通过与用户的交流和讨论,了解用户的需求并进行准确定义。
在这一阶段,分析人员可以运用UML中的用例图、活动图等工具来分析和描述用户需求。
2.2 类建模在需求分析阶段的基础上,分析人员将用户需求转化为类模型。
通过识别和分析系统中的实体、属性和行为,可以确定类的结构和关系。
在这一阶段,可以运用UML中的类图来进行类的建模。
2.3 行为建模在类建模完成后,需要进一步分析和设计系统的行为。
行为建模通常包括状态图、顺序图和活动图等。
通过这些图形化表示,可以描述系统中各个类之间的交互和信息流动,保证系统的正确性和健壮性。
2.4 设计模式的应用设计模式是一种被广泛应用的解决问题的模板,它提供了一些经验性的指导原则和设计思路。
在系统分析与设计过程中,分析人员可以借鉴各种设计模式,通过复用已有的解决方案来提高系统的可靠性和效率。
第十二章 组件图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

Account Account Details
12.2 组件图的组成元素
组件 接口 组件图中的关系
组件的内部结构
组件
组件,是系统设计的一个模块化部分, 它隐藏了内部的实现,对外提供了一组 接口。
组件是一个封装完好的物理实现单元, 它具有自己的身份标示和定义明确的接 口。并且由于它对接口的实现过程与外 部元素独立,所以组件具有可替换性。
组件图在面向对象设计过程中起着非常重要的作用:它明确了系统 设计,降低了沟通成本,而且按照面向对象方法进行设计的系统和子 系统通常保证了低耦合度,提高了可重用性。
组件图的基本概念
cmp 组件图
Item Code
ProductLeabharlann Order Payment
Customer Details
Customer
组件B的支持
实现关系
组件与提供接口之间建立实现关系
组件图的建模技术
对源代码结构建模
识别出感兴趣的源代码文件集合,并建模为组件。 如果系统规模较大,使用包对组件进行分组。 可以使用约束或注解来表示源代码的作者、版本号等信息。 使用接口和依赖关系来表示这些源代码文件之间的关系。 检查组件图的合理性,并识别源代码文件的优先级以便进行开发工作。
接口
对于一个组件而言,它有两类接口,提供接口与需求接口。
提供接口:又被称为导出接口或供给接口,是组件为其他组件提供服务 的操作的集合。
需求接口:又被称为引入接口,是组件向其他组件请求相应服务时要遵
循的接口。
cmp 组件图
cmp 组件图
Drawing
供给接口
需求接口
Shape
Drawing
IShape
面向对象分析与设计

面向对象分析与设计在软件开发过程中,面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是一种重要的方法论。
通过OOAD,开发者可以将现实世界中的概念和问题转化为软件系统的结构和行为。
一、什么是面向对象分析与设计?面向对象分析与设计是一种以对象为核心的开发方法。
它强调将问题领域的实体、关系和行为抽象为对象、类和方法。
面向对象的分析阶段主要关注问题领域的需求和约束,而设计阶段则更关注如何将需求转化为可执行的软件系统。
二、面向对象分析与设计的优势1. 模块化:面向对象的方法将复杂的系统拆分为多个独立的对象,每个对象都有清晰的职责和接口。
这种模块化可以提高代码的可维护性和可复用性。
2. 继承与多态:继承是面向对象编程中的重要特性,它允许新的类继承已有类的属性和方法。
多态则允许对象在不同上下文中表现出不同的行为。
这些特性使得代码更加灵活和易于扩展。
3. 封装与信息隐藏:面向对象的方法将数据和操作封装在对象内部,外界只能通过对象的接口进行交互。
这种封装和信息隐藏可以保护数据的完整性和安全性。
4. 规范化的开发流程:面向对象的分析与设计有一套规范的开发流程,包括需求分析、概念设计、详细设计和实现等阶段。
这种流程可以提高开发效率,并减少错误和重复工作。
三、面向对象分析与设计的过程1. 需求收集与分析:在这个阶段,开发者与用户密切合作,收集和分析系统的业务需求。
通过访谈、文档分析等方法,确定系统的功能、性能和约束等方面的要求。
2. 概念设计:在概念设计阶段,开发者将业务需求转化为概念模型。
通过绘制用例图、类图、状态图等工具,描述系统的结构和行为。
3. 详细设计:在详细设计阶段,开发者将概念模型进一步细化,确定具体的类和接口。
同时,还需要考虑系统的性能、安全和可维护性等方面的问题。
4. 编码与测试:在编码阶段,开发者根据详细设计的要求,使用具体的编程语言实现系统。
面向对象系统分析和设计综合实验报告4

面向对象系统分析和设计综合实验报告4综合实验报告:面向对象系统分析和设计一、引言面向对象系统分析和设计(Object-Oriented System Analysis and Design,简称OOSAD)是软件工程中的重要环节,它涉及到软件系统的需求分析、设计和建模等过程。
本实验旨在通过一个综合案例,加深对面向对象系统分析和设计的理解,并能够熟练运用相关的建模工具和方法。
二、实验背景本次实验的案例为一个在线购物系统,该系统允许用户浏览商品、添加到购物车、下定单并完成支付等功能。
通过对该系统进行分析和设计,可以掌握面向对象的建模技巧,包括用例图、类图、时序图等。
三、系统需求分析1. 功能需求根据用户的需求,我们确定了以下功能需求:- 用户注册和登录:用户可以通过注册账号并登录系统。
- 浏览商品:用户可以查看系统中的商品列表,包括商品的名称、价格、库存等信息。
- 添加到购物车:用户可以将感兴趣的商品添加到购物车中,以便后续下单。
- 下定单:用户可以选择购物车中的商品,并生成定单。
- 支付定单:用户可以选择支付方式,完成定单的支付。
2. 非功能需求除了功能需求外,我们还需要考虑以下非功能需求:- 性能要求:系统需要能够处理大量的用户请求,并保证响应时间在合理范围内。
- 安全要求:用户的个人信息和支付信息需要进行加密和保护,确保不被恶意攻击者获取。
- 可靠性要求:系统需要具备一定的容错能力,能够在浮现故障时自动恢复,并保证数据的完整性。
四、系统设计1. 用例图根据需求分析,我们可以绘制出以下用例图,用于描述系统的功能和用户之间的交互关系。
(用例图示例)2. 类图在进行系统设计时,我们需要确定系统中的各个类及其之间的关系。
以下是一个简化的类图示例:(类图示例)在类图中,我们可以看到系统中的各个类以及它们之间的关系,如商品类、用户类、购物车类、定单类等。
通过类图,我们可以清晰地看到系统的结构和模块之间的依赖关系。
面向对象的系统分析与设计方法
面向对象的系统分析与设计方法在信息化时代,各种软件系统已经深入到人们日常生活的方方面面。
如何将软件设计得更加高效、安全、易用成为设计人员不断探索的问题。
其中,面向对象的系统分析与设计方法被广泛应用于软件领域,成为当前软件研发中的流行趋势。
一、面向对象思想面向对象思想是一种软件分析、设计和编程思路。
它将现实世界中的实体抽象为对象,通过对象之间的交互和信息处理来实现系统的功能。
对象的行为和属性都与现实世界中的事物相对应,因此可以更加符合人类的思维方式,易于理解和维护。
同时,面向对象的设计还具有可重用性好、扩展性强、易维护等优点,因此被广泛应用于软件开发中。
二、面向对象的系统分析与设计面向对象的系统分析与设计方法采用面向对象思想,以系统的对象为中心,对系统所涉及到的实体进行抽象分析和设计。
其主要步骤包括系统需求分析、面向对象的分析和面向对象的设计。
1.系统需求分析系统需求分析是整个软件开发的关键,需要通过对用户需求、客户需求和用户交互接口需求等方面进行深入分析和调研,明确软件的功能、性能、可靠性和安全性等需求要求,为后续的设计和编码打下基础。
2.面向对象的分析面向对象的分析将系统需求分析的结果转化为面向对象的模型,具体包括对象、类、关系、约束条件等方面的分析。
其中,最重要的是通过实体之间的关系和交互来建立对象模型,理清对象之间的依赖关系和功能流程,同时将软件的功能划分为一个个模块,为后续的设计提供可靠的基础。
3.面向对象的设计面向对象的设计是指基于面向对象的分析结果,对系统进行更加详细的设计。
在设计过程中,需要运用各种通用的面向对象设计模式,如单例模式、工厂模式、观察者模式等,从而提高系统的可维护性、可扩展性和可重用性,同时还需考虑系统安全性、性能等方面的设计。
三、面向对象设计方法的优势1.提高系统的可维护性面向对象设计方法可以将系统中的实体进行模块化的设计,每个模块都可以自行管理本身功能的维护和更新,同时多个模块之间的协调和合作也容易实现,从而提高了系统的可维护性。
面向对象的系统分析与设计课程设计
面向对象的系统分析与设计课程设计1. 课程设计背景随着信息时代的到来,计算机科学技术在各个领域得到了广泛的应用和发展。
作为计算机科学技术中的重要分支之一,面向对象的系统分析与设计已经成为了计算机科学技术中的一个重要组成部分。
在现代软件开发中,面向对象的系统分析与设计已经成为了不可或缺的一部分。
2. 课程设计目的本课程设计的主要目的是培养学生的面向对象的系统分析与设计能力。
通过学习本课程,学生应该掌握面向对象的基本概念、面向对象的系统分析与设计基本方法和技能。
此外,本课程还应该通过实践使学生能够独立完成一个实际的面向对象的系统分析与设计项目。
3. 课程设计大纲本课程设计的主要内容包括:3.1 面向对象的基本概念本课程将首先介绍面向对象的基本概念。
包括类、对象、继承、多态等。
这些基本概念是理解面向对象编程的基础。
3.2 面向对象的系统分析和设计方法本课程将介绍面向对象的系统分析和设计方法。
包括需求分析、可行性分析、领域模型分析、数据模型设计、物理模型设计等。
3.3 根据需求设计面向对象的系统根据一个实际的需求将学生分组进行设计。
这将会需要学生使用UML建立需求分析模型,并在其基础上进行具体的软件开发。
其设计应该包括:领域建模、游戏界面设计、状态和策略设计等。
4. 课程设计要求4.1 团队合作学生应该分组,每组人数4-5人。
每个小组都会需要自己来完成一个面向对象的系统分析与设计项目。
因此,学生之间需要进行紧密的合作。
4.2 设计文档学生应该撰写设计文档,包括需求分析、设计理念和实现细节三个方面。
4.3 实现系统学生需要使用面向对象的编程语言来实现所设计的系统。
4.4 系统演示在课程结束后的演示环节,每个小组需要进行系统演示。
这是整个课程设计的一个重要环节。
5. 课程设计评分本课程设计将会按照如下标准进行评分:5.1 设计文档评分在设计文档评分中,评分标准包括需求分析、设计理念和实现细节。
其中,需求分析和设计理念各占30分,实现细节占40分。
面向对象分析与设计原理及实践
面向对象分析与设计原理及实践面向对象程序设计(Object Oriented Programming, OOP)是目前程序设计领域中最为流行的一种设计方法,伴随着软件开发的日益复杂,我们需要高效的方法来管理和维护软件的复杂性。
在OOP中,一切皆为对象,对象是根据类定义而创建的。
类定义了一组属性和行为,对象是类的实例,拥有这些属性和行为。
使用面向对象的方式,可以更好地组织代码,提高代码重用和可维护性。
面向对象程序设计的三大特征面向对象程序设计的三大特征分别为封装、继承和多态。
封装是指将数据和行为打包到一个单元(class)中,通过访问权限限制来保证数据的安全性。
继承是指通过已有类派生出新的类,子类继承父类的所有属性和行为,同时可以添加自己的属性和行为,这种方式可以减少代码的重复性。
多态是指同一行为对于不同的对象具有不同的表现形式。
多态的实现方式有重载、重写和向上转型等。
面向对象分析与设计面向对象分析(Object Oriented Analysis, OOA)是一种软件工程方法,是软件设计中的第一步,它主要是从用户的需求出发,描述系统中的对象和他们之间的关系。
面向对象设计(Object Oriented Design, OOD)是软件设计的第二步,它主要是在OOA的基础上,根据系统需求,定义系统中的类以及类之间的关系。
在面向对象分析和设计中,主要有以下步骤:1. 需求收集和分析:通过与用户沟通,理解用户的需求,收集和分析需求。
2. 建立用例图和场景描述:从需求中抽取功能点,建立用例,同时描述用例的详细场景。
3. 建立类图:根据用例图和场景描述,建立类图,描述类之间的关系和属性。
4. 设计框架和结构:根据类图,设计系统的框架和结构。
5. 编写代码:在完成以上步骤后,编写代码实现系统。
面向对象实践在面向对象程序设计中,我们可以使用很多编程语言来实践,较为常见的有Java、C++、Python等。
在实践中,我们首先需要了解各种编程语言的特点和优势,根据需求选择合适的编程语言。
系统分析与设计教案
系统分析与设计教案一、教案概述系统分析与设计是计算机科学与技术专业的一门核心课程,旨在培养学生的系统分析与设计能力,提升他们在软件开发过程中的技术水平和解决问题的能力。
本教案将介绍系统分析与设计课程的教学目标、教学内容、教学方法以及评价方式,以期为教师设计和实施课程提供指导。
二、教学目标1. 了解系统分析与设计的基本概念和原理;2. 掌握软件开发生命周期及其中的各个阶段;3. 学会运用问题定义、需求分析、系统建模等方法,进行系统分析与设计;4. 提升学生的协作与沟通能力,培养团队合作精神;5. 培养学生的自主学习和问题解决的能力。
三、教学内容1. 系统分析与设计概述1.1 系统分析与设计的定义和重要性1.2 软件开发生命周期2. 问题定义与需求分析2.1 需求获取和分析方法2.2 需求建模与规格说明3. 系统建模3.1 面向对象分析与设计3.2 UML建模语言及其应用4. 系统设计4.1 软件架构设计4.2 接口设计与数据设计5. 系统实现与测试5.1 编码实现与单元测试5.2 集成测试与系统测试6. 项目管理与团队协作6.1 项目计划与进度管理6.2 团队协作与沟通技巧四、教学方法1. 理论讲解:通过课堂讲授系统分析与设计的基本概念、原理和方法,帮助学生建立相关的知识框架;2. 实践操作:组织学生参与系统分析与设计案例的实践操作,锻炼其运用所学知识解决实际问题的能力;3. 小组讨论:鼓励学生分组进行案例分析、设计讨论,培养他们的团队合作和沟通能力;4. 案例分析:通过分析真实的软件开发案例,让学生掌握系统分析与设计的实际应用;5. 报告展示:要求学生完成相关的项目报告,并组织展示,以检验他们的学习成果。
五、评价方式1. 平时表现(占比30%):包括课堂参与、实践操作、小组讨论等,评估学生的主动性和合作能力;2. 项目报告(占比40%):要求学生完成一个实际的软件开发项目,并提交相应的报告和成果展示;3. 期末考试(占比30%):考察学生对系统分析与设计基本概念、原理和方法的掌握程度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12.2.3 提高健壮性
2. 检查参数的合法性 对公有方法,尤其应该着重检查其参数的合法性 ,因为用户在使用公有方法时可能违反参数的约束 条件。 3. 不要预先确定限制条件 在设计阶段,往往很难准确地预测出应用系统中 使用的数据结构的最大容量需求。因此不应该预先 设定限制条件。如果有必要和可能,则应该使用动 态内存分配机制,创建未预先设定限制条件的数据 结构。
图12.2 因子分解实现代码重用
12.2.1 提高可重用性
(3) 使用委托 父类的所有方法和属性应该都适用于子类。 但是使用继承应用适合于仅当确实存在一般-特 殊关系时(即子类确实是父类的一种特殊形式),使 用继承才是恰当的。 继承机制使用不当将造成程序难于理解、修改和 扩充。 当用继承作为实现操作共享的一种手段,并不打 算确保基类和派生类具有相同的行为。在这种情况 下,可以利用委托机制即把一类对象作为另一类 对象的属性,从而在两类对象间建立组合关系,也 可以达到同样目的(例如:学生-指导教师)。
12.1.2 面向对象语言的技术特点
1. 支持类与对象概念的机制 2. 实现整体-部分(即聚集)结构的机制 3. 实现一般-特殊(即泛化)结构的机制 4. 实现属性和服务的机制 5. 类型检查 6. 类库 7. 效率 8. 持久保存对象 9. 参数化类 10.开发环境
12.1.3 选择面向对象语言
12.2.1 提高可重用性
2. 减小方法的规模 应该减小方法的规模,如果某个方法规模过大( 代码长度超过一页纸可能就太大了),则应该把它分 解成几个更小的方法。 3.Байду номын сангаас保持方法的一致性 保持方法的一致性,有助于实现代码重用。 一般说来,功能相似的方法应该有一致的名字、 参数特征(包括参数个数、类型和次序)、返回值类 型、使用条件及出错条件等。
(2)基于使用的测试(use based testing) 首先测试独立类(不需要其它类提供服务,即不 使用服务器的类),再测试使用独立类的下一个层 次的类(称为依赖类)。 对依赖类的测试一个层次一个层次地持续进行下 去,直至把整个软件系统构造完为止。 集群测试(cluster testing)是面向对象软件集 成测试的一个步骤。在这个测试步骤中,用精心设 计的测试用例检查一群相互协作的类(通过研究对 象模型可以确定协作类),力图发现协作错误。
12.2.3 提高健壮性
在编写实现方法的代码时,通常需要在健壮性与 效率之间做出适当的折衷。 必须认识到,对于任何一个实用软件来说,健壮 性都是不可忽略的质量指标。为提高健壮性应该遵 守以下几条准则。 1. 预防用户的操作错误 软件系统必须具有处理用户操作错误的能力。当 用户在输入数据时发生错误,都必须进行检查,即 使发现了非常严重的错误,也应该给出恰当的提示 信息,并准备再次接收用户的输入。
12.3.2 面向对象的集成测试
面向对象软件的集成测试主要有下述两种不同 的策略。 (1)基于线程的测试(thread based testing) 这种策略把响应系统的一个输入或一个事件所 需要的那些类集成起来。分别集成并测试每个线 程,同时应用回归测试以保证没有产生副作用。
12.3.2 面向对象的集成测试
12.4 设计测试用例
目前,面向对象软件的测试用例的设计方法, 还处于研究、发展阶段。 与传统软件测试不同,面向对象测试关注于设 计适当的操作序列以检查类的状态。
12.4.1 测试类的方法
面向对象的软件来说,小型测试着重测试单个类 和类中封装的方法。 测试单个类的方法主要有随机测试、划分测试和 基于故障的测试等3种。 1. 随机测试 以银行应用系统的例子。 该系统的account(账户)类有下列操作: open(打开),setup(建立),deposit(存款), withdraw(取款),balance(余额),summarize(清 单),creditLimit(透支限额)和close(关闭)。
12.2.2 提高可扩充性
4. 精心确定公有方法 公有方法是向公众公布的接口,对这类方法的修 改往往会涉及许多其他类,因此,修改公有方法的 代价通常都比较高。 为提高可修改性,降低维护成本,必须精心选择 和定义公有方法。 私有方法是仅在类内使用的方法,通常利用私有 方法来实现公有方法。删除、增加或修改私有方法 所涉及的面要窄得多,因此代价也比较低。
12.2.1 提高可重用性
5. 全面覆盖 如果输入条件的各种组合都可能出现,则应该针 对所有组合写出方法,而不能仅仅针对当前用到的 组合情况写方法。 此外,一个方法不应该只能处理正常值,对空值 、极限值及界外值等异常情况也应该能够作出有意 义的响应。
12.2.1 提高可重用性
6. 尽量不使用全局信息 应该尽量降低方法与外界的耦合程度,不使用全局 信息是降低耦合度的一项主要措施。 7. 利用继承机制 在面向对象程序中,使用继承机制是实现共享和提 高重用程度的主要途径。
第12章 面向对象实现
12.1 程序设计语言
12.2 程序设计风格
12.3 测试策略
12.4 设计测试用例
12.1 程序设计语言
12.1.1 面向对象语言的优点
面向对象设计的结果既可以用面向对象语言、 也可以用非面向对象语言实现。 使用面向对象语言时,由于语言本身充分支持 面向对象概念的实现,因此,编译程序可以自动 把面向对象概念映射到目标程序中。 非面向对象语言编写面向对象程序比较麻烦, 不再讨论。
12.2.1 提高可重用性
面向对象方法的一个主要目标就是提高软件的可 重用性。 软件重用有多个层次,在编码阶段主要涉及代码 重用问题。
12.2.1 提高可重用性
一般说来,代码重用有两种: 一种是本项目内的 代码重用,另一种是新项目重用旧项目的代码。 内部重用主要是找出设计中相同或相似的部分, 然后利用继承机制共享它们。 为做到外部重用,则必须有长远眼光,需要反复 考虑精心设计。 两类重用的程序设计准则是相同的: 1. 提高方法的内聚 一个方法(即服务)应该只完成单个功能。
第12章 面向对象实现
面向对象实现主要包括两项工作: 将设计结果翻译成用面向对象程序; 测试并调试面向对象的程序。 面向对象程序的质量由面向对象设计的质量决 定,但的程序语言的特点和程序设计风格也将对 程序的可靠性、可重用性及可维护性产生深远影 响。 面向对象测试的目标,也是用尽可能低的测试 成本发现尽可能多的软件错误。 但是,面向对象程序中特有的封装、继承和多 态等机制,也给面向对象测试带来一些新特点, 增加了测试和调试的难度。
12.3.3 面向对象的确认测试
在确认测试或系统测试层次,不再考虑类之间 相互连接的细节,集中检查用户可见的动作和用 户可识别的输出。 为了导出确认测试用例,测试人员应该认真研 究动态模型和描述系统行为的脚本,以确定最可 能发现用户交互需求错误的情景。 传统的黑盒测试方法也可用,但对于面向对象 的软件来说,主要还是根据动态模型和描述系统 行为的脚本来设计确认测试用例。
12.1.3 选择面向对象语言
4. 其他因素 其他因素还有: 对用户学习面向对象技术所能提供的培训服务; 在使用某面向对象语言期间能提供的技术支持; 能提供给开发人员使用的开发工具、开发平台、 发行平台; 对机器性能和内存的需求; 集成已有软件的容易程度等。
12.2 程序设计风格
良好的程序设计风格是程序质量重要保证,且有 助于在新项目中重用已有的程序代码。 良好的面向对象程序设计风格,既包括传统的程 序设计风格准则,也包括为适应面向对象方法所特 有的概念(例继承性等)而必须遵循的一些新准则。
(1) 调用子过程
最简单的做法是把公共的代码分离出来,构成一个 被其他方法调用的公用方法。可以在基类中定义这个公 用方法,供派生类中的方法调用,如图12.1所示。
图12.1 通过调用公用方法实现代码重用
(2) 分解因子
提高相似类代码可重用性:是从不 同类的相似方法中分解出不同的“因 子”(即不同的代码),把余下的代码作 为公用方法中的公共代码,把分解出 的因子作为名字相同算法不同的方法, 放在不同类中定义,并被这个公用方 法调用
12.1.3 选择面向对象语言
2. 可重用性 采用面向对象方法开发软件的基本目的和主要 优点,是通过重用提高软件生产率。因此,应该 优先选用能够最完整、最准确地表达问题域语义 的面向对象语言。 3. 类库和开发环境 语言、开发环境和类库这3个因素综合起来,共 同决定了可重用性。 有价值的类是软件开发提高效率、降低成本、 提高可靠性的的保障。 随着类库的日益成熟和丰富,在开发新应用系 统时,需要开发人员自己编写的代码将越来越少。
12.2.3 提高健壮性
4. 先测试后优化 效率与健壮性需要合理的折衷,优化是提高效率 的手段,优化之先应测试程序的性能。 测试的目的:合理地确定为提高性能应该着重优 化的关键部分。 如果实现某个操作的算法有许多种,则应该综合 考虑内存需求、速度及实现的简易程度等因素,经 合理折衷选定适当的算法。
12.1.1 面向对象语言的优点
1. 一致的表示方法 面向对象开发基于不随时间变化的、一致的表 示方法。从问题域到OOA、从OOA到OOD、从OOD到 面向对象编程(OOP),表示方法始终稳定不变。 2. 可重用性 商业利益需要在更广泛的范围中运用重用机制, 由于面向对象特点,我们既可重用它在某个问 题域内的OOA结果,也可能重用OOD和OOP结果。 3. 可维护性 保持文档与源程序一致是重要的,尤其对维护 阶段而言,否则将可能面对的是只有源程序本身。