软件工程 第八章 面向对象的设计方法
面向对象程序设计课程教学大纲
《面向对象程序设计》课程教学大纲
课程编号:适用专业:软件工程
学时数:48(24+24) 学分数:3 开课学期:第2 学期
先修课程:C语言
执笔者:白忠建编写日期:2010-1-15 审核人(教学副院长):傅彦
一、课程性质和目标
授课对象:本科1年级
课程类别:学科基础课
教学目标:软件工程专业除了强调计算思维、算法设计与分析能力等能力以外,还强调程序设计与实践能力,因此编程动手能力是衡量软件工程专业本科生专业技能的标准之一。《面向对象程序设计》是软件工程本科生的一门专业选修课,是在程序设计基础( C 语言)后的一门重要的后续课程,它是为学生掌握当前最基本的面向对象程序设计方法而设置的。面向对象程序设计对降低软件的复杂性,改善其重用性和可维护性,提高软件的生产率,有着十分重要的意义。通过本课程的学习,除了使学生掌握C++基本语法规则,能够使用C++进行程序设计以外,更重要的是使学生理解面向对象的三个核心概念(即数据封装、继承、多态),使学生理解面向对象程序设计思想,培养学生的面向对象软件分析和设计能力,为学生毕业后从事本专业范围内各项软件开发工作奠定坚实的实践基础。
二、课程内容安排和要求
(一)教学内容、要求及教学方法
第1章C++编程简介(0.5 学时)
1)基本内容
C++的发展过程;结构化程序设计和面向对象程序设计的区别;简单介绍面向对象程序设计的三大特点:封装、继承和多态;结合集成开发工具Visual C++ 6.0简要说明C++程序的基本开发流程;基本的I/O操作(cin、cout的基本使用方式)。
软件工程 面向对象的分析设计方法
实验三:面向对象的分析设计方法
一、实验目的:学习用Rose或Together等工具绘制UML图,通过实际绘制UML图加深理解UML,了解利用UML进行面向对象的分析、建模和面向对象系统设计的方法。
二、实验内容:利用Rose绘制给定的用例图、包图、活动图、序列图、协作图、类图。
三、实验方法和步骤:
(一)Rose绘图环境的使用
(二)人事档案管理系统的面向对象分析
首先明确问题域和系统责任,目标系统的主要功能是:人事信息的变动管理(增、删、查、改、打),人事信息查询检索、分类汇总、统计报表,用户管理、登录,下属部门数据的维护、数据备份与恢复。根据系统的这些总体信息,可以确定系统的参与者(角色)和用例。
(1)确定系统的参与者
该系统的参与者(系统用户)是进行日常人事档案信息管理的操作员和进行基础数据维护与数据备份(恢复)的管理员。
(2)确定系统用例
可将系统分为如下用例:人事档案信息管理用例、系统账户管理用例、部门数据维护用例、系统维护用例。
①人事档案信息管理用例:该用例的参与者是一般的操作员,需要经过系统登录后才能正式进入系统,完成人事档案信息的变动管理、分类汇总统计、报表打印等功能。
②系统账户管理用例:完成系统用户的增、删、查、改、打功能。
③部门数据维护用例:完成部门信息的增、删、查、改、打功能。
④系统维护用例:完成系统数据的备份和恢复功能。
(3)识别系统中的类
可从类的表现形式或分类来识别类,类的表现形式有:外部实体、事物、事件、角色、组织单元、场地、结构。类又分为实体类、边界类和控制类。
①参与者相关的类。
软件工程 第三部分 软件设计与建模--面向对象设计
4/71
什么是面向对象设计(OOD)?
(二)现今(90年代后)的OOD • 面向对象的设计(OOD)就是在OOA模型的基础上运 用面向对象方法进行系统设计,目标是产生一个符合具 体实现条件的OOD模型。
OOD的特点: • 1、以面向对象的分析为基础,一般不依赖结构化分析。 • 2、与相应的OOA方法共同构成一种OOA&D方法体系。 OOA和OOD采用一致的概念和原则,但属于软件生命 周期的不同阶段,有不同的目标及策略。 • 3、较全面地体现面向对象方法的概念与原则。 • 4、大多数方法独立于编程语言,通过OOA&D所得到 的系统模型可以由不同的编程语言实现。
(2) 块状组织 把系统垂直地分解成若干个相对独立的、弱耦 合的子系统/块,每块提供一种类型的服务。
采用层次与块状的混合结构
3. 设计(分布式)系统的拓扑结构 由子系统组成完整的系统时,典型的拓扑结构 有管道形、树形、星形等。设计者应该采用与问题 结构相适应的、尽可能简单的拓扑结构,以减少子 系统之间的交互数量。
软件工程
第8章 面向对象设计
什么是面向对象设计(OOD)?
• 概而言之,面向对象设计(OOD)就是运用面向对象 方法进行系统设计;但是不同的历史时期有不同的内容 和特点。 (一)早期的OOD(八十年代至九十年代初) (二)现今(90年代至今)的OOD
2/71
管理信息系统第八章 面向对象开发方法与UML建模
顺序图
顺序图(Sequence Diagram)用于显示对象 间的交互活动。与协作图相比,顺序图更关注对 象之间消息传送的时间顺序。
协作图
协作图(Collaboration Diagram)表示一组对象间的 关系以及交互活动。顺序图和协作图均表示一组对象之 间的动态协作关系,其中顺序图反映对象之间发送消息 的时间顺序,协作图反映收发消息的对象的关系,这两 者通称为交互图。顺序图和协作图是同构的,即两者之 间可以相互转换。
构件图
构件图(Component Diagram)系统实现的 源代码、二进制码、执行码可以按照模块化的思 想,用构件分别组织起来,明确系统各部分的功 能职责和软件结构。构件图描述系统的软件结构。
部署图
部署图(Deployment Diagram)描述系统所需的硬件 构件的物理部署。部署图表示系统运行时的处理节点以 及节点中构件的配置,即表示系统的硬件设备及架构。
面向对象分析方法 面向对象设计方法 面向对象编程方法
结构化分析方法 结构化设计方法 结构化编程方法
结构化方法VS面向对象方法
结构化分析 面向数据流的分析方法 结构化设计 将数据流程图转换为模块结构图 根据E-R图及数据字典设计数据库 系统功能的实现靠模块之间的调用实现
结构化方法VS面向对象方法
面向对象开发方法的基本思想
现实世界是由各种各样的实体(事物、对象)所组成的, 每种对象都有自己的内部状态和运动规律,不同对象间 的相互联系和相互作用就构成了各种不同的系统,并进 而构成整个客观世界。同时,人们为了更好地认识客观 世界,把具有相似内部状态和运动规律的实体(事物、 对象)综合在一起称为类。类是具有相似内部状态和运 动规律的实体的抽象,进而人们抽象的认为客观世界是 由不同类的事物间相互联系和相互作用所构成的一个整 体。
软件工程面向对象
面向对象软件工程
面向对象方法学的提出
•结构化软件工程方法学
•面向过程、以算法为核心、把数据和过程作为相对独立的部分
•对早期只重视编程、不重视用户需求和开发过程,只重视代码、不重视文档来说,是一个巨大的进步
•给软件产业带来了巨大的进步,部分缓解了软件危机
•在许多中小型软件项目中获得了很大的成功
•但是,它存在着明显的缺点
•当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功
面向对象方法学概述
•面向对象方法学的出发点和原则
•尽可能模仿人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程
•面向对象方法的特点
•与人类习惯的思维方法一致:按照人们习惯的思维方式建立模型,模拟客观世界•稳定性好:实体是相对稳定的,以对象为中心构建的软件系统必然是相对稳定的•可重用性好:对象类提供了比较理想的模块化机制和可重用机制
•易于开发大型软件:把大型产品看作一系列本质上相互独立的小产品来处理•可维护性好:容易理解、容易修改、易于测试
四个要点:对象+类+继承+通信
•面向对象软件是由对象组成
•软件中的任何元素都是对象
•对象是把静态属性的数据和动态属性的操作封装在一起而形成的统一体
•复杂对象由简单对象组成
•把所有对象都划分成若干类
•每个类都定义了一组数据和方法(即施加于对象的操作);
•按照子类与父类的关系,把若干个对象类组成一个层次结构的系统(即继承);
•对象彼此之间仅能通过传递消息相互联系(对象的私有信息都被封装在对象类中)。
Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信
软件工程面向对象的分析与设计
设计数据库:根据系统的数 据需求,设计出合适的数据 库结构。数据库应该能够有 效地存储和管理系统的数据
设计系统架构:根据系统的 功能需求和性能要求,设计 出合适的系统架构。系统架 构应该能够支持系统的可扩 展性、可维护性和可重用性
面向对象的设计
通过面向对象的设计,我们可 以设计出结构清晰、易于理解 和实现的软件系统,从而提高
老师表示感谢!
恳请各位老师批评指正!
面Biblioteka Baidu对象的分析
识别对象
首先,我们需要识别出问题域中的所有对象。这些对象可以是物理实体,如 人、设备、物品等,也可以是抽象概念,如事件、状态、操作等
定义属性
每个对象都有一些属性,用来描述其特征或状态。例如,一个 "人"对象可能有"姓名"、"年龄"、"性别"等属性
定义行为
对象的行为描述了它所能执行的操作或方法。例如,"人"对象 可能有"行走"、"说话"、"吃饭"等行为
定义类的属性和行为:为每个类定义适当的属性和行为。这些属性和行为应该能够准 确地描述类的特征和行为
面向对象的设计
定义类的关系:确定类与类 之间的关系,如关联、继承、 聚合等。这些关系应该能够 准确地描述类之间的交互和
软件工程08(面向对象方法学)
扩展与使用之间的异同: 这两种关系都
意味着从几个用例中抽取那些公共的行为 并放入一个单独的用例中,而这个用例被 其他用例使用或扩展,
但是,使用和扩展的目的是不同的。通常
在描述一般行为的变化时采用扩展关系; 在两个或多个用例中出现重复描述又想避 免这种重复时,可以采用使用关系。
上海大学计算机学院 25/248
用例描述 另参考《用例规约描述
TMP-UCD(chen).doc》
一个简略方式的用例
上海大学计算机学院
26/248
用例对OOA的意义
可以为用户需求提供规范而准确的描述;
用例集中体现了系统责任;
用例对建立顺序图具有重要的参考意义。
上海大学计算机学院
上海大学计算机学院 17/248
三种模型之间的关系
(4) 数据流图中的数据存储,以及数据的源
点/终点,通常是对象模型中的对象。 (5) 数据流图中的数据流,往往是对象模型 中对象的属性值,也可能是整个对象。 (6) 用例图中的行为者,可能是对象模型中 的对象。 (7) 功能模型中的处理(或用例)可能产生 动态模型中的事件。 (8) 对象模型描述了数据流图中的数据流、 数据存储以及数据源点/终点的结构。
12/248
上海大学计算机学院
从动态角度或对象的实现机制来看,对象
软件工程第八章
8.1.2、软件测试的特点和原则
软件测试本身要求用最少的时间和人力找出软件中潜 在的各种错误和缺陷 根据软件测试这样的特点和测试目的,软件测试应该 遵循以下原则: (1) 应当把“尽早地和不断地进行软件测试”作为软 件开发者的信条 (2) 为了达到测试更有效,应该由第三方来构造测试 (3) 测试用例应当包括测试输入数据和对应的预期输 出结果两部分
8.2.2、黑盒法测试
黑盒法测试又称为功能测试或行为测试,它注重于测试软 件的功能性需求,而不是内部结构。在黑盒测试中,测试 人员对于测试对象的内部结构、运作情况可以不清楚,主 要是验证其和规格的一致性。黑盒测试不是白盒测试的替 代品,而是用于辅助白盒测试发现其他类型的错误。
8.2.2、黑盒法测试
8.1.4、静态分析与动态测试
1、静态分析 程序的静态分析不要求在计算机上实际执行所测试的 程序,而是以一些人工的模拟技术和一些类似动态测 试所使用的方法对程序进行分析和测试,它的对象是 源程序,它扫描源程序的正文,并且纠正软件系统在 描述、表示和规格上的错误。
8.1.4、静态分析与动态测试
8.1.2、软件测试的特点和原则
软件测试应该遵循的原则: (4) 测试用例的设计应该既包括合理的输入条件也包 括不合理的输入条件 (5) 注意测试中的群集现象 (6) 测试必须有计划、有控制、并且提供资源和时间, 要严格执行 (7) 穷尽测试是不可能的 (8) 在整个测试过程中,应当对每一步、每一个部分 的测试结果做全面检查和记录,而且要保存所有相关 数据
面向对象方法学
面向对象的系统分析
运用面向对象方法,对问题域和系统任务进行 分析和理解; 对其中的事物和它们之间的关系产生正确的认 识; 找出描述问题域和系统任务所需的类和对象; 定义类和对象的属性和行为,以及它们之间的 结构关系(包括静态和动态两个方面,类是静 态的,对象是动态的)
OOA的主要步骤
标识对象; 标识结构; 定义主题; 定义属性; 定义服务; 例子:学生成绩管理系统
3.
按照子类(或称为派生类)与父类(或称为 基类)的关系,把若干个对象类组成一个层 次结构的系统(也称为类等级).
派生类具有基类的特性(包括数据和方法),但 是派生类又有某些基类没有的特性. 这种现象称为继承(Inheritance).
面向对象方法的四个要点
4.
对象彼此之间仅能通过传递消息互相联系.
解空间
计算机中的实体称为解空间的对象,显然,解空间的 对象取决于所使用的程序设计语言.
例如,汇编语言提供的对象是存储单元;面向过程的高级语 言提供的对象,是各种预定义类型的变量,数组,记录和文 件等.
这些解空间对象实质上仅仅是描述实体属性的数据, 必须在程序中从外部对它施加操作,才能模拟它的行 为.
面向对象方法的主要优点
与人类习惯的思维方法一致
面向过程的设计方法:
这种方法以算法为核心,把数据和过程作为相互独立的部 分.
面向对象的设计方法:
软件工程》教学大纲
软件工程》教学大纲
软件工程》是计算机科学与技术专业中一门综合性和实践性很强的核心课程,主要内容包括软件生存周期模型、可行性分析、需求分析、概要设计、详细设计、面向对象分析与设计、编码、软件质量与质量保证、项目计划与管理。该课程的开设旨在使学生通过研究,掌握软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地研究和今后从事软件工程的实践打下良好的基础。
研究本课程要求先修《数据结构》、《面向对象程序设计》、《数据库原理及应用》、《操作系统》等课程。本课程的教学要求在每一章教学内容之后给出,大体上分为三个层次:了解、理解和掌握。了解即能正确判别有关概念和方法;理解是能正确表达有关概念和方法的含义;掌握是在理解的基础上加以灵活应用。
本课程的理论教学内容包括概论、可行性分析和需求分析。在概论中,学生需要掌握软件和软件工程的基本概念,并了解软件生命周期及软件开发的各个模型。在可行性分析中,学生
需要了解可行性分析的步骤。在需求分析中,学生需要掌握需求分析的任务与步骤,并了解需求分析的原则和方法。
本课程的教学要求重点在于系统分析、系统设计、系统实现和系统维护。其中,需求分析和软件测试是较为难点的内容。学生需要能够用软件工程的方法参与软件项目的分析、设计、实现和维护。
总之,《软件工程》是一门重要的计算机科学与技术专业必修课程,通过研究本课程,学生可以掌握软件项目开发和维护的一般过程,为今后从事软件工程的实践打下良好的基础。
4.概要设计
本章将介绍软件设计的概要阶段。首先,我们将了解概要设计的任务和步骤,以及软件设计的概念和原则,如模块化、抽象、信息隐藏和局部化、模块独立性以及结构设计的评价原则。然后,我们将介绍两种面向不同设计方法:面向数据流的设计方法和面向数据结构的设计方法。最后,我们将介绍概要设计文档和评审。
软件工程 8
而且应该为高级用户提供简捷的操作方法。
8.4 任务管理子系统设计
•
•
软件系统是完成系统任务的一个逻辑实体。在软件系统所完成的任务中,有些
任务是顺序完成的,而有些任务必须以并发交替的方式完成。 用传统方法设计的软件系统,其任务的执行方式多是顺序的。因此其任务管理 的功能可以很简单。而在面向对象的软件系统中,一个任务的完成可能需要多 个对象以并发交互的方式协同配合。这个并发任务的执行过程可以通过分析阶 段的动态模型来识别和确认。
系统数据存储设计。主要确定系统中各个数据对象的存储和访问方式,
包括数据结构、文件、数据库等。这项设计依赖于所采用的数据支持系统, 如:文件系统、数据库管理系统等。
系统资源访问设计。主要确定系统中需要使用的各种类型的资源以及实现
这些资源的访问和控制机制、安全性机制的设计。 网络与分布设计。在网络环境下运行一个面向对象系统,还应考虑网络流 量、分布式计算单元的计算能力和系统的总体效率的综合平衡设计。这对于 系统总体效能的发挥有重要作用。
类的结构应尽量简明,层次深度应适当
• 定义类的结构,不要太过复杂。一是结构层次的分解应当有度;二是 类的属性不要太多。属性过多通常表明这个类过于复杂,它所承担的系 统责任可能更多,应当分解它;三是分配给每个类完成的任务也应该简 单,并尽量简化对象之间的合作关系,如果完成一项任务需要太多的对 象协同配合,可能会破坏类的简明性和清晰性;四是类中提供的服务应 当少而精。 •在大型软件系统开发中,类的大小和数量二者会呈现翘翘板现象,这同 样会带来一定的复杂性。解决这个问题的办法,是把系统中的类按逻辑 分组,也就是划分“主题”。
面向软件工程对象方法学
面向对象方法学的未来发展
随着软件工程技术的不断发展,面向对象方法学将继续发挥重要作用,不 断完善和发展。
未来,面向对象方法学将更加注重软件开发生命周期的各个阶段,包括需 求分析、设计、编程、测试和维护等,以提高软件的质量和可靠性。
此外,随着云计算、大数据和人工智能等技术的不断发展,面向对象方法 学将与这些技术相结合,以更好地满足软件开发的实际需求。
03
跨平台开发
面向对象的方法学可以帮助开发者编写可重用的代码,提高跨平台开发
的效率和代码复用性。
企业级应用开发
模块化开发
面向对象方法学可以帮助企业级应用开发者实现模块化的开发方式,将应 用程序划分为不同的对象和组件,提高代码的可维护性和可扩展性。
业务逻辑封装
通过将业务逻辑封装为对象,可以提高代码的可读性和可 维护性,同时便于测试和调试。
继承
总结词
继承是从已有的类派生出新的类,新类继承 了父类的属性和行为,并可以添加或覆盖父 类的特性。
详细描述
继承是面向对象方法学中的一种机制,允许 从已有的类派生出新的类。新类继承了父类 的属性和行为,可以在父类的基础上添加新 的特性或覆盖父类的已有特性。这有助于构 建层次化的类结构,提高代码的可重用性和 可维护性。
开发人员之间的沟通
面向对象方法学使用类、对象、继承、多态 等概念,使得开发人员之间的沟通更加方便 ,提高了开发效率。
软件工程 面向对象的技术
系统内部
保险单 填写界面
保险单
客户
数据库界面 (abstract)
Oracle 界面 Sybasec界面
子系统的分解是关键,可以有分层和分块:
分层:将软件系统组织为层次结构,每层是一个子系 统。分层结构又分为封闭式和开放式。
4. 具有良好的可重用性
由于对象所具有的封装性和信息隐蔽,具有很强的 独立性。
4.1.2 面向对象的基本概念
理解面向对象的基本概念对于学习和掌握面向对 象的开发方法是十分重要的。
对象(Object)
类(Class) 继承(Inheritance) 消息(Information) 多态性(Polymorphism)
面向对象的技术已成为软件开发的一种新方法,新 技术。
4.1.1 什么是面向对象的开发方法
OOSD (Object-Oriented Software Development) 法是一种 把面向对象的思想应用于软件开发过程, 指导开发活动的系统方法。
问题空间—软件系统所涉及到的应用领域和业务范 围(现实世界)。
例如: “绘图”操作,作用在“椭圆” 和“矩 形” 上,画出不同的图形。
动态绑定(dynamic binding)是在运行时根据对象 接收的消息动态地确定要连接的服务代码。
软件工程+孙家广主编+刘强编著+配套习题答案8
第8章面向对象设计(习题与参考答案)
[选择题]
1. ()面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境
下的设计模型。(A)
A. 真
B. 假
2. ()系统设计的主要任务是细化分析模型,最终形成系统的设计模型。(B)
A. 真
B. 假
3. ()关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对
应到关系数据库中的表。(B)
A. 真
B. 假
4. ()用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界
面可能导致用户拒绝使用该系统。(A)
A. 真
B. 假
5. 内聚表示一个模块()的程度,耦合表示一个模块()的程度。
(B,D)
A. 可以被更加细化
B. 仅关注在一件事情上
C. 能够适时地完成其功能
D. 联接其他模块和外部世界
6. 良好设计的特征是()。(E)
A. 模块之间呈现高耦合
B. 实现分析模型中的所有需求
C. 包括所有组件的测试用例
D. 提供软件的完整描述
E. 选项B和D
F. 选项B、C和D
7. ()是选择合适的解决方案策略,并将系统划分成若干子系统,从而建立整个系
统的体系结构;( )细化原有的分析对象,确定一些新的对象、对每一个子系统接口和类进行准确详细的说明。(A ,B ) A. 系统设计 B. 对象设计 C. 数据库设计 D.
用户界面设计
8.
下面的( )界面设计原则不允许用户保持对计算机交互的控制。(D ) A. 允许交互中断 B. 允许交互操作取消
C. 对临时用户隐藏技术内部信息
D.
只提供一种规定的方法完成任务
[练习题]
1. 面向对象设计与面向对象分析的区别是什么?设计包括哪些活动? 答案要点:
面向对象软件工程方法
面向对象软件工程方法
面向对象软件工程(Object-Oriented Software Engineering,简称OOSE)是一种软件开发方法论,强调使用面向对象的思想和技术来进行软件系统的分析、设计和实现。以下是面向对象软件工程的一些常见方法:
1. 需求分析:面向对象软件工程方法始于需求分析阶段。在这个阶段,开发团队与用户合作,通过讨论和交流来理解系统的需求和功能。常用的需求分析方法包括用例建模、活动图、领域建模等。
2. 面向对象设计:面向对象设计是软件系统的设计阶段,目标是将需求转化为可执行的设计方案。在这个阶段,开发团队将系统划分为一组相互关联的对象,并定义它们的属性、行为和关系。常用的设计方法包括类图、时序图、状态图等。
3. 继承与多态:继承和多态是面向对象编程的核心概念。通过继承,可以创建新的类并从现有类中继承属性和行为。多态允许不同类型的对象对相同的消息做出不同的响应。
4. 设计模式:设计模式是面向对象软件工程中常用的解决方案。设计模式提供了一套经过验证的设计思路和模板,用于解决常见的设计问题。常见的设计模式包括单例模式、工厂模式、观察者模式等。
5. 实现和测试:在面向对象软件工程中,实现阶段是将设计转化为可执行代码的过程。开发团队使用面向对象编程语言(如
Java、C++)来实现定义的类和对象,并进行单元测试、集成测试和系统测试来验证代码的正确性和可靠性。
6. 迭代和增量开发:面向对象软件工程方法支持迭代和增量开发的方式。开发团队可以通过多个迭代来逐步完善和扩展系统,每个迭代都可以交付一个可用的部分系统。
软件工程 软件设计方法(一)
软件工程软件设计方法(一)引言概述:
软件设计方法是软件工程中的一个重要环节,它涉及到软件系统的整体结构设计、模块划分、算法选择等内容。本文将介绍五种常用的软件设计方法,包括结构化设计、面向对象设计、面向服务设计、领域驱动设计和反应式设计。
正文内容:
1. 结构化设计方法
a. 分层设计:将软件系统划分为不同层次,每个层次有明确的功能和职责。
b. 模块化设计:将软件系统划分为多个独立的模块,并规定它们之间的接口和依赖关系。
c. 自顶向下设计:从整体系统开始,逐步细化设计,直到最底层模块。
2. 面向对象设计方法
a. 类与对象设计:将问题领域中的实体和行为抽象为类和对象,通过定义它们的属性和方法来描述系统。
b. 继承与多态:利用继承和多态特性来复用代码和增强系统的灵活性。
c. 封装与信息隐藏:通过将数据和行为封装在类中,隐藏内部实现细节,提高系统的安全性和可维护性。
3. 面向服务设计方法
a. 服务识别:识别问题领域中的服务,并定义服务的接口和功能。
b. 服务组合:将不同的服务组合在一起,构建出完整的软件系统。
c. 服务管理:管理服务的生命周期,包括发布、部署、监控和维护。
4. 领域驱动设计方法
a. 领域建模:通过理解和分析问题域,抽象出核心业务概念,构建领域模型。
b. 截获和解决领域问题:通过与领域专家的紧密合作,识别并解决领域中的问题。
c. 持续迭代和验证:与领域专家和用户不断进行交流和改进,保持领域模型的准确性和实时性。
5. 反应式设计方法
a. 异步编程:利用事件驱动和回调机制来处理并发和高响应性的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章面向对象的设计方法
本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。为完成这一转换过程,设计人员必须处理以下任务:
(1)针对分析模型中的用例,设计实现方案。实现方案用UML交互图表示。
(2)设计技术支撑设施。在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。例如,数据的持久存储服务、安全控制服务和远程访问服务等。在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。
(3)设计用户界面。
(4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序
设计的基础和依据的详尽类图。
面向对象的软件设计过程如图8-1-1所示。
图8-1-1 面向对象的软件设计过程
第一节设计用例实现方案
UML 的交互图(顺序图、协作图)适于用例实现方案的表示。因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。该设计方法包含如下3个步骤:
(1)提取边界类、实体类和控制类;
(2)构造交互图;
(3)根据交互图精华类图。
一、顺序图
顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。顺序图中的对象一般以“对象
名:类名”的方式标识,但也可以仅采用缩写形式“对象名”或者“:类名”。对象的下方用垂直虚线表示对象的生命线,即对象在某段时间内存在。对象生命的终结用生命线下方的叉号“′”表示。附着在对象生命线上的矩形框表示对象在此段时间内活跃。对象间的通信表现为对象的生命线之间的消息传递。在消息边上需附加消息名和消息参数,有时也以顺序号强调消息的时序。消息的源对象和目标对象可以相同,这种消息称为自调用(self-call)。可以在消息名前面的方括号中书写条件表达式,表明仅当条件成立时,该消息才发送。还可以在方括号的前面或者直接在消息名的前面加上迭代标记“*”,以表示一条消息对同一类的多个对象的多次发送。顺序图的左边可带有描述信息,以阐明消息发送的时刻、动作执行情况、两条消息之间的时间间隔以及约束信息等。还可以在消息边上附加文字注解信息,以增强顺序图的可理解性。典型的顺序图如图8-1-2所示。
UML的消息有如下4种类型:
(1)简单消息(simple message)。以一种简单、抽象的函数表示对象之间的信息传递,不考虑通信过程的内部细节。简单消息在UML顺序图中用普通的有向箭头表示。
(2)同步消息(synchronus message)。消息源发出消息后,必须等待消息处理过程完毕并返回处理结果,才可继续执行后续操作。前面所述的自调用消息应该是同步的。同步消息的表示图元与简单消息相同,这表明UML在缺省状态下认为简单消息即为同步消息。
(3)异步消息(synchonous message)。消息源发出消息后,不必等待消息处理过程的返回,即可继续执行自己的后续操作。异步消息主要用于描述实时系统中的并发行为。异步消息在UML顺序图中用一种特别的单向箭头表示,见图8-1-2中的“msg1”。
图8-1-2 典型的顺序图
(4)返回消息(return message)。表示前面发送的消息的处理过程完成后的返回结果。返回消息应该是同步。在许多情况下,可以隐藏返回消息,但也可显式地标出返回消息以示强调。返回消息用虚线有向箭头表示,见图8-1-2中的“msg6”。
一个对象可以通过发送标准消息“new”来创建另一个对象。当一个对象被删除或自我删除时,该对象生命线上的相应时间点应该用叉号(对象生命线终结符)标识。
二、协作图
协作图用于描述相互合作的对象间的交互关系和链接关系。虽然顺序图和协作图都用来描述对象间的交互关系,但它们的侧重点不同。顺序图强调消息交互的时间序列,而协作图则强调交互对象间的静态链接关系。
从外观看,协作图并不采用单独的维度来表示时间的推移,因此,协作图中的对象可以在二维平面中自由占位。对象之间的链接用于表示消息传递的通道,消息标示于链接之上,消息的箭头指明消息的传递方向。协作图中,消息的描述内容包含名称、参数、返回值以及序列号是可选的。
虽然协作图不突出强调消息传递的时间序,但借助于序列号同样可以表达时间序:序列号较大的消息发生于较晚的时刻。消息序列号可以采用线性编号,但采用适当的多级编号会使消息之间的结构关系更清晰,例如,在图8-1-3中,“1.1msg2 ”是“对象1”为了处理“1.mag1 ”而发送的第二条消息,“1.1.1msg3”表明mag3“是对象2”为了处理“1.1 msg2”而发送的第一条消息,依此类推。
如果一个对象在消息的交互过程中创建,则可在对象名称之后标以{new}。类似地,如果一具对象在交互期间被删除,则可在对象名称之后标以{destroy}。
典型的协作图如图8-1-3所示,该协作图与图8-1-2等价。
图8-1-3 典型的协作图
三、提取边界类、实体类和控制类
边界类用于描述目标软件系统与外部环境之间的交互,并负责实现如下功能:
(1)界面控制。包括输入数据的格式及内容转换、输出结果的呈现以及软件运行过程中界面的变化与切换等。
(2)外部接口。实现目标软件系统与外部系统或外部设备之间的信息交流和互操作。主要关注跨越目标软件系统边界的通信协议。
(3)环境隔离。将目标软件系统与操作系统、数据库管理系统、应用服务器中间等环境软件进行交互的功能与特性封装于边界类之中,使目标软件系统的其余部分尽可能的独立于环境软件。